はじめに
Altera® 社 FPGA を使用して、アクティブシリアル (AS) モードでコンフィグレーションを行う場合、アクティブシリアルモードに対応しているコンフィグレーションデバイスは 3rd ベンダーの QSPI-Flash を含め Altera® 社の Web ページに情報が公開されています。
(ご参考)Altera® 社 Web ページ (Table 4 - Supported Third Party Configuration Devices)
https://www.altera.com/design/guidance/configuration#intel-supported-configuration-devices
一方で、このリストに掲載されておらず、Quartus Prime Programmer に対応していない 3rd ベンダー製の QSPI-Flash も多くあります。
本記事では、Quartus Prime の 「Convert Programming File」 機能を使用し、Quartus Prime Programmer に未登録の QSPI-Flash を新規に登録し、アクティブシリアルモードでのコンフィグレーションを使用可能とするための方法について、GigaDevice 社のデバイスを例に、2部構成で説明します。
対象 FPGA:Cyclone V、Cyclone IV、Cyclone 10 LP など(Stratix 10、Agilex シリーズは除く)
第2部:xml 作成方法編
本ページでは新規 QSPI-Flash 登録における設定について、GigaDevice : GD25Q256EFIRR を例に説明します。
QSPI-Flash のデータシートから値を登録しますので、データシートをご準備ください。
※ GigaDevice : GD25Q256EFIRR データシートより該当項目を抜粋し掲載
Configuration Device の起動
• Convert Programming File を起動し、① の設定と赤枠ボタンをクリックします。
• Configuration Device タブ設定
<<new device>> をクリックし、右側項目の設定を行います。
Apply をクリックし、一旦保存します。
右側 Name 欄にオリジナル名が自動追加されたことを確認します。
※ 作成したパラメータを Programming flow template : にリストアップ項目として登録することも可能です。
その場合は、Save as template にチェックし、④ にオリジナル名と異なる名前を入れ、Apply をクリックします。
タブ設定
QSPI-Flash 初期化フロー設定を行います。
シーケンスの追加は、Actions: よりドラック・アンド・ドロップ、削除は該当部分を右クリックからの削除を選択。
必要に応じて独自の初期化フローにすることも可能。
該当部分をクリックしますと、右側に設定項目が表示されます。
QSPI-Flash のデータシートより、レジスタを確認し編集します。
GD25Q256E レジスタ構成
• Initialization タブ設定
・Data length: Manufacture ID, Memory Type ID, Capacity ID の長さを登録
・Hex を表すため、 "0x" を忘れずに
・Attempt count: 実行回数を定義
・Expected data mask: 無視するデータ値の登録
・Delay(us): コマンド直後に読出しなので "0"
書込み有効化
・Data: コマンド発行のみなので空
・Delay(us): コマンド発行のみなので "0"
Table 7. Status Register-SR No.3 への書き込み
・Data: 全て "0" を書き込み
・Delay(us): Write Status Register Cycle Time の Max 値を登録
Table 6. Status Register-SR No.2 への書き込み
・Data: Quad Enable を有効にするため、S9 レジスタを "1" に設定
・Delay(us): Write Status Register Cycle Time 値を登録
Table 5. Status Register-SR No.1 の確認
・Data length: レジスタサイズが 8bit なので "1" を登録
・Expected data: 設定されているはずの値を登録
・Attempt count: 実行回数を定義
・Delay(us): コマンド直後に読出しなので "0"
Table 7. Status Register-SR No.3 の確認
・Data length: レジスタサイズが 8bit なので "1" を登録
・Expected data: 設定されているはずの値を登録
・Attempt count: 実行回数を定義
・Delay(us): コマンド直後に読出しなので "0"
4 byte addressing の有効化
・Delay(us): コマンド直後に読出しなので "0"
Table 6. Status Register-SR No.2 の確認
・Data length: レジスタサイズが 8bit なので "1" を登録
・Expected data: 設定されているはずの値を登録
・Attempt count: 実行回数を定義
・Delay(us): コマンド直後に読出しなので "0"
• Program タブ設定
書込みシーケンス設定を行います。
ページ・プログラム・コマンドの発行
・Address: JIC(デフォルトのまま)
・Data: JIC(デフォルトのまま)
・Addressing mode (byte): "4" に設定(Initialization タブで設定済みなので)
・Delay(us): Page Programming Time 値を登録
• Erase タブ設定
消去シーケンス設定を行います。
64KB サイズの Block Erase コマンドの発行
・Address: JIC(デフォルトのまま)
・Erase size(byte): 65536 (64K byte) を登録
・Addressing mode (byte): "4" に設定(Initialization タブで設定済みなので)
・Delay(us): コマンド直後に実行なので "0"
Erase のステータスを確認
・Expected data: 読み込まれるはずの値を登録
・Attempt count: 実行回数を定義
・Delay(us): Attempt count 値と掛け合わせ、Bloack Erase Time を満たす
処理が終わっているかをステータスで確認
・Expected data: 読み込まれるはずの値を登録
・Attempt count: 実行回数を定義
• Verify/Blank-Check/Examine タブ設定
比較、消去済み確認、吸出しシーケンス設定を行います。
・Address: JIC(デフォルトのまま)
・Data length: JIC(デフォルトのまま)
・Expected data: JIC(デフォルトのまま)
・Expected data mask: JIC(デフォルトのまま)
・Addressing mode (byte): "4" に設定(Initialization タブで設定済みなので)
・Dummy clock cycle: コマンド直後に実行なので "0"
・Delay(us): コマンド直後に実行なので "0"
• Termination タブ設定
ターミネーション・シーケンス設定を行います。(4 byte addressing を抜けるかの設定)
今回はデフォルト設定のままにします。
全ての設定が終わりましたら、Apply をクリックし、設定を保存します。
以上で、xml ファイルを作成する作業は終了となります。
「はじめてみよう! Convert Programming File -3rd ベンダー製 QSPI-Flash の登録からコンフィグレーションまで- 第1部」 の 3) ② に戻り、設定を行ってください。
参考資料
Altera 社アプリケーションノート:AN 1013: Using Generic QSPI Flash on Control Block-Based Devices