2026/01/28(水)Mach XO2 #2

5. Configuration Process and Flow (cont’d)

5.10. Feature Row

MachXO2には、FPGAリソースを制御するために使用されるフィーチャー行が含まれています。例えば、フィーチャー行はMachXO2のSRAM構成メモリのロード方法を決定するために使用されます。他のFPGAでは、この操作は外部I/Oピンを使用して制御されます。フィーチャー行は、構成可能な機能の選択においてより高い柔軟性を提供し、デバイス上で利用可能なI/Oの数を増やし、ハードウェアの変更を不要にします。
フィーチャー・ロウは個別に消去またはプログラミングできます。フィーチャー・ロウが消去されると、その値はハードウェアのデフォルトモード状態に戻ります。フィーチャー・ロウは、ツール > フィーチャー・ロウ・エディタの「プログラミング・ファイル・ユーティリティ」を使用して変更できます。

Figure 5.4. Feature Row Example

フィーチャー・ロウのオプションとダイヤモンド・スプレッドシート・ビューの関係は、表5.3および表5.4に示されています。
A full list of the functions controlled by the Feature Row and their default values are shown in Table 5.4.

Table 5.4. MachXO2 Feature Row Elements
Feature SW Default

開発中にのみフィーチャー行を変更し、現場でのアップグレードは極力避けることを強く推奨します。この推奨事項の理由は、フィーチャー行が設定ポートの利用可能性を制御する役割を担っているためです。アクティブな設定ポートが利用不能になり、将来の更新が妨げられる可能性があります。
機能行を変更すると、MachXO2のコンフィギュレーションが妨げられる可能性があります。PROGRAMN、INITN、DONEの各制御/ステータスピンは機能行によって有効化/無効化されます。PROGRAMNを汎用入出力(GPIO)として再利用する際には注意が必要です:機能行の消去と再プログラミングを行うと、GPIOが一時的にPROGRAMN入力状態に復帰します。この場合、汎用I/Oがローレベルで駆動または保持されると、MachXO2は設定プロセスを完了できません。
SSPIインターフェースをGPIOとして復元する際にI2Cインターフェースを使用する場合も同様の注意が必要です。
フィーチャー列の消去と再プログラミングは、一時的にすべての設定インターフェースを再有効化します。ユーザー設計でSSPIチップセレクト(SN)をGPIOとして復元したが、SNが駆動またはローレベルに保持されている場合、SSPIインターフェースがI2Cインターフェースに対して優先権を主張し、プログラミングまたは設定プロセスを中断させ、プロセスの正常な完了を妨げます。
フィーチャー列はDiamond Programmerで消去または変更可能です。オフライン/オンラインを問わず、フラッシュ消去・プログラム・検証シーケンス中に消去および再プログラムされます。オフラインフラッシュプログラミング時、フィーチャー列の消去・再プログラムを回避したい場合は、XFLASH消去・プログラム・検証・リフレッシュ操作の使用を推奨します。
機能行の設定はDiamond Spreadsheet Viewを使用して変更できます。スプレッドシートビューではMachXO2の構成設定を編集し、設定をLattice Preference File(LPF)に保存できます。これらの設定はマップ、配置、配線構築フェーズ中にMachXO2構成データに適用されます。

5.11. Key Features

  • 現場での変更は想定されておらず、開発専用です。
  • 機能行設定の変更により、アクティブな構成ポートが利用できなくなる可能性があります。
  • Diamond Programmer または Diamond Spreadsheet View を使用して変更可能です。
  • フラッシュ更新時に消去され再プログラムされるため、機能行の内容は一貫性を保ってください。

5.12. Configuration Modes

MachXO2のコンフィギュレーションSRAMメモリには、FPGAが動作する前に有効なコンフィギュレーションデータをロードする必要があります。
MachXO2が提供するコンフィギュレーションデータをSRAMメモリに書き込む方法は4つだけです。これらの各方法にはそれぞれ固有の利点があります。利用可能な4つの方法は表5.5に示されています。

Table 5.5. Configuration Modes

MachXO2設計の大半において、主要なコンフィギュレーションモードはセルフダウンロードモードです。
このモードは、内部コンフィギュレーションクロックが外部メモリに適用可能な周波数よりも高く動作するため、
コンフィギュレーション速度に優れています。製品コストを増加させる追加のPROMを必要としません。
また、JTAGポートを使用してSRAMをロードするための外部プログラマに依存しません。
外部ダウンロードモードの利点は、全ユーザーフラッシュメモリ(UFM)を自由に使用できることです。
コンフィギュレーションフラッシュイメージがUFMにオーバーフローしたり、利用可能な内部フラッシュメモリを
オーバーフローしたりする心配がありません。
デュアルブートモードはMachXO2の信頼性向上に寄与します。内部フラッシュメモリイメージを最初にロードすることで、
初期コンフィギュレーションが失敗した場合でもFPGAは動作を継続できます。このような場合、フェイルセーフ構成データイメージをバックアップとしてMachXO2のSRAMにダウンロードできます。内部メモリの再プログラミング失敗の主な原因は通常、停電です。
JTAGポートの利点は、MachXO2システムのプログラミング、コンフィギュレーション、テストにおいて最も幅広い機能と特徴を提供することです。

5.13. sysCONFIG™ Ports

Table 5.6. MachXO2 Programming and Configuration Ports

5.14. sysCONFIG Pins

MachXO2は、FPGAのプログラミングおよび設定に使用するsysCONFIG I/Oピン群を提供します。sysCONFIGピンはグループ化され、JTAG、SSPI、I2C、MSPIなどのポートを形成します。これらのポートは、FPGAのプログラミング、設定、およびFPGA内部リソースへのアクセスを目的としてFPGAと相互作用するために使用されます。構成ポートグループ内のsysCONFIGピンは、アクティブ状態でFPGAのプログラミングに使用されるか、汎用I/Oとして再構成される可能性があります。構成ポートピンを汎用I/Oとして再利用するには、以下のガイドラインに従う必要があります:
  • 使用しないポートは無効化(DISABLE)する必要があります。これにはDiamond Spreadsheet Viewの[Global]設定タブで設定できます。各コンフィギュレーションポートはsysCONFIGオプションツリーにリストされます。
  • 外部ロジックがデバイスプログラミングに干渉しないようにする必要があります。MachXO2がFeature Row HW Default Mode状態にある際に、復元されたsysCONFIGピンがアサートされないことを確認してください。一例として、MachXO2がFeature Row HW Default Mode状態になった後にPROGRAMNをアクティブロー信号で駆動することが挙げられます。PROGRAMNを無効化した状態でフィーチャー列の再プログラミングに失敗すると、FPGAのコンフィギュレーションおよびユーザーモード移行が妨げられます。
  • JTAGENBを使用してJTAGポートを選択的に有効/無効化する際は注意が必要です。JTAG I/Oに接続された外部ロジックは、JTAGプログラミングポートと競合してはなりません。
表5.7は共有sysCONFIGピンのデフォルト状態を示します。ご覧の通り、デフォルトモードのフィーチャー列デバイスでは、JTAG、SPIスレーブ、I2Cポートが有効化されています。MachXO2がユーザーモードに移行すると、SSPIおよびI2C sysCONFIGピンのデフォルト状態は汎用I/Oとなります。これは、デフォルトのsysCONFIGポート設定を使用する場合、SSPIまたはI2Cを用いたMachXO2のプログラミング機能が失われることを意味します。ユーザーモードでSSPIまたはI2C sysCONFIGピンを維持するには、
Diamondスプレッドシートビューエディタで必ず有効化してください。
特に指定がない限り、sysCONFIGピンはVCCIO0電圧で駆動されます。
バンク0に接続する他のロジックをプロビジョニングする際は、
この点を考慮することが極めて重要です。
各sysCONFIGピンの機能については詳細に説明されています。

5.14.1. Self-Download Port Pins

PROGRAMN
PROGRAMNはFPGAを構成するための入力です。PROGRAMNピンは有効化されると、ハイからローへの遷移に敏感であり、内部に弱いプルアップを備えています。PROGRAMNがローアサートされると、FPGAはユーザーモードを終了し、前述のように初期化フェーズでデバイス構成シーケンスを開始します。PROGRAMNピンをローに保持すると、MachXO2が初期化フェーズを離れるのを防ぎます。PROGRAMNがFPGAに認識されるには、最小パルス幅アサート期間が必要です。この最小時間は、MachXO2ファミリーデータシート(FPGA-DS-02056)のACタイミングセクションに記載されています。
PROGRAMNピンがアクティブな際の以下の特記事項に注意してください:
  • デバイスがJTAG経由でプログラミング中の場合、JTAGモードプログラミングシーケンス完了までPROGRAMNは無視されます。
  • デバイス構成中にPROGRAMNピンをトグルすると、プロセスが中断され構成サイクルが再起動します。デバイス設定中はPROGRAMNピンを非アサート状態(High保持)にしてください。
  • 機能行ハードウェアデフォルトモード状態のデバイスでPROGRAMNをアサートすると、SSPIおよびI2Cポートが無効化されます。PROGRAMNを非アサート状態にしてからSSPIまたはI2Cプログラミング操作を開始してください。
  • PROGRAMNは、汎用I/Oとして予約されている場合でも、電源投入時にアクティブです。PROGRAMNに接続された入力信号が、VCC(min)からINITN立ち上がり時間を超える周波数でハイからローに遷移しないようにしてください。PROGRAMNのハイからローへの頻繁なアサートは、MachXO2の構成を妨げ、FPGAが継続的なRESET状態に留まる原因となります。図5.5を参照。
  • フィーチャー行が消去または再プログラムされる際は、GPIOとして復旧した場合でもPROGRAMNを必ずディアサートする必要があります。アサートされたままの場合、コンフィギュレーションが正常に完了しない可能性があります。
INITN

2026/01/28(水)MachXO2 Programming and Configuration User Guide

FPGA-TN-02155-4.8 January 2025

1. Introduction

MachXO2™はSRAMベースのプログラマブルロジックデバイスであり、内蔵フラッシュメモリを備えることでMachXO2を不揮発性デバイスとして機能させます。MachXO2はFPGAのプログラミングおよび設定のための豊富な機能セットを提供します。
ニーズに合ったプログラミングソリューションを構築するための多くの選択肢が用意されています。
利用可能な各オプションについて詳細に説明しているため、ご自身の要件を満たすプログラミングおよび設定ソリューションを組み立てることが可能です。

2. MachXO2 Features

Key programming and configuration features of MachXO2 devices are:
• Multiple programming and configuration interfaces:
  • 1149.1 JTAG
  • Self-download
  • Slave SPI
  • Master SPI
  • Dual Boot
  • I2C
  • WISHBONE bus

3. Definition of Terms

• BIT – BITファイルは、外部SPIフラッシュに保存されるMachXO2のコンフィギュレーションデータです。これはバイナリファイルであり、変更なしでSPIフラッシュに書き込まれます。
• コンフィギュレーション – コンフィギュレーションとは、MachXO2のSRAMメモリセルの状態変更を指します。
• コンフィギュレーションデータ – 不揮発性メモリから読み出され、FPGAのSRAMコンフィギュレーションメモリにロードされるデータです。ビットストリームまたはデバイスビットストリームとも呼ばれます。
• コンフィギュレーションモード – MachXO2が不揮発性メモリからコンフィギュレーションデータを取得する方法を定義します。
• 内部フラッシュメモリ – JEDファイルまたはBITファイルは内部フラッシュセクターに直接プログラム可能です。ユーザーは構成データの実際のページ開始位置を把握する必要はありません。MachXO2構成エンジンがフラッシュからSRAMへの転送時の解析処理を処理します。
• JEDEC – JEDECファイルには、MachXO2の構成フラッシュ、ユーザーフラッシュメモリ、機能行、機能ビットにプログラムされる構成データが含まれます。フォーマット情報は本技術ノート後述で提供されます。
• オフラインモード – オフラインモードは、不揮発性メモリのプログラミングとSRAM構成の両方に適用される用語です。オフラインモードプログラミング/構成を使用する場合、FPGAはユーザーモードで動作しなくなります。
不揮発性メモリまたはSRAM構成メモリの内容は更新されますが、MachXO2はオフラインモードのプログラミング/構成が完了するまでロジック演算を実行しません。
• ポート – ポートとは、プログラミングおよび一部の設定操作を実行するために使用される物理接続を指します。
MachXO2のポートには、JTAG、SPI、I2C、WISHBONE物理接続が含まれます。
• プログラミング:プログラミングとは、内部または外部の不揮発性構成メモリの内容を変更するプロセスを指します。
• 透過モード – 透過モードは、MachXO2をユーザーモードのまま維持しながら、構成フラッシュメモリとユーザーフラッシュメモリを更新するために使用されます。
• ユーザーモード – 構成が完了し、FPGAがプログラムされた論理機能を実行している状態をユーザーモードと呼びます。

4. Configuration Details

MachXO2デバイスには、SRAMとフラッシュメモリの2種類のメモリが搭載されています。SRAMメモリにはアクティブ構成データが格納されており、これは本質的にFPGAの動作を定義する「ヒューズ」に相当します。アクティブ構成データは、ほとんどの場合、不揮発性メモリから読み出されます。不揮発性メモリは、FPGAのSRAMにロードされる構成データを保持します。
MachXO2は、MachXO2のSRAMにロードされた構成データを保存する内蔵フラッシュメモリを提供します。

5. Configuration Process and Flow

Prior to becoming operational, the FPGA goes through a sequence of states, including initialization, configuration and
wake-up.

MachXO2のsysCONFIGポートは、FPGAのプログラミングおよび設定のための業界標準通信プロトコルを提供します。表5.1に示す各プロトコルは、MachXO2デバイスの内部フラッシュメモリへのアクセス、またはその設定SRAMへのロード手段を提供します。メモリ空間のアクセス可能性セクションでは、各sysCONFIGポートの機能に関する情報を提供します。
フラッシュメモリにアクセス可能なsysCONFIGポートには優先順位があります。表5.1は各sysCONFIGポートを優先順位順に列挙しています。MSPI設定ポートはフラッシュメモリ領域を変更する機能を持たないため、sysCONFIGポートの優先順位スキームには影響しません。優先順位体系を理解することは重要です。低優先度のsysCONFIGポートを使用した設定ロジック操作は、高優先度のsysCONFIGポートによって中断される可能性があるためです。低優先度のsysCONFIGポートが高優先度のsysCONFIGポートによって中断された場合、設定ロジックの動作は定義されません。sysCONFIGポートを使用した設定ロジックへの同時アクセスを許可しないでください。

5.1. Power-up Sequence

MachXO2が動作するためには、デバイスに電源を供給する必要があります。システムに印加される電圧が上昇する短い期間中、FPGAは不確定状態となります。
電源電圧が上昇し続けると、FPGA内部のパワーオンリセット(POR)回路が作動します。POR回路は作動後、外部I/Oピンが高インピーダンス状態にあることを保証します。またVCCおよびVCCIO0入力レールを監視します。POR回路は以下の条件を満たすまで待機します:
• VCC > 1.06 V(HCデバイスの場合は2.1 V)
• VCCIO0 > 1.06 V
これらの条件が満たされると、POR回路は内部リセットストローブを解放し、デバイスが初期化プロセスを開始できるようにします。MachXO2はINITNをアクティブローでアサートし、DONEをローに駆動します。INITNとDONEがローでアサートされると、デバイスは図5.1に示す初期化状態に移行します。

注記: 外部INITNおよびDONEは、有効化時のみ双方向オープンドレインI/Oとなります。

5.2. Initialization

MachXO2は、パワーオンリセット回路がINITNおよびDONEステータスピンをローレベルに駆動した直後にメモリ初期化フェーズに入ります。初期化状態の目的は、FPGA内部の全SRAMメモリをクリアすることです。FPGAは、以下の条件がすべて満たされるまで初期化状態を維持します:
  • tINITL時間期間が経過する
  • PROGRAMNピンがディアサートされる
  • INITNピンが外部マスターによってローアサートされなくなった
専用INITNピンは初期化フェーズ中に2つの機能を提供します。第一に、FPGAが現在コンフィギュレーションSRAMをクリア中であることを示すこと。第二に、初期化状態からコンフィギュレーション状態への遷移を防止する入力として機能することです。
tINITL時間期間中、FPGAはコンフィギュレーションSRAMをクリアします。MachXO2がデバイスチェーンの一部である場合、各デバイスは異なるtINTIL初期化時間を有します。最も遅いtINTILパラメータを持つFPGAは、チェーン内の他のデバイスがコンフィギュレーションを開始するのを妨げる可能性があります。マルチデバイスチェーンにおいてINITNを時期尚早に解放すると、1つ以上のチェーン接続デバイスが断続的にコンフィギュレーションに失敗する原因となる場合があります。
アクティブローのオープンドレイン初期化信号INITNは、初期化完了時に外部抵抗でハイレベルに引き上げる必要があります。複数FPGAのコンフィギュレーションを同期させるには、1つ以上のINITNピンをワイヤAND接続すべきです。1つ以上のFPGAまたは外部デバイスがINITNをローレベルに保持している場合、FPGAは初期化状態を維持します。

5.3. Configuration

INITNピンの立ち上がりエッジにより、FPGAはコンフィギュレーション状態に入ります。FPGAはDiamond開発ツールで作成されたコンフィギュレーションビットストリームを受け入れることができます。
MachXO2は不揮発性メモリからコンフィギュレーションデータのフェッチを開始します。MachXO2のコンフィギュレーションに使用されるメモリは、内部フラッシュメモリか外部SPIフラッシュメモリのいずれかです。有効なコンフィギュレーションデータを持つメモリが存在しない場合、MachXO2はコンフィギュレーション状態を離脱しません。FPGA内蔵または接続された不揮発性メモリをプログラムするか、JTAGポートを使用してプログラムする必要があります。デバイスがブランク/消去状態にある場合、プログラミングモードとして使用できるのはJTAG、SSPI、I2Cモードのみです。
FPGAがコンフィギュレーションデータを受信している間、INITN制御ピンは最終的な機能を発揮します。INITNはコンフィギュレーションデータにエラーが存在することを示すために使用されます。INITNがハイの場合、コンフィギュレーションは問題なく進行します。INITNがローにアサートされた場合、エラーが発生しており、FPGAは動作しません。

5.4. Wake-up

ウェイクアップは、コンフィギュレーションモードからユーザーモードへの遷移です。MachXO2の固定4段階ウェイクアップシーケンスは、デバイスがすべてのコンフィギュレーションデータを正しく受信した時点で開始されます。全コンフィギュレーションデータ受信後、FPGAは内部DONEステータスビットをアサートします。この内部DONEのアサートにより、4つの制御を順次実行するウェイクアップステートマシンが動作します。4つの制御ストローブは以下の通りです:
• グローバル出力有効化 (GOE)
• グローバルセット/リセット (GSR)
• グローバルライト無効 (GWDISn)
• 外部DONE
ウェイクアッププロセスの第一段階では、MachXO2がグローバル出力イネーブルを解放します。これがアサートされると、FPGAのI/Oは高インピーダンス状態を解除し、プログラムされた出力機能を発揮できるようになります。FPGA入力は常にアクティブです。入力信号は、グローバルセット/リセット(GSR)のアサートによって、FPGAフリップフロップに対して何らかの動作を実行するのを防がれます。
ウェイクアッププロセスの第二段階では、グローバルセット/リセットとグローバルライトディサブル制御が解放されます。
グローバルセット/リセットは内部ストローブであり、アサートされると、GSR有効属性を有する全てのI/Oフリップフロップ、ルックアップテーブル(LUT)フリップフロップ、分散RAM出力フリップフロップ、および組み込みブロックRAM出力フリップフロップが、ハードウェア記述言語の定義に従ってセット/クリアされます。
グローバル書き込み禁止は、FPGA内部の全RAMロジックに対する書き込み許可ストローブを無効化する制御です。
FPGA入力は常にアクティブであり(グローバル出力許可セクション参照)、GWDISをアサート状態に維持することで
FPGA内部にインスタンス化されたRAMリソースの偶発的な破損を防止します。
ウェイクアッププロセスの最終段階は、外部DONEピンのアサートです。外部DONEは、有効化されている場合にのみ双方向オープンドレインI/Oとなります。外部DONEピンをローレベルに保持する外部エージェントは、MachXO2のウェイクアッププロセスの進行を阻止します。外部DONEが有効化されている場合、アクティブハイになって初めて最終ウェイクアップフェーズが完了します。外部DONEピンが有効化されていない場合、ウェイクアップは中断されずに完了します。
最終ウェイクアップフェーズが完了すると、FPGAはユーザーモードに移行します。
ウェイクアッププロセスを図9.1に示します。

5.5. User Mode

The MachXO2 enters User Mode immediately following the Wake-Up sequence has completed. User Mode is the point
in time when the MachXO2 begins performing the logic operations you designed. The MachXO2 remains in this state
until one of three events occurs:
• The PROGRAMN input pin is asserted.
• A REFRESH command is received through one of the configuration ports.
• Power is cycled.

5.6. Clearing the Configuration Memory and Re-initialization

The current user mode configuration of the MachXO2 remains in operation until it is actively cleared, or power is lost.
Several methods are available to clear the internal configuration memory of the MachXO2. The first is to remove power
and reapply power. Another method is to toggle the PROGRAMN pin. Lastly you can reinitialize the memory through a
Refresh command. Any active configuration port can be used to send a Refresh command.
  • Assertion of the PROGRAMN input
  • Cycling power to the MachXO2
  • Sending the Refresh command using a configuration port
Invoking one of these methods causes the MachXO2 to drive INITN and DONE low. The MachXO2 enters the
initialization state as described earlier.

5.7. Memory Space Accessibility

The two internal memories, Flash and SRAM, of the MachXO2 can be read and written. Each port on the MachXO2 has
a different level of access to each memory space. Table 5.1 provides a cross-reference of the MachXO2 ports and the
memory space they can access.
As shown in Table 5.1, the JTAG, SPI, and I2C can read and write both internal memory spaces while wishbone can only
access the internal flash and not the SRAM.

Table 5.1. Memory Space Accessibility of Different Ports

5.8. On-chip Flash Programming

表5.1に示すように、オンチップフラッシュは異なるプログラミングモードでプログラミングされます。これらのプログラミングモードについては、次のセクションで説明します。異なるプログラミングモード内では、オンチップフラッシュをプログラミングする2つの方法があります:オフラインプログラミングとバックグラウンドプログラミングです。
  • オフラインプログラミング – この方法では、デバイスがプログラミングモードに入る必要があります。プログラミングモードでは、プログラミングが完了するまでデバイスは動作を停止します。Diamond Programmerを使用する場合、FLASHで始まる操作でオフラインモードを選択します。操作で特に指定がない限り、アクセスされるフラッシュセクタはFeature、Configuration、UFMです。
  • バックグラウンドプログラミング – この方法では、デバイスがユーザーモードで動作を継続しながら、構成ロジックがオンチップフラッシュメモリをプログラミングします。オンチップフラッシュメモリのプログラミングが完了すると、デバイスはREFRESH命令でSRAMにダウンロードできます。Diamond Programmer使用時、
バックグラウンドモードはXFLASHで始まる操作で選択されます。操作で特に指定がない限り、アクセスされるフラッシュセクタは
ConfigurationとUFMです。
MachXO2-2000U、MachXO2-4000、MachXO2-7000でバックグラウンドプログラミングを使用する場合、システムは
バックグラウンドプログラミング中に右側PLLをリセット状態にする必要があることに注意してください。バックグラウンドフラッシュプログラミングに必要な時間(消去部分)は、
『MachXO2デバイスにおけるユーザーフラッシュメモリとハードン制御機能の使用に関するリファレンスガイド』(FPGA-TN-02163)の表97に規定されています。
左側PLLはバックグラウンドプログラミング中もアクティブ状態を維持できます。

5.9. Bitstream/PROM Sizes

MachXO2はSRAMベースのFPGAです。SRAM構成メモリは、全構成データを格納可能な不揮発性メモリからロードする必要があります。構成データのサイズは可変です。これはFPGA内の利用可能な論理量と、事前初期化された組み込みブロックRAM(EBR)コンポーネントの数に基づきます。最大デバイスを使用し、すべてのEBRを固有のデータ値で事前初期化し、圧縮を無効にして生成したMachXO2設計では、最大のストレージ容量が必要となります。
MachXO2の内部フラッシュメモリに構成データを保存する際には、特別な考慮事項があります。MachXO2のフラッシュメモリは3つの独立したセクターを提供します。
第1セクターは圧縮済み構成データの保持専用であり、構成用フラッシュと呼ばれます。
第2セクター(ユーザーフラッシュメモリ)は3つの異なる機能を提供します。
大規模な構成データイメージ用の追加構成用フラッシュストレージとして機能し、
EBRの内容を保存でき、または汎用フラッシュメモリとして使用可能です。
第3セクターは機能行(Feature Row)です。

Figure 5.3. Flash Memory Space of a MachXO2 Device

ほとんどの設計において、コンフィギュレーションフラッシュはSRAMコンフィギュレーションメモリにロードされる圧縮コンフィギュレーションデータを格納するのに十分な容量を有しています。しかし、設計内のロジック量が増加し、事前初期化済みEBRの量が増加すると、コンフィギュレーションデータのサイズも増加します。このサイズ増加により、コンフィギュレーションデータがUFMセクタにオーバーフローする可能性があります。また、可能性は低いものの、コンフィギュレーションデータが内部フラッシュメモリ全体に対して大きすぎる場合も考えられます。コンフィギュレーションデータがコンフィギュレーションフラッシュとUFMメモリの合計容量に収まらなくなった場合、設計を縮小するか、外部コンフィギュレーションメモリを使用する必要があります。UFMへのオーバーフローを防ぐため、コンフィギュレーションデータを生成するソフトウェアに入力を提供できます。
設定データが設定用フラッシュとUFMメモリの合計容量を超える場合、デバイスビットストリームを外部SPIフラッシュに保存できます。表5.2は最大非圧縮ビットストリームサイズを示しており、SPIフラッシュの選定に利用できます。

2026/01/24(土)MACH XO2の書き込み

mach xo2 cpld config via ftdi usb d2xx
Yes — you can configure/program a Lattice MachXO2 CPLD via an FTDI USB interface using the D2XX drivers, but there are a few important pieces you need to know about how it works and what’s involved in practice: 



📌 Overview

🔌 What’s Possible
• The MachXO2 family of CPLDs (e.g., LCMXO2 devices) can be programmed via JTAG or synchronous serial interfaces such as SPI or I2C, not directly as a USB peripheral. 
• An FTDI FT2232 / FT2232H / similar chip on your PCB or development board provides the USB ⇄ JTAG/SPI/I²C bridge. 
• Lattice’s tools (e.g., Diamond Programmer) recognize such an FTDI interface as a programming cable (e.g., HW-USBN-2B) when the USB interface is correctly configured. 



🧰 How It Works: FTDI + D2XX + MachXO2

📌 FTDI and D2XX Drivers
• D2XX drivers (ftd2xx) give you direct access to an FTDI device via an API (FT_Open(), FT_Write(), etc.). 
• On chips with the MPSSE (Multi-Protocol Synchronous Serial Engine) — such as FT2232H — you can generate bit-banged JTAG, SPI or I²C signals over USB. 

👉 Using D2XX + MPSSE, you can drive the hardware layer for JTAG (TMS, TCK, TDI, TDO) that MachXO2 expects. There are examples in the FTDI MPSSE application notes for JTAG over FTDI + D2XX, which is exactly what a programming cable does internally. 



🔧 Practical Steps

➤ 1. Get the FTDI Chip Configured
• Your FTDI must be in a mode that allows low-level synchronous signaling (MPSSE) — not just USB UART/VCP.
• On many boards, this requires setting the EEPROM descriptor so that the host and tools see the device as a JTAG programmer (like HW-USBN-2B). 

Tools:
• FT_Prog (FTDI Utility) — program the FTDI EEPROM descriptor for MPSSE/JTAG mode.
• On some dev boards, the EEPROM is already set to present a JTAG programmer to Diamond.



➤ 2. Install Drivers
• Install D2XX drivers appropriate for your OS. 
• On Linux, you may need to prevent the default ftdi_sio/usbserial drivers from binding so Diamond / direct tools can access the chip directly.



➤ 3. Wiring & Interface
• Physically connect the FTDI’s synchronous pins to MachXO2’s JTAG or SPI/I²C config interface, as supported.
• JTAG is usually the simplest:
• TCK → TCK
• TMS → TMS
• TDI → TDI
• TDO → TDO
• GND, VCC for reference



➤ 4. Use Diamond / open-source tool

With Lattice Diamond:
• Diamond Programmer should detect your FTDI-based cable if the descriptor matches and the MPSSE is enabled.
• Choose the correct cable (e.g., HW-USBN-2B or equivalent) and target device.
• Diamond handles the upload of the JEDEC (.jed), or .xcf/.bit equivalent. 

Alternative / Open Tool:
• openFPGALoader supports FTDI JTAG (including MachXO2 in some forks — search docs), using the FTDI D2XX/MPSSE layer instead of proprietary libs.



🧠 Notes & Tips

✔ You don’t program MachXO2 directly over “USB as USB” — the FTDI chip bridges USB to synchronous signals that the CPLD expects (usually JTAG). 
✔ FTDI’s MPSSE engine is the key: it lets you bit-bang protocols over USB via D2XX. 
✔ Diamond Programmer internally drives the low-level protocol: you typically don’t write your own programming routines unless you’re doing a custom bootloader.



If you want sample code snippets for D2XX/MPSSE JTAG bit-banging for a MachXO2 programming tool, I can provide C/C++ examples too! (Would you like that?)