2026/01/28(水)MachXO2 Programming and Configuration User Guide
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 andwake-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ピンが外部マスターによってローアサートされなくなった
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 pointin 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
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 hasa 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使用時、
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フラッシュの選定に利用できます。
2021/06/04(金)LPC55xx I2S : Configuration register 1 and 2
参照: NXP LPC55S1x RM R1.4, 37.7.1~2項 *1
I2S : Register description
Configuration register 1
CFG1レジスタにはモード設定が含まれ、そのほとんどが1つのFlexcomm Interface内のすべてのI2Sチャネルペアに適用されます。いくつかの設定は最初のペア(プライマリ・チャネルペア)にのみ適用されます。
bit 0 MAINENABLE
このFlexcomm InterfaceのI2S機能のメインのイネーブル。
- 0
このFlexcommのすべてのI2Sチャネルペアがディセーブルされ、内部ステートマシン、カウンタ、フラグがリセットされます。他のチャネルペアは有効にできません。 - 1
最初のI2Sチャネルペアは有効です。このFlexcomm Interfaceの他のチャネルペアは、それぞれのPAIRENABLEビットで有効にすることができます。
bit 1 DATAPAUSE
データフローの一時停止。I2Sシリアライザ/デシリアライザとFIFO間のデータフローを一時停止することができます。これは、ストリームを変更する場合や、データのアンダーフローまたはオーバーフロー後の再起動時に行うことができます。一時停止中は、送受信中のデータを壊すことなく、FIFOの操作を行うことができます。
データの一時停止が要求されると、インターフェイスは、データの流れを中断する前に、進行中のデータの送信を完了する必要がある場合があります。ソフトウェアは、STATレジスタのDATAPAUSEDフラグを監視することにより、アクションを起こす前に一時停止が実際に有効であることを確認する必要があります。
DATAPAUSEがクリアされると、次のフレームの先頭でデータ転送が再開されます。
- 0
通常動作、またはI2Sがすでに一時停止している場合は次のフレームで通常動作を再開。 - 1
データフローの一時停止が要求されている。STATのDATAPAUSEDが1のときに有効です。
bit 3:2 PAIRCOUNT
これは0x3の読み取り専用フィールドで、このFlexcommインターフェイスで提供されているI2Sチャネルペアの数をあらわします。
- 00 = 1つのI2Sチャネルペアがあります。
- 01 = 2つのI2Sチャネルペアがあります。
- 10 = 3つのI2Sチャネルペアがあります。
- 11 = 4つのI2Sチャネルペアがあります。
bit 5:4 MSTSLVCFG
マスタ/スレーブ構成の選択で、このFlexcommのすべてのI2SチャネルペアでSCKとWSがどのように使用されるかを決定します。
- 0x0
通常のスレーブモード。SCKとWSをマスタから受信し、データの送受信に使用します。 - 0x1
WS同期マスタ構成。WSは他のマスタから受信され、Flexcommのファンクションクロックから分配された場合に、SCKの生成を同期させるために使用されます。 - 0x2
既存のSCKを使用するマスタ構成。SCKを受信し、WSの生成に直接使用するとともに、データの送受信を行います。 - 0x3
通常のマスタモード。SCKとWSが生成され、1つまたは複数のスレーブ機器に送ることができます。
bit 7:6 MODE
基本的なI2Sの動作モードを選択します。37.8.2項の「Formats and modes」を例として参照してください。
- モード0(0x0)
I2Sモード、通称「Classic」モード。WSのデューティサイクルは50%で、(有効なチャネルペアごとに)左チャネルのデータが第1フェーズに、右チャネルのデータが第2フェーズにそれぞれ1つずつ発生します。このモードでは、データ領域はフレームの先行するWSエッジの1クロック後に開始されます。備考: WSのデューティサイクルが50%の場合、FRAMELENはフレームのI2Sクロック数を偶数に定義する必要があります。FRAMELENが奇数クロックを定義している場合、余分なクロックは右サイドに発生します。
- モード1(0x1)
WSのデューティサイクルが50%になるDSPモード。モード0の備考を参照してください。 - モード2(0x2)
このDSPモードでは、WSは各データフレームの最初に1クロック分のパルスを出力します。 - モード3(0x3)
このDSPモードでは、WSは各データフレームの最初に1データスロット分の長さのパルスを出力します。
bit 8 RIGHTLOW
左右チャネルがどのようにFIFOデータ内に配置されるかを決定します。基本的には、FIFOとの間で転送される左右のチャネルデータが入れ替わります。
このビットは、データ幅が24ビット以上の場合やPDMDATA = 1の場合には使用されません。
なお、ONECHANNEL = 1の場合、使用される1つのチャネルは通常左チャネルとなります。POSITIONは、右チャネルデータが通常配置されるフレームにそのデータを配置することができます。
備考: すべての有効なチャネルペアがONECHANNEL = 1である場合、RIGHTLOW = 1は許可されません。
- 0
右チャネルはFIFOデータの上位部分から取得されます。例えば、データが16ビットの場合、FIFOのビット31:16が右チャネルに使用されます。 - 1
右チャネルはFIFOデータの下位部分から取得されます。例えば、データが16ビットの場合、FIFOのビット15:0が右チャネルに使用されます。
bit 9 LEFTJUST
データの左詰め。
- 0
データは、FIFOとI2Sシリアライザ/デシリアライザ間で右詰めで転送されます。つまり、ビット0から始まり、DATALENで定義された位置まで続きます。これは、データバスストリーム上の右詰めのデータに対応します。 - 1
FIFOとI2Sシリアライザ/デシリアライザの間でデータが左詰めで転送されます。つまり、FIFOエントリのMSBから始まり、DATALENで定義されたビット数だけ続きます。これは、データバスストリーム上の左詰めのデータに対応します。
bit 10 ONECHANNEL
シングルチャネルモード。送信と受信の両方に適用されます。このコンフィギュレーションビットは、最初のI2Sチャネルペアにのみ適用されます。他のチャネルペアは、それぞれのCFG1レジスタで独立してこのモードを選択できます。
- 0
このチャネルペアのI2Sデータは、左右のチャネルとして扱われます。 - 1
このチャネルペアのI2Sデータは、単一のチャネルとして扱われます。機能的にはこのペアの左チャネルとなります。
備考: I2Sモード0では、フレームの右半分はPOSITION = 0x100から始まります。これはモード0がフレームの左と右のサイドを明確に区別しているためです。ONECHANNEL = 1の場合、POSITIONを0x100 + 右サイド内のデータ位置に設定することで、シングルチャネルのデータを右側に配置することができます。例えば、0x108の場合、フレーム中央から8クロック目からデータを配置することになります。 その他のI2Sモードでは、POSITIONで定義されたクロックにシングルチャネルのデータが配置されます。
bit 12 SCK_POL
SCKの極性。
bit 13 WS_POL
WSの極性。
bit 20:16 DATALEN
データ長(マイナス1エンコード)は、このFlexcommのすべてのチャネルペアのI2Sデータのビット数を定義します。データはここで定義されたビット数だけSDAに駆動されたり、SDAから受信されたりすることに注意してください。
DATALENは、I2Sで以下のようにも使用されます。
- FIFOとI2Sシリアライザ/デシリアライザ間のデータ転送のサイズを決定する。37.8.4項 「FIFO buffer configurations and usage」を参照してください。
- モード1、2、3では、フレーム内の右データとそれに続く左データの位置を決定します。
- モード3では、WSパルスの持続時間を決定します。
値を示します。
- 0x00~0x02 = サポートされていません。
- 0x03 = データ長は4ビット
- 0x04 = データ長は5ビット
… - 0x1F = データ長は32ビット
Configuration register 2
CFG2レジスタは、I2Sデータ構成の外観をコントロールするフィールドを含んでいます。
bit 10:0 FRAMELEN
フレーム長(マイナス1エンコード)は、フレームに含まれるデータビット数(クロック数)を定義します。37.8.2.1項の「Frame format」を参照してください。
- 0x000~0x002 = サポートされていません。
- 0x003 = フレームの長さは4ビット
- 0x004 = フレームの長さは5ビット
... - 0x7FF = フレームの長さは合計で2048ビット
備考: I2Sモード0または1で奇数長のフレーム(例: 33クロック)を定義した場合、余分なクロックは右半分に出現します。
備考: I2Sモード3の場合、WSパルスを正しく生成するためには、FRAMELENはDATALENよりも大きくなければなりません。
bit 24:16 POSITION
データポジション。フレーム内でのこのチャネルペアのデータの位置を定義します。POSITION + DATALENはFRAMELENよりも小さくなければなりません。37.8.2.1項の「Frame format」を参照してください。
備考: I2Sモード0の場合、POSITIONはWSエッジの1クロック後から、左相と右相の両方でデータの位置を定義します。その他のモードでは、POSITIONはフレーム全体内のデータの位置を定義します。モード0でONECHANNEL = 1の場合は特殊なケースで、ONECHANNELの説明を参照してください。
備考: 全てのチャネルペアのDATALENとPOSITIONフィールドの組み合わせは、フレーム内でチャネルが重ならないようにする必要があります。
- 0x000 = フレームまたはWSフェーズ内のビットポジション0(最初のビット位置)からデータが始まる。
- 0x001 = フレームまたはWSフェーズ内のビットポジション1からデータが始まる。
… - 0x0FF = フレームまたはWSフェーズ内のビットポジション255からデータが始まる。
- 0x100 = ONECHANNELの説明を参照。
2021/06/01(火)LPC55xx : Sys_ctrl
参照: NXP LPC55S1x RM R1.4, 36章 *1
Sys_ctrl
36.1 How to read this chapter
sys_ctrlには、次のものが含まれています。
- I2S信号の共有(I2S signal sharing)機能。この機能は、すべてのLPC55S1x/LPC551xデバイスで利用可能です。
- USB HS用のステータスレジスタ
- グレイ(GRAY)値のバイナリデコーダ
36.2 Features
- I2S信号の共有 : 複数のFlexcomm Interface I2Sインターフェイスが、外部ボード配線なしで、I2Sクロック、WS、DATAの組み合わせを共有できます。
- グレイ→バイナリデコーダ : OSイベントタイマからのグレイ値をデコードできます。
36.3.1 I2S signal sharing
I2S信号の共有を以下のように設定します。
FCnCTRLSELおよびSHAREDCTRLSETxレジスタを書き込む前に、UPDATELCKOUTビットをリセットしてUPDATELCKOUTレジスタ内の書き込み保護を解除します。
1. IOCONで、I2Sの動作のために実際に外部に接続するピンの適切な機能を選択します。
SHAREDCTRLSET0、SHAREDCTRLSET1レジスタに書き込んで、どの共有セットを使用するかを設定します(36.5節「Register description」を参照)。
2. 必要に応じてFC0CTRLSEL~FC7CTRLSELレジスタに書き込んで、共有された信号を使用する各Flexcomm Interfaceの信号共有を設定します。
I2S信号共有を使用するFlexcomm Interfaceを必要に応じて設定します(36.5節を参照)。どのFlexcomm Interfaceもまずマスタとして動作し、次にスレーブとして動作します。
注意:信号共有の接続はレジスタの値が変更されると同期をとらずに行われるので、データストリームの開始前に行う必要があります。
また、SCKとWS信号を共有しているI2Sマスタは、共有信号を使用するように設定する必要があります。例えば、Flexcomm Interface 0がSCKとWSを共有セット0に提供している場合、FC0CTRLSELでSCKとWSに共有セット0を選択設定します。
36.4 Pin description
I2S信号の共有は、ピンを直接経由するのではなく、既存のI2Sピン機能への内部配線の追加です。
36.5.1 Update clock lock out register
sys_ctrlのすべてのレジスタ(このレジスタを除く)を書き込みアクセスから保護するためのレジスタです。
36.5.2 Shared signal control select registers for each Flexcomm (0 to 7)
これらのレジスタは、Flexcomm Interface 3を除く各Flexcomm InterfaceのSCK、WS、DATA入力、およびDATA出力の信号源を選択します。共有信号の接続方法と選択方法の詳細については、表660を参照してください。
36.5.3 Control registers for each set of shared signals
これらのレジスタは、(2つの)共有信号グループのSCK、WS、DATA入力のソースを選択し、どのFlexcomm Interfaceが共有DATA出力に参加するかを設定します。
36.5.4 Status register for USB HS
このレジスタは、USB HS 3.3V電源ドメインの低電圧検出信号を示します。電源の検出器はUSB PHYに内蔵されています。
36.5.5 CODE GRAY for LSB input
CODE GRAY LSBの入力レジスタとして機能します。
36.5.6 CODE GRAY for MSB input
CODE GRAY MSBの入力レジスタとして機能します。
36.5.7 CODE BIN LSB output
CODE BIN LSBの出力レジスタとして機能します。*2
36.5.8 CODE BIN MSB output
CODE BIN MSBの出力レジスタとして機能します。*2
36.6 Functional description
I2S信号の共有機能は、すべてのLPC55S1x/LPC551xデバイスで利用できます。
必要以上のピンを犠牲にすることなく、1つのTDMストリームで複数のI2S機能を一緒に使用したい場合があります。I2S信号の共有により、デバイスの外部で複数のピンを外部接続することなくこのような使用が可能になります。この機能は、4つのチャネルペアを含む1つのI2Sインターフェイスで実現できる範囲を超える要件がある場合にのみ、必要となります。
信号の共有は、複数のオンチップI2Sインターフェイスを、外部の基板配線なしに、同じピンでクロック、WS、入力データに接続することができます。複数のI2S機能が1つのデータラインに出力データを提供する場合は、やはり外部接続で実現する必要があります。
一般的に、I2S用に設定された各Flexcomm Interfaceは、以下を選択できます。
- 独自のSCK、または共有のSCK。
- 独自のWS、または共有のWS。
- 自身のDATAイン、または共有のDATAイン。
各Flexcomm Interfaceは、共有された信号に貢献できる可能性があります。
- 自身のSCK(マスタかスレーブかに応じて、インまたはアウト)。
- 自身のWS(マスタかスレーブかに応じて、インまたはアウト)。
- 独自のDATAイン。
図104と図105に接続可能な代表的なロジックを示します。
36.6.1.1 Examples
図106は、入力データと出力データが2つの異なるI2Sインターフェイスに接続された双方向コーデックの簡単な例で、信号共有を利用して接続を1つのSCKと1つのWSピンに減らしています。この例では、1つのI2Sインターフェイスがマスタトランスミッタで、1つのI2Sインターフェイスがスレーブレシーバとなっています。データ入力と出力は、外部コーデックの別々のピンであるため、1つのピンで共有することはできません。
図107は、複数のスレーブおよび/またはレシーバがSCKとWS、および/またはDATAを共有する一般的なケースを示しています。このシナリオには、受信データの共有が含まれます(例えば、異なるI2SインターフェイスがTDMストリームの異なるスロットからデータを受信する場合など)。
図108は、あるI2Sインターフェイスがチップ外に出るマスタとなり、他のオンチップI2Sインターフェイスがそのスレーブとなるマスタ・スレーブ動作を示しています。データは送信することも受信することもできます。複数のI2Sインターフェイスは、複数のピンを配線することで、1つのストリームにデータを供給します。
図109は、1つのI2Sインターフェイスが共有のDATAラインに送信している間に、少なくとも1つの他のI2Sが同じDATAラインから受信しているデータを示しています。これは、必ずしも送信されたデータが受信されていることを意味するものではありません。これらはTDMフレーム内の異なるパケットである可能性があります。この例では、2つのI2Sインターフェイスが送信し、2つのI2Sインターフェイスが受信していますが、どのような組み合わせも可能です。
2021/05/28(金)LPC55xx : Flexcomm Interface serial communication
参照: NXP LPC55S1x PDS R1.5, 7.24.3節、
LPC55S2x PDS R2.0, 7.23.3節 *1
適用: NXP EdgeVerse LPC MCUs:
LPC55S16, LPC5516
LPC55S14, LPC5514
LPC5512
LPC55S28, LPC5528
LPC55S26, LPC5526
適用デバイス
本記事は、LPC551x/S1xのデータシートを元に作成しています。また、本節の範囲においてはLPC552x/S2xのデータシートとは仕様の細部が異なるだけであることから、LPC551x/S1xのそれとの差分のみを提供します。LPC55S2xのLPC55S1xとの違い
I2Sのチャネルペアの個数の違い
- LPC55S1x/LPC551xデバイスは、Flexcomm Interface 0~5はそれぞれ1チャネルペアのI2Sを提供し、Flexcomm Interface 6~7はそれぞれ4チャネルペアのI2Sを提供します。
- LPC55S2x/LPC552xデバイスは、Flexcomm Interface 0~7はそれぞれ1チャネルペアのI2Sを提供します。
Flexcomm Interface serial communication
各Flexcomm Interfaceには、ペリフェラル機能の選択肢がありますが、そのうちの一つをユーザーが選択しなければ、その機能を設定して使用することはできません。Features
- 非同期、同期マスタ、または同期スレーブ動作のUSART
- 最大4つのスレーブセレクトが可能なSPIマスタ、またはSPIスレーブ
- I2C(マスタ、スレーブ、モニタの各機能を含む)
- Flexcomm Interface 0~5はそれぞれ1チャネルペアのI2Sを提供し、Flexcomm Interface 6~7はそれぞれ4チャネルペアのI2Sを提供します。
- USART、SPI、I2Sのトラフィックデータは、Flexcomm FIFOを使用します。I2C機能はFIFOを使用しません。
SPI serial I/O (SPIO) controller
Features
- SPIマスタモード(送受信)で50Mbit/s、SPIスレーブ受信モードで25Mbit/s、SPIスレーブ送信モードで50Mbit/sまでのビットレートに対応します。
- マスタまたはスレーブ動作
- 4~16ビットのデータフレームを直接サポート。より大きなフレームはソフトウェアでサポート。
- SPI機能では、それぞれ8エントリの独立した送信および受信FIFOのサポートがあります。
- DMA転送に対応 : SPInの送受信機能はシステムのDMAコントローラと連動しています。
- 到着するデータを読み出すことなく、スレーブにデータを送信することができます。この機能はSPIメモリの設定時に役立ちます。
- 最大4つのスレーブセレクト入出力は、極性を選択でき、使い方も自由自在です。
I2C-bus interface
(割愛)USART
Features
- Maximum bitrates of 6.25Mbit/s in asynchronous mode and 10Mbit/s in synchronous mode for USART functions.
- 7, 8, or 9 data bits and 1 or 2 stop bits.
- マスタまたはスレーブで動作する同期モード。連続クロックオプション付き。
- ソフトウェアアドレス比較によるマルチプロセッサ/マルチドロップ(9ビット)モード
- RS-485トランシーバの出力イネーブル制御
- ボーレートを自動検出するAutobaudモード
- Parity generation and checking: odd, even, or none.
- ソフトウェアで選択可能なオーバーサンプリング : 5~16クロック(非同期モード)
- 1つの送信データバッファと1つの受信データバッファ
- 自動フロー制御のためのハードウェア信号にRTS/CTSを採用。ソフトウェアによるフロー制御は、Delta CTS検出、Transmit Disable制御、および任意のGPIOをRTS出力として使用して行うことができます。
- Received data and status can optionally be read from a single register
- ブレークの生成と検出
- 受信データは3つのサンプルのうちの2つの「投票」です。1つのサンプルが異なる場合、ステータスフラグが設定されます。
- Autobaud機能付きのボーレート生成器を内蔵
- FRD(フラクショナル・レート・ディバイダ)は、すべてのUSARTで共有されます。
- Receiver Ready、Transmitter Ready、Receiver Idle、受信ブレーク検出の変化、フレーミングエラー、パリティエラー、Overrun、Underrun、Delta CTS検出、受信サンプルノイズ検出のための割り込みが利用可能。
- ループバックモードでは、データおよびフローコントロールのテストが可能です。
- 同期式スレーブモードでは、ディープスリープおよびディープスリープ2モードからの復帰が可能です。
- 特別な動作モードでは、32.768kHzのRTC発振器をUARTクロックとして使用し、最大9600ボーでの動作が可能です。このモードはデバイスがディープスリープ状態にあるときに使用でき、文字を受信したときにデバイスを復帰させることができます。
- USARTの送受信機能は、システムのDMAコントローラと連動しています。
- USART機能は、それぞれ16エントリの独立した送信および受信FIFOのサポートがあります。
I2S-bus interface
I2Sバスは、デジタルオーディオやデータ収集などのストリーミングデータ転送アプリケーション向けの標準的な通信インターフェースを提供します。I2Sバスの仕様は1つのデータ、1つのクロック、1つのワードセレクト/フレームトリガ信号を持つ3線式シリアルバスを定義しており、シングルまたはデュアル(モノラルまたはステレオ)のオーディオデータ転送を(他の構成に加えて)提供します。Flexcomm Interface 0~5にはそれぞれ1つのI2Sチャネルペアが、Flexcomm Interface 6~7にはそれぞれ4つのI2Sチャネルペアが実装されています。1つのFlexcomm Interface内のI2Sインターフェースは、1つのマスタまたはスレーブとして構成可能なチャネルペアを提供します。残りのチャネルペアは、存在する場合、常にスレーブとして動作します。1つのFlexcomm Interface内の全てのチャネルペアは、1組のI2S信号を共有し、同じモード、同じフレーム構成を使用して、送信または受信のいずれかの動作のために一緒に構成されます。このようなチャネルペアはすべて、時分割多重化(TDM)に携わることができます。MCLKの入力や出力が必要な場合は、I2Sブロックの外でシステムレベルのクロックスキームで処理されます。
Features
- Flexcomm Interfaceは、1つ以上のI2Sチャネルペアを実装し、最初のチャネルペアはマスタまたはスレーブ、残りのチャネルペアはスレーブとなります。すべてのチャネルペアは、送信または受信のいずれか、およびその他の共有属性について一緒に設定されます。
- 1つのFlexcomm Interface内の全チャネルのデータサイズは、4ビットから32ビットまで設定可能です。各チャネルペアは独立して1つのチャネルとして動作するように設定することもできます(ステレオ動作ではなくモノラル動作)。
- 1つのFlexcomm Interface内のすべてのチャネルペアは、シングルビットクロック(SCK)、ワードセレクト/フレームトリガ(WS)、データライン(SDA)を共有します。
- 1つのFlexcomm Interface内のすべてのI2Sトラフィックのデータは、Flexcomm FIFOを使用します。FIFOの深さは8エントリです。
- 左詰め、右詰めのデータモード
- FIFOのレベルトリガを使用したDMAに対応
- 複数のステレオやモノラルスロットを持つTDMをサポート。各チャネルペアは任意のデータスロットとして振る舞います。複数のチャネルペアが1本のTDMデータラインの異なるスロットとして参加できます。
- 選択によってビットクロックとWSを反転させることができます。
- 対応するサンプリング周波数は、デバイスの構成やアプリケーションの制約(システムクロックの周波数やPLLの有無など)によって異なりますが、一般的には標準的なオーディオデータレートに対応しています。
High-speed SPI serial I/O controller
Features
- マスタまたはスレーブ動作
- SPIマスタモード(送受信)で50Mbit/s、スレーブモード(送受信)で50Mbit/sまでのビットレートに対応します。
- 4~16ビットのデータフレームを直接サポート。より大きなフレームはソフトウェアでサポート。
- SPI機能では、それぞれ8エントリの独立した送信および受信FIFOのサポートがあります。
- DMA転送に対応 : SPInの送受信機能はシステムのDMAコントローラと連動しています。
- 到着するデータを読み出すことなく、スレーブにデータを送信することができます。この機能はSPIメモリの設定時に役立ちます。
- 最大4つのスレーブセレクト入出力は、極性を選択でき、使い方も自由自在です。
2021/05/13(木)LPC55xx : Boot ROM
参照: NXP LPC55S1x RM R1.3, 6.2~6.3節 *1
Features
様々なブートオプションやAPIを可能にするブートローダを搭載した128kBのオンチップブートROM。- ISPピンやPFR領域のCMPA設定に基づいて(9章「LPC55S1x/LPC551x Flash API」参照)、内蔵フラッシュからの自動ブートをサポートします。
- IAPの呼び出し。8章「LPC55S1x/LPC551x ISP and IAP」を参照してください。
- 内蔵フラッシュをプログラミングするための FLASH API。5章「LPC55S1x/LPC551x Flash」を参照してください。
- 1ビットSPIフラッシュデバイスからのSPIフラッシュリカバリブートをサポートします。詳細は6.4.3項を参照してください。
General description
内蔵ROMメモリはブートコードの格納に使用されます。リセット後、Armプロセッサはこのメモリからコードの実行を開始します。ブートローダのコードは、電源投入時、リセット時、低電力モードのディープパワーダウンからのWake時に毎回実行されます。LPC55S1x/LPC551xはコードとデータの保存用に内蔵フラッシュを備えているため、イメージは内蔵フラッシュに保存する必要があります。その後、コードが検証され、ブートROMのベクタがオンチップフラッシュに移されます。
CMPAビットの値、ISPピン、およびイメージヘッダタイプの定義に応じて、ブートローダは内蔵フラッシュから起動するか、ISPモードで実行するかを決定します。6.5節「PFR region definitions」を参照してください。LPC55S1x/LPC551xは、ISPピンの状態を読み込んでブートソースを決定します。表189を参照してください。
| Boot mode | ISP0 (PIO0_5) | Description |
|---|---|---|
| Passive boot | HIGH | The LPC55S1x/LPC551x will look for valid image in the internal flash, if no valid image is found, the LPC55S1x/LPC551x will enter ISP boot mode based on DEFAULT_ISP_MODE bits. |
| ISP boot | LOW | One of the serial interfaces (UART0, I2C1, SPI3, HS_SPI, USB0-FS, USB1-HS) is used to download image from host into internal flash. The first valid probe message on USART, I2C, SPI or USB locks in that interface. |
| ISP Boot mode | ISP_MODE | Description |
|---|---|---|
| Auto ISP | 000 | The LPC55S1x/LPC551x probes the active peripheral from one of below serial interfaces, and download image from the probed peripherals: UART0, I2C1, SPI3, HS_SPI, USB0-FS or USB1-HS. |
| USB HID ISP | 001 | The USB HID class is used to download image of the USB0/1 port. (HS-USB is the default USB port). |
| UART ISP | 010 | The UART is used to download the image. |
| SPI Slave ISP | 011 | The SPI slave is used to download the image. |
| I2C Slave ISP | 100 | The I2C slave is used to download the image. |
| Disable ISP | 111 | Disable ISP mode. |
表191にISPのピンアサインを示しますが、これはROMコードで使用されるデフォルトのピンアサインであり、変更することはできません。
(表191、表192、図8は割愛)
図8にトップレベルのブート処理を示します。リセットが解除された後にブートが開始されます。
CPUのクロックは96MHzのFROをベースに48MHzとなっています。Cortex-M33がブートローダを起動するとSWDアクセスが無効になるため、この間、デバッガはCPUに接続することができません。ブートROMはISPピンのリセット状態に基づいて、ブートモードを決定します。
ブートモードが決定され、イメージが内蔵フラッシュに存在すると、ブートローダはベクタテーブルとイメージヘッダの検証を行います。
ブートROMはイメージの有効性チェックのために以下のチェックを行います。
- セキュアブートが有効な場合、ヘッダとCMPAの設定を使ってイメージを検証します。詳細は「Secure Boot」の章を参照してください。
- セキュアブートが有効になっておらず、イメージヘッダでCRCチェックが有効になっている場合は、CRC32を使用してイメージを検証します。
- 認証チェックもCRCチェックも有効になっていない場合は、SPとPCを検証します。
- 基本的なイメージチェックに合格した場合、TZMイメージタイプを検証します。
CRCイメージであれば、imageLengthフィールドの値がCRC ONを行うための長さとして使用されます。表192を参照してください。CRCは内蔵フラッシュのイメージに対して実行されます。CRCの計算は、イメージセクタの先頭からオフセット0x0で始まり、長さで指定されたバイト数まで続きます。この長さにはCRC値フィールドを構成するoffsetToSpecificHeaderフィールドが含まれていないため、計算されたCRCはCRC値フィールドをスキップすることになります。その結果を構造体のoffsetToSpecificHeaderエントリと比較し、一致するものがあればイメージは有効、そうでなければ無効と判断されます。CRCイメージでない場合は、CRCは実行されません。
署名付きイメージの場合は、imageLengthフィールドの値が認証を行う長さとして使用されます。認証は内蔵フラッシュのイメージに対して行われます。認証はイメージセクタの先頭からオフセット0x0で始まり、lengthで指定されたバイト数まで続きます。offsetToSpecificHeaderフィールドの値は、証明書を格納するオフセットを指します。
2021/04/06(火)LPC55xx DMA : Trigger operational detail
参照: NXP LPC55S1x RM R1.3, 22.5.1.3項 *1
Trigger operational detail
DMAチャンネルで転送を開始するには、必ず何らかのトリガが必要です。トリガには、ハードウェアトリガとソフトウェアトリガがあり、いくつかの方法で使用できます。
SWTRIGビットが0に設定されているチャンネルは、ハードウェアまたはソフトウェアによってトリガをかけることができます。ソフトウェアトリガは,SETTRIGレジスタの該当ビットに1を書き込むことで実現します。ハードウェアトリガの場合は、関連するチャネルのCFGレジスタのHWTRIGEN、TRIGPOL、TRIGTYPE、TRIGBURSTフィールドの設定が必要です。チャネルの初期設定時に、XFERCFGレジスタのSWTRIGビットを設定すると、直ちに転送が開始されます。
関連するCFGレジスタのPERIPHREQENビットが設定されていれば、チャネル上の転送はDMAリクエストのペースに合わせて行われます。それ以外の場合は、全速力で転送が行われます。
CTLSTATレジスタのTRIGビットは、XFERCFGレジスタの値CLRTRIG(ビット0)によって決定される転送の終了時にクリアすることができます。CLRTRIGに1があると、ディスクリプタが使い果たされたときにトリガがクリアされます。