はじめに
Agilex™ 3 の AS x4 モードでのコンフィグレーションで使用している QSPI Flash のレジスタ情報を確認したり、書き込まれているデータの確認(リード)や、必要に応じてデータを書き換え(ライト)たりしたいと思うようなケースがあるかと思います。
Quartus® Prime Pro に内包されている Configuration Debutter Tool を用いることで Agilex™ 3 と ASx4 モードで接続されている QSPI Flash にアクセスして、必要に応じてレジスタのリードライトや、データのリードライトをおこなうことができます。
この記事では Configuration Debugger Tool を用いて Agilex™ 3 と ASx4 モードで接続されている QSPI Flash のデバッグをおこなう方法について説明します。
ポイント: Configuration Debugger は Quartus® Prime Pro に内包されています。そのため Quartus® Prime Pro をインストール済みであれば使用することができます。
ポイント: Agilex™ 3 を例として説明していますが、他の Agilex™ ファミリーや Stratix® 10 など、Secure Device Manager(SDM)を採用したデバイスファミリーであれば、同様の手順となっています。
1. AS x4 コンフィグレーション
Agilex™ 3 の AS x4 コンフィグレーション(AS シングル・デバイス・コンフィグレーション)の接続図は以下の通りです。
[図 1] AS x4 シングル・デバイス・コンフィグレーション接続図
(出典:Device Configuration User Guide Agilex™ 3 FPGAs and SoCs)
2. QSPI Flash デバッグ実行手順(Configuration Debugger)
Configuration Debugger を起動して QSPI Flash のデバッグをおこなう流れを紹介します。
2-1. デバイスをコンフィグレーション
Configuration Debugger にて電圧を確認する際には、事前にデバイスをコンフィグレーションしておく必要があります。コンフィグレーションするデザインはどのようなデザインでも問題ありません。コンフィグレーション手順については下記の記事をご参照ください。
参考資料:Agilex 3 でやってみた ~ FPGA のコンフィグレーション
2-2. Configuration Debugger の起動
次に Configuration Debugger を起動します。Configuration Debugger は Quartus® Prime メニューバーの Tools -> Configuration Debugger から起動することができます。
[図 2] Configuration Debugger の起動
ポイント: ここでは Quartus® Prime から起動する方法をご紹介しましたが、Quartus Programmer からも起動することができます。Quartus Programmer から起動する際には Quartus Programmer メニューバーの Tools -> Configuration Debugger から起動することができます。
2-3. Hardware Setup と Load Device の設定
1) Configuration Debugger が起動したら、最初に [Hardware Setup] ボタンをクリックします。そうすると Hardware Setup という名前の GUI が起動します。
[図 3] Hardware Setup GUI の起動
2) Available hardware items に使用可能な Hardware がリストされます。今回は Atum A3 Nano を選択します。
[図 4] Hardware 選択前の状態
注記: もし Hardware が表示されない場合は、[Hardware Setup] ボタンをクリックして、数回再起動してみてください。
3) 正常に Hardware を選択することができると下図のように設定されます。
[図 5] Hardware 選択後の状態
4) 次に [Load Device] ボタンをクリックしデバイスを認識させます。正常にデバイスを認識すると下図のように型番が表示されます。この説明では [Load Device] ボタンをクリックすると下記型番が表示されます。
デバイス型番 : A3C(Y135BB18A|Z135BB18A)
[図 6] Load Device の実行
ポイント: JTAG チェーンに複数デバイスが含まれる場合、認識されるデバイスが複数になります。その場合はプルダウンで適切なデバイスを選択してください。
2-4. QSPI Flash のデバッグ
Configuration Debugger には用途別に複数のタブが存在しています。今回は QSPI Flash の確認をするため、Flash タブを選択します。
[図 7] Flash タブの選択
[Auto-detect] ボタンをクリックすると、QSPI Flash の情報(Manufacturer ID / Device ID)を読み取ることができます。
Manufacturer ID : 0x20 (MICRON)
Device ID (Memory type) : 0xBB (1.8V)
Device ID (Memory capacity) : 0x18 (128Mb)
※詳細情報につきましては QSPI Flash メモリベンダーのデータシートをご確認ください。
Flash タブ内には、用途に応じてさらに 3つのタブがあります。
- QSPI Flash タブ
- QSPI Controller and SFDP タブ
- Remote System Update タブ
1) QSPI Flash タブ
レジスタのリードライト、メモリのリードライト、イレースやプログラムを行います。
[図 7] Flash タブ内の QSPI Flash タブの選択
1-1) Register Read
OPECODE を設定して、レジスタ値をリードします。
例えば、SFDP シグネチャーのリード (0x5A) を行う場合は下の通りです。
[Read Registers] ボタンをクリックすると、メッセージウインドウに、 SFDP シグネチャーである 0x50444653 が表示されます。
[図 7] Flash タブ内の QSPI Flash タブでの Register Read
1-2) Memory Read/Write
メモリのリード/ライトをおこないます。
以下は、アドレス 0x0 番地から 8 word 分のメモリをリードする場合の例です。
[Read Memory] ボタンをクリックすると、メッセージウインドウにリードデータが表示されます。
[図 8] Flash タブ内の QSPI Flash タブでの Memory Read
以下は、アドレス 0x0 番地から 0x12345678 のデータをライトする場合の例です。
[Write Memory] ボタンをクリックすると、メッセージウインドウに実行結果の "Info: Operation done." が表示されます。
その後、Memory Read セクションで該当のアドレス(今回は 0x0)を設定して [Read Memory] ボタンをクリックすると、
リードデータがメッセージウインドウに表示され、正常にライトが実行されていたことが確認できます。
[図 9] Flash タブ内の QSPI Flash タブでの Memory Write & Memory Read
1-3) Erase
セクター単位で Erase を実行します。
Erase を実行するセクターアドレスとセクタ数を設定して、[Erase Sectors] ボタンをクリックすると Sector Erase が実行されます。
その後、Memory Reasd セクションで該当のアドレスを設定して(今回は 0x0)、 [Read Memory] ボタンをクリックすると、 メッセージウインドウにデータ (FFFFFFFF) が表示され、正常にイレースが実行されていることが確認できます。
[図 10] Flash タブ内の QSPI Flash タブでの Sector Erase & Memory Read
1-4) Program
rpd ファイルを使って QSPI Flash にプログラムを行います。
書き込みのスタートアドレスを指定し、rpd ファイルを設定して [Program RPD] ボタンをクリックします。
Please wait... のメッセージが表示され Configuration Debugger が一時的に 応答なし の状況になりますがそのまま待ちます。
[図 11] rpd ファイルの書き込み中
しばらくすると、rpd ファイルの書き込みが完了しメッセージウインドウにも表示されます。
[図 12] rpd ファイルの書き込み完了
2) QSPI Controller and SFDP タブ
Confroller Settings and SFDP Info セクションの [Read] ボタンをクリックすることで SFDP 情報を表示します。
変更する場合は QSPI Debugging セクションの [Active] ボタンをクリックします。
[図 13] QSPI Controller and SFDP タブ画面
例えばコマンドモードを QPI モードから SPI モードに変更する場合は、 Command Mode: (4-4-4) から (1-1-1) に変更します。
変更後は、[Submit] ボタンをクリックします。
[図 14] QSPI コマンドモード変更の例 : 変更前
Controller Settings and SFDP Info セクションの [Read] ボタンをクリックすると Command Mode が変更されていることが確認できます。
[図 15] QSPI コマンドモード変更の例 : 変更後
3) Remote System Update タブ
Remote System Update 用のアップデートデータの書き込みやステータスを確認することができます。
こちらについては、近日公開予定の 「Agilex 3 でやってみた ~ リモートシステムアップデートをやってみた~ハードウエアシーケンサー編~」 の記事をご確認ください。
[図 16] Remote System Update 画面
おわりに
Agilex™ 3 をはじめとする SDM 搭載デバイス(Agilex™ ファミリー / Stratix® 10)の SDM 機能を使用して ASx4 モードコンフィグレーションで接続している QSPI Flash のデバッグを JTAG 経由で Configuration Debugger を使用して行うことが可能です。
今回は Configuration Debugger を用いた QSPI FLash のデバッグに焦点を当ててご紹介しましたが、Configuration Debugger ではデバイス情報や電圧、温度などの情報も確認することができます。
これらの機能については、『Agilex™ 3 でやってみたシリーズ』 の別の記事で解説しておりますので、是非そちらも併せてご覧ください。
「Agilex™ 3 でやってみた」シリーズ一覧はこちら