インテル Stratix 10 CvP (プロトコル経由コンフィグレーション) 実装 ユーザーガイド
概要
Configuration via Protocol (CvP) は、 Arria® V、 Cyclone® V、 Stratix® V、 インテル® Arria® 10、 インテル® Stratix® 10、および インテル® Cyclone® 10 GXデバイスファミリーでサポートされているコンフィグレーション方式です。CvPコンフィグレーション手法では、別々のイメージがペリフェラル・ロジックとコアロジックに作成されます。ペリフェラル・イメージをローカルのコンフィグレーション・デバイスに保存し、コアイメージをホストメモリーに保存することで、システムコストを削減し、独自のコアイメージのセキュリティーを強化することができます。CvPでの Intel® FPGAファブリックのコンフィグレーションは、 PCI Express* ( PCIe* ) リンクによって行われ、使用できるのは、エンドポイント・バリアントに対してのみです。このドキュメントで説明するCvPコンフィグレーション方式は、 インテル® Stratix® 10デバイスファミリー向けです。
CvP 使用の利点
- コンフィグレーション・データを格納するローカル・フラッシュ・デバイスのサイズを小さくすることでシステムコストを削減します。最小のEPCQデバイスでも、すべての インテル® Stratix® 10 ペリフェラルイメージにとって十分な大きさがあります。
- FPGAのアップデートに、フラッシュの再プログラミングは必要ありません。
- ダイナミック・コアのアップデートを有効にするのに、システムの電源をオフにする必要はありません。CvPを使用すると、FPGAコア・ファブリックのアップデートが PCIe* リンクを介してできるので、ホストの再起動やFPGAフルチップの再初期化を行う必要がありません。
- コンフィグレーション用ソフトウェア・モデルがよりシンプルなものになります。スマートホストでは、 PCIe* プロトコルとアプリケーション・トポロジーを使用して、FPGAコア・ファブリックの初期化および更新を行います。
- デザインを迅速に更新することによって、アプリケーションの負荷が変更できます。
CvPシステム
- FPGAでは、コンフィグレーション・デバイスへの接続に、アクティブシリアルx4(高速モード)コンフィグレーション手法を使用します。
- CvPおよび他のアプリケーションでは、
PCIe*
Hard IPブロック(左下)を使用します。
-
インテル® Stratix® 10 FPGAの多くには、 PCI Express* 用のHard IPブロックが複数含まれています。CvPコンフィグレーション手法では、 PCIe* 各デバイスのHard IPブロック(左下)だけが使用可能です。これをエンドポイントとして設定する必要があります。
-
- 他の PCIe* Hard IPブロックは PCIe* アプリケーションには使用できますが、CvPに使用することはできません。
CvPモード
CvPコンフィグレーション手法では、以下のモードをサポートしています。
- CvP初期化モード
- CvP更新モード
CvP初期化モード
このモードでは、CvP PCIe* コアのコンフィグレーションを、FPGAのペリフェラル・イメージを使用し、オンボード・コンフィグレーション・デバイスを介して行います。その後、コア・ファブリックとすべてのGPIOのコンフィグレーションを PCIe* リンクを介して行います。
CvP初期化モードを使用する利点は次のとおりです。
- PCIe* ウェイクアップ時間の要件を満たします。
- コアイメージをホストメモリーに保存することでコストを削減します。
CvP更新モード
CvP更新モードでは、CvP PCIe* コア以外のデバイス全体をリコンフィグレーションします。これは、デバイスがフル・チップ・コンフィグレーションまたはCvP初期化を介してユーザーモードに入った後に行われます。その後のコアイメージの更新では、 PCIe* リンクを使用します(ペリフェラルはCvP更新中に変更してはいけません)。
CvP更新モードで使用するプロセスは、ルート・パーティションをブロックベースのデザインで再利用する際のものと同じです。これによってデバイス・ペリフェラルを再利用できます。
このモードを選択するのは、次のいずれかの理由でコアイメージを更新する場合です。
- コア・アルゴリズムのロジックブロックの変更
- リリースプロセスの一環としての標準的な更新
- 複雑なシステムの一部であるさまざまなコンポーネント用コア・プロセッシングのカスタマイズ
PCIe* バージョン | サポートされるCvPモード |
---|---|
Gen 1 / Gen 2 / Gen 3 | CvP初期化、CvP更新 |
CvPの制限および制約
- MemWRトランザクションだけが、ファブリック・コンフィグレーション・データのCvPデータレジスターへの書き込みに使用できます。 ConfigWRトランザクションはサポートされていません。
- CVP_CREDIT ビットのポーリングをCvPクレジットレジスターから行うとき、次の4KBのファブリック・コンフィグレーション・データのCvPデータレジスターへの書き込みは、追加のクレジットを受け取ってから50ms以内に行ってください。データの送信が正常に行われないと、コンフィグレーションが正常に行われません。
- CvP応答時間は可変であり、さまざまな条件によって異なります。典型的な遅延時間は5秒ですが、1分まで待つのが安全です。したがって、ドライバーでは、クレジットレジスターのステータスをポーリングするために、ドライバーのタイムアウトを決定してください。
- CvP初期化および更新モードでは、FPGAファブリックがプログラムされていない場合、FPGAファブリックを使用する PCIe* 機能にはアクセスできません。
- 更新イメージの生成をCvP更新モードで行うには、ベースイメージの生成に使用するのと同じバージョンの インテル® Quartus® Prime開発ソフトウェアを使用してください。
CvPエラーの回復
エラーイベント | 推奨される回復方法 |
---|---|
ビットストリームが最初の168KBのデータ内で破損。 | CvPステータスレジスターの CVP_CONFIG_ERROR ビットがHighになります。ティアダウン・シーケンスを実行してから、別のビットストリームを送信してください。 |
ビットストリームが最初の168KBのデータ内で破損。 | CvPステータスレジスターの CVP_CONFIG_ERROR ビットがHighになります。システムを回復するには、ターゲットの インテル® Stratix® 10デバイスの電源を入れ直してください。 |
PCIe* CvP中のバスエラー | システムは回復不能です。システムの電源を入れ直してください。 |
PCIe* バスエラーの発生の結果、PERSTアサートが発生。 | システムは回復不能です。システムの電源を入れ直してください。 |
CvP動作の中止要求 | サポートされていません。CvP動作要求後のコンフィグレーションの中止はサポートされていません。 Intel® ではシステムの電源を入れ直すことをお勧めします。 |
ビットストリームは、 インテル® Quartus® Primeバージョンで提供されたものであり、デバイスで実行中のコンフィグレーション・ファームウェアの生成に使用されたものではない。 | CvPステータスレジスターの CVP_CONFIG_ERROR ビットがHighになります。ティアダウン・シーケンスを実行してから、別のビットストリームを送信してください。異なるQuartusバージョンからのビットストリームのミキシングはサポートされていません。 |
CvPの説明
コンフィグレーション・イメージ
CvPでは、ビットストリームを分割してペリフェラル・イメージとコアイメージの2つのイメージにします。
- ペリフェラル・イメージ (*.periph.jic) - ペリフェラルすべてが含まれます。ペリフェラル・イメージ全体はスタティックであり、リコンフィグレーションすることはできません。
- コアイメージ (*.core.rbf) - デザインのすべてのコア・コンポーネントが含まれます。
CvPモード
CvP初期化モード
このモードでは、外部コンフィグレーション・デバイスでペリフェラル・イメージを保存し、そのイメージのFPGAへのロードには、アクティブシリアルx4(Fastモード)コンフィグレーション手法を使用します。ホストメモリーではコアイメージを保存し、そのイメージは、 PCIe* リンクを介してFPGAにロードされます。
ペリフェラル・イメージのコンフィグレーションが完了すると、 CONF_DONE 信号がHighになり、FPGAによって PCIe* リンク・トレーニングが開始されます。 PCIe* リンク・トレーニングが完了すると、 PCIe* リンクはL0状態に移行し、次にホストで PCIe* リンクの列挙が完了できるようにします。その後 PCIe* ホストでは、 PCIe* リンクを介したコアイメージのコンフィグレーションを開始します。 PCIe* REFCLKは、ペリフェラル・イメージの送信前に実行してください。
コアイメージのコンフィグレーションが完了すると、 CvP_CONFDONE ピン(有効になっている場合)がHighになり、FPGAが完全にコンフィグレーションされたことを示します。
FPGAが完全にコンフィグレーションされると、FPGAはユーザーモードに入ります。 INIT_DONE 信号が有効な場合、 INIT_DONE 信号がHighになるのは、初期化が完了し、FPGAがユーザーモードに入った後です。
ユーザーモードの場合、 PCIe* リンクは一般的な PCIe* アプリケーションで利用可能です。
CvP更新モード
CvP更新モードは、リコンフィグレーション方式の1つです。CvP更新モードでは、ホストデバイスによって更新ビットストリームをターゲットのFPGAデバイスへ送信することが可能になります。これは、デバイスがユーザーモードに入った後に行われます。CvP更新モードでFPGAデバイスの初期化を実行するには、完全なコンフィグレーション・イメージを外部ローカル・コンフィグレーション・デバイスからFPGAにロードします。もしくはCvP初期化の後に行います。
最初にコンフィグレーションしたデバイスでCvP初期化を実行するには、CvP初期化または他のコンフィグレーション手法を使用します。 CvP初期化は、CvP更新を実行するための前提条件ではありません。
ユーザーモードのとき、 PCIe* リンクは一般的な PCIe* アプリケーションで利用可能です。CvP PCIe* リンクを使用して、FPGAコアイメージの更新を実行します。FPGAコアイメージの更新を実行するために、1つ以上のFPGAコアイメージをペリフェラル・イメージと同じ接続を持つ インテル® Quartus® Primeプロ・エディション開発ソフトウェア内に作成します。
圧縮機能
データ圧縮
インテル® Quartus® Primeプロ・エディション開発ソフトウェアでは、すべての インテル® Stratix® 10ビットストリームを圧縮してストレージ要件を軽減し、ビットストリームの処理速度を向上させます。ペリフェラル・イメージとコアイメージは両方とも圧縮されます。
ピンの説明
ピン名 | ピンタイプ | ピンの説明 | ピン接続 |
---|---|---|---|
CvP_CONFDONE | 出力 |
CvP_CONFDONE ピンは、コンフィグレーション中にLowで駆動されます。
PCIe*
が完了すると、この信号は積極的にHighに駆動されます。 CvP初期化および更新モードでのFPGAコンフィグレーション中、 CONF_DONE がHighになった後にこのピンを観察して、FPGAが正常にコンフィグレーションされたか判別できます。 |
このピンが専用出力として設定されている場合、 VCCIO_SDM 電源装置では受信側の入力電圧仕様を満たしている必要があります。 SDM_IO0、SDM_IO10、SDM_IO11、SDM_IO12、SDM_IO13、SDM_IO14、SDM_IO15またはSDM_IO16を CvP_CONFDONE として インテル® Quartus® Primeプロ・エディション開発ソフトウェアで割り当てます。 |
INIT_DONE | 出力 | INIT_DONE ピンがHighになり、デバイスがコンフィグレーション完了時にユーザーモードに入ったことを示します。 | インテルでは、 SDM_IO0 ピンを使用して、 INIT_DONE 機能を実装することをお勧めします。条件は、
インテル®
Quartus® Primeプロ・エディション開発ソフトウェアでこの機能が有効になっていることです。このピンの弱いプルダウンは、電源投入中の適切な機能のためです。 INIT_DONE 機能の実装には、他の未使用のSDM I/Oピン (弱いプルダウン) を使用することもできます。 |
CONF_DONE | 出力 |
通常のコンフィグレーション・モードでは、CONF_DONE ピンはコンフィグレーションの前後にLowで駆動されます。すべてのコンフィグレーション・データがエラーなしで受信され、初期化サイクルが開始すると、 CONF_DONE はHighに駆動されます。 In CvP初期化モードでは、CONF_DONE はペリフェラルのコンフィグレーション後にHighになります。 |
インテルでは、 SDM_IO16 ピンを使用して、 CONF_DONE 機能を実装することをお勧めします。条件は、 インテル® Quartus® Primeプロ・エディション開発ソフトウェアでこの機能が有効になっていることです。 |
nPERST[L,R][0:2] | 入力 |
nPERSTピンが使用可能なのは、
PCI Express*
ハードIPを使用している場合のみです。 左または右側の PCIe* ハードIPが有効になっている場合、該当する側のnPERSTピンは汎用I/O (GPIO) としては使用できません。この場合、nPERSTピンをシステム PCIe* nPERST信号に接続し、リンクの両端でリンク・トレーニングが同時に開始するようにします。 一方の側のnPERSTピンがGPIOとして使用できるのは、その側の PCIe* ハードIPが有効になっていない場合にのみです。 このピンがLowの場合、トランシーバーはリセット状態です。このピンがHighの場合、トランシーバーはリセット状態にはなりません。 このピンを基本リセットとして使用しない場合は、ユーザーのI/Oピンとして使用できます。 |
このピンの接続を
インテル®
Quartus® Primeプロ・エディション開発ソフトウェアの定義通りに行います。詳細については、
インテル®
Stratix® 10
Avalon®
-MM/ST Interface
for
PCIe*
Solutions User
Guideを参照してください。 このピンの電力は、 VCCIO3V によって供給されます。 3.0V電源を VCCIO3V に接続する場合は、ダイオードを使用して 3.3V LVTTL PCIe* 入力信号をデバイスのVCCIO3V 電源にクランプしてください。 VCCIO3Vが3.0V以外の電圧に接続されている場合は、レベル・トランスレーターを使用して、電圧を3.3V LVTTL からシフトダウンし、 VCCIO3V ピンに給電している対応電圧レベルにする必要があります。
nPERST ピンは、
PCIe*
ハードIP1つにつき1つだけが使用されます。
インテル®
Stratix® 10デバイス・コンポーネントでは、特定のコンポーネントには1つまたは2つの
PCIe*
ハードIPしか含まれていない場合でも、6つのピンがすべてリストされていることがあります。
注: 最大限の互換性のために、常に左下の
PCIe*
ハードIPを最初に使用して下さい。この場所でのみ
PCIe*
リンクを使用したプロトコル経由コンフィグレーション (CvP) がサポートされています。
|
CvPトポロジー
シングル・エンドポイント
シングル・エンドポイント・トポロジーを使用して、単一のFPGAをコンフィグレーションします。このトポロジーでは、 PCIe* リンクによって、FPGAデバイス内の PCIe* エンドポイントをホスト内の1つの PCIe* ルートポートに接続します。
複数のエンドポイント
複数のエンドポイント・トポロジーを使用し、複数のFPGAのコンフィグレーションを PCIe* スイッチを介して行います。このトポロジーによって、コンフィグレーションするデバイスの選択や、 PCIe* リンクを介した更新が柔軟にできるようになります。このトポロジーでは、任意の数のFPGAをホストに接続できます。
PCIe* スイッチによって、コアイメージのコンフィグレーションが制御されます。これには、FPGA内のターゲットの PCIe* エンドポイントへの PCIe* リンクが使用されます。ルートポートが PCIe* スイッチに応答し、コンフィグレーション・トランザクションがエンドポイント(エンドポイントのバス/デバイス/機能のアドレスに基いて PCIe* スイッチで指定)に向けられていることを確認してください。
デザインの考慮事項
オープンシステム用CvPのデザイン
PCIe* リンクの両端を完全に制御できないオープンCvPシステムをデザインする際は、次のガイドラインに従ってください。
FPGA電源ランプ時間要件
オープンシステムでは、デザインがFPGA電源の立ち上げ時間要件に準拠していることを確認してください。
パワー・オン・リセット (POR) 回路でFPGAがリセット状態に保たれるのは、電源出力が推奨動作範囲に達するまでの間です。PORイベントが発生するのは、FPGAの電源投入時から、電源供給が最大電源ランプ時間 tRAMP 内で推奨動作範囲に達するまでの間です。tRAMP が満たされない場合は、デバイスのI/Oピンとプログラミング・レジスターはトライステートのままです。その間はデバイスのコンフィグレーションが正常に行われないことがあります。
CvPの PCIe* リンクアップ時間を満たすための合計tRAMP は、最初の電源供給ランプアップから最後の電源供給ランプアップまでが10ms未満でなければなりません。MSEL設定でASx4高速モードを選択して、最短のPOR遅延を確保してください。
PCIe ウェイクアップ時間要件
オープンシステムでは、 PCI Express* CARD Electromechanical Specification PCIe* で規定されているように、 PCIe* リンクでウェイクアップ時間の要件が満たされていることを確認してください。 PCIe* ウェイクアップのタイミング仕様の電源投入からリンクアクティブ (L0) ステートへの移行は、200 ms以内でなければなりません。FPGAの電源投入からFPGA内の PCI Express* IPコアのHard IPでリンク・トレーニングの準備ができるまでのタイミングは、120 ms以内でなければなりません。
CvP初期化モードの場合
CvP初期化モードの PCIe* Hard IPに対する120 msのウェイクアップ時間要件を満たすためには、ペリフェラル・イメージを使用する必要があります。これは、ペリフェラル・イメージのコンフィグレーション時間がFPGAコンフィグレーション時間全体よりも大幅に短いためです。ペリフェラル・イメージのコンフィグレーションには、アクティブシリアルx4(高速モード)コンフィグレーション手法を使用してください。
正常なコンフィグレーションのために、PORで監視されるすべての電源供給では、動作範囲までの単調なランプアップが10 msのランプアップ時間内で行われなければなりません。PERST# 信号は、FPGA電源供給が指定電圧許容値内にあり、 REFCLK が安定していることを示します。1エンベデッド・ハード・リセット・コントローラーは、内部ステータス信号によってペリフェラル・イメージがロードされた後にトリガーされます。このリセットではPERST#はトリガーされません。CvP初期化モードに対して PCIe* リンクでは、FPGAコアイメージのコンフィグレーションおよび後続の PCIe* アプリケーションをユーザーモードでサポートしています。
タイミングシーケンス | タイミング範囲 (ms) | 詳細 |
---|---|---|
a | 2-6.5 | FPGAのPOR遅延時間 (AS Fastモード) |
b | 80 | FPGAの電源投入からCvP初期化モードでのペリフェラル・コンフィグレーション終了までの最大時間(トランシーバーのキャリブレーション前) |
c | 20 | PERST#デアサート前の最短キャリブレーション時間 |
d | 60 | 最小トランシーバー・キャリブレーション・ウィンドウ |
e | 80 | 一般的なトランシーバー・キャリブレーション・ウィンドウ |
f | 100 | ホストからの最小アクティブ PERST# 信号 |
g | 120 | FPGAの電源投入からCvP初期化モードでのペリフェラル・コンフィグレーション終了までの最大時間(トランシーバのキャリブレーションを含む) |
h | 20 | PCIe* リンクがトレーニング状態に入る前のホストからのPERST# 信号の最大非アクティブ時間 |
i | 100 |
PCIe*
デバイスが PERST# のデアサート後 注: L0に入らなければいけない最大時間。100 msのタイミング範囲は、
PCIe*
Gen1/Gen2のみに適用されます。
PCIe*
Gen 3では100 msのタイミング要件を満たす必要はありません。
|
j | 10 | FPGA内のすべてのPOR監視電源供給がそれぞれの動作範囲に達するための最大立ち上がり時間要件 |
CvP更新モード
CvP更新モードの実行前に、デバイスではユーザーモードになっている必要があります。
クローズドシステム用CvPのデザイン
PCIe* リンクの両端を制御するクローズドシステム用にCvPをデザインする際には、CvP初期化モードのペリフェラル・コンフィグレーション時間、CvP更新モードのFPGAのフル・コンフィグレーション時間を推定します。推定コンフィグレーション時間は、 PCIe* ホストによって許容される時間内であることを確認してください。ドライバーでは、CvPステータスレジスターの USERMODE ビットをポーリングし、FPGAがユーザーモードに入るかどうかを判定できます。
CvPドライバーおよびレジスター
CvPドライバーのサポート
Linux用にカスタムCvPドライバーを開発することができます。これには、Intelで提供しているLinuxドライバーのサンプル・ソースコードを使用します。
Intel® で提供しているLinuxドライバーはプロダクション・ドライバーではありません。このドライバーをデザイン方法に適応させてください。
CvPドライバーのフロー
CvP用VSECレジスター
Vendor Specific Extended Capability (VSEC) レジスターによって、 PCIe* コンフィグレーション・スペースのバイトオフセット0xB80〜0xBC0が占有されます。 PCIe* ホストでは、これらのレジスターを使用してFPGAコントロール・ブロックと通信します。次の表に示すのは、VSECのレジスターマップです。後続の表で示すのは、各レジスターのフィールドと説明です。
バイトオフセット | レジスター名 |
---|---|
0xB80 | Vendor Specific Capability Header |
0xB84 | Vendor Specific Header |
0xB88 | Intel Marker |
0xB8C:0xB98 | 予約済み。 |
0xB9C | User Configurable Device/Board ID |
0xB9E | CvP Status |
0xBA0 | CvP Mode Control |
0xBA4 | CvP Data 22 |
0xBA8 | CvP Data |
0xBAC | CvP Programming Control |
0xBB0:0xBC4 | 予約済み。 |
0xBC8 | CvP Credit Register |
Vendor Specific Capability Headerレジスター
ビット | レジスター名 | リセット値 | アクセス | 詳細 |
---|---|---|---|---|
[15:0] | PCI Express* Extended Capability ID | 0x000B | RO | VSEC Capability IDの PCIe* の仕様定義値 |
[19:16] | バージョン | 0x1 | RO | VSECバージョンの PCIe* の仕様定義値 |
[31:20] | Next Capability Offset | 可変 | RO | 実装される次のCapability Structureがある場合、その開始アドレス |
Vendor Specific Headerレジスター
ビット | レジスター名 | リセット値 | アクセス | 詳細 |
---|---|---|---|---|
[15:0] | VSEC ID | 0x1172 | RO | ユーザーによるコンフィグレーションが可能なVSEC ID |
[19:16] | VSEC Revision | 0 | RO | ユーザーによるコンフィグレーションが可能なVSECリビジョン |
[31:20] | VSEC Length | 0x05C | RO | このストラクチャーの全長(バイト単位) |
Intel Markerレジスター
ビット | レジスター名 | リセット値 | アクセス | 詳細 |
---|---|---|---|---|
[31:0] | Intel Marker | 0x41721172 | RO | 追加のマーカー |
User Configurable Device/Board IDレジスター
ビット | レジスター名 | リセット値 | アクセス | 詳細 |
---|---|---|---|---|
[15:0] | User Configurable Device/Board ID | 0x00 | RO | ユーザーによる正しいプログラミング・ファイルの選択の手助けをします。 |
CvP Statusレジスター
ビット | レジスター名 | リセット値 | アクセス | 詳細 |
---|---|---|---|---|
[15:11] | — | 可変 | RO | 予約済み。 |
[10] | CVP_CONFIG_SUCCESS | 可変 | RO | デバイスによって設定されるステータスビット。コアイメージのコンフィグレーションが正常に行われたことを示します。 |
9 | — | 可変 | RO | 予約済み。 |
[8] | PLD_CLK_IN_USE | 可変 | RO |
クロック・スイッチ・モジュールからファブリックまで。このビットはデバッグに使用できます。 |
[7] | CVP_CONFIG_DONE | 可変 | RO |
デバイスでCvPを介したデバイス設定が完了し、エラーがなかったことを示します。 |
[6] | — | 可変 | RO | 予約済み。 |
[5] | USERMODE | 可変 | RO | コンフィグレーション可能なFPGAファブリックがユーザーモードにあるかを示します。 |
[4] | CVP_EN | 可変 | RO | デバイスでCvPモードが有効になっているかを示します。 |
[3] | CVP_CONFIG_ERROR | 可変 | RO | デバイスからのこの信号の値を反映します。ソフトウェアによるチェックで、コンフィグレーション中のエラーの発生を判定します。 |
[2] | CVP_CONFIG_READY | 0x0 | RO |
デバイスからのこの信号の値を反映します。プログラミング・アルゴリズム実行中のソフトウェアによるチェックで、デバイスでコンフィグレーションの準備が整ったことを判定します。 |
[1:0] | — | 可変 | RO | 予約済み。 |
CvP Mode Controlレジスター
ビット | レジスター名 | リセット値 | アクセス | 詳細 |
---|---|---|---|---|
[31:3] | — | 0x0000 | RO | 予約済み。 |
[2] | — | 0x0000 | RW | 予約済み。3 |
[1] | PLD_DISABLE | 1'b0 | RW/RO | PLDインターフェイスを有効/無効にします。これにより、ホストドライバーでは、USER
MODEのデアサート前にPLDインターフェイスを切り替え、USER
MODEのアサート後にPLDインターフェイスを元に戻すことができます。これは、USER
MODE切り替え中のグリッチや競合状態を防ぐのに役立ちます。
|
[0] | CVP_MODE | 1'b0 | RW | PCI ExpressのHard IPがCVP_MODEか通常モードかを制御します。
|
CvP Dataレジスター
ビット | パラメーター名 | リセット値 | アクセス | 詳細 |
---|---|---|---|---|
[31:0] | CVP_DATA | 0x00000000 | RW | コンフィグレーション・データをこのレジスターに書き込みます。データはSDMに転送され、デバイスをコンフィグレーションします。 ソフトウェアでは、メモリー書き込みダブルワード内のすべてのバイトが有効になっていることを確認する必要があります。 このレジスターへのアクセスには、コンフィグレーション書き込みを使用します。CvPモードのときは、このレジスターの書き込みにメモリー書き込みを使用することもできます。書き込み先は、このデバイスのメモリースペースBARによって定義された任意のアドレスです。メモリー書き込みの使用は、コンフィグレーション書き込みよりも高いスループットになります。 |
CvP Programming Controlレジスター
ビット | レジスター名 | リセット値 | アクセス | 詳細 |
---|---|---|---|---|
[31:2] | — | 0x0000 | RO | 予約済み。 |
[1] | START_XFER | 1'b0 | RW | CvP出力をFPGAコントロール・ブロックに設定して、転送の開始を示します。 |
[0] | CVP_CONFIG | 1'b0 | RW | 1に設定すると、FPGAコントロール・ブロックではCvPを介して転送が開始されます。 |
CvP Creditレジスター
ビット | リセット値 | アクセス | 詳細 |
---|---|---|---|
[31:16] | 0x00 | RO | 予約済み。 |
[15:8] | 0x00 | RO | 付与された4kクレジットの合計数のうちの最下位8ビット。 |
[7:0] | 0x00 | RO | 予約済み。 |
インテル Stratix 10の初期化モードおよび更新モードのデザイン手順について
CvP初期化モードの実装
CvP初期化モードでは、ビットストリームをペリフェラル・イメージとコアイメージに分割します。ペリフェラル・イメージは、PCB上のローカル・フラッシュ・デバイスに格納されます。コアイメージはホストメモリーに格納されます。コアイメージをFPGAにダウンロードするには、PCI Expressリンクを使用してください。
PCI Express用 Avalon -ST インテル Stratix 10 Hard IPの合成HDLファイルの作成
- インテル® Quartus® Primeプロ・エディション開発ソフトウェアを開きます。
- Tools メニューで Platform Designer をクリックします。Open Systemウィンドウが表示されます。
- Systemで+をクリックしてFile Nameを指定し、新しいプラットフォーム・デザイナー・システムを作成します。Createをクリックします。
- System Contentsタブで、デフォルトで表示されているclock_in および reset_in コンポーネントを削除します。
- IP Catalogで Avalon® -ST インテル® Stratix® 10 Hard IP for PCI Expressを探してダブルクリックします。新しいウィンドウが表示されます。
- IP Settingsタブで、デザイン・バリエーションのパラメーターおよびオプションを指定します。
- Example DesignsタブでSimulationオプションを選択してテストベンチを生成し、Synthesisオプションを選択して、ハードウェアデザインの例を生成します。
- Generated file formatにはVerilogのみが使用できます。
- Target Development Kitには希望のボードを選択してください。
- Generate Example Designボタンをクリックします。Select Example Design Directoryダイアログボックスが表示されます。OKをクリックします。ソフトウェアによって インテル® Quartus® PrimePCI Expressリファレンス・デザインのプロジェクト・ファイルが生成されます。生成が完了したらCloseをクリックします。デザイン例 pcie_s10_hip_ast_0_example_design がプロジェクト・ディレクトリーに作成されます。
- Finishをクリックします。現在のプロジェクトを終了して、生成されたPCI Expressデザイン例 (pcie_example_design.qpf) を開きます。
- CvPデザインを完成させるために、希望のトップレベル・デザインとその他の必要なモジュールを追加します。ピン・アサインメントについては、ユーザーによって前もって指定されたターゲットの開発キットに基づいて、すでに正しく割り当てられています。
もしくは、 インテル® Stratix® 10CvP初期化リファレンス・デザイン全部を下記のリンクからダウンロードすることもできます。
Device and Pin OptionsでのCvPパラメーターの設定
- インテル® Quartus® Prime AssignmentメニューでDeviceを選択し、Device and Pin Optionsをクリックします。
-
CategoryでConfigurationを選択し、次のオプションを有効にします。
- Configurationでアクティブシリアルx4(Configuration Deviceが使用可能)を選択します。
- Use configuration deviceでEPCQL1024を選択します。
-
Configuration pinでConfiguration Pin Optionsをクリックし、その後、USE CONF_DONE outputおよびUSE CVP_CONFDONE outputをオンにします。OKをクリックします。図 9. ConfigurationタブのCvPパラメーター
-
CategoryでCvP Settingsを選択してCvP設定を指定します。 Configuration via ProtocolでInitialization and updateオプションを選択します。OKをクリックします。図 10. CvP Settings タブのCvPパラメーター
- OKをクリックします。
デザインのコンパイル
デザインをコンパイルするには、ProcessingメニューのStart Compilationをクリックし、 .sof ファイルを作成します。
SOFファイルの変換
- .sof ファイルが生成されたら、FileメニューのConvert Programming Filesを選択します。新しいウィンドウが表示されます。
-
Output programming fileセクションで、次のパラメーターを指定します。
表 15. パラメーター: Output Programming Fileタブ パラメーター 値 Programming file type JTAG Indirect Configuration File (.jic) Configuration device EPCQL1024 Mode Active Serial x4 File name cvp_init.jic Create Memory Map File (Generate output_file.map) このオプションをオンにします。 Create CvP files (Generate cvp_init.periph.jic and cvp_init.core.rbf) このオプションをオンにします。このオプションは、SOF Data ファイルをInput files to convertで指定した場合にのみ使用できます。 注: Create CvP filesオプションは必ずオンにしてください。このオプションを選択しないと、 インテル® Quartus® Prime開発ソフトウェアでは、ペリフェラル・イメージとコアイメージに別々のファイルが作成されません。 -
Input files to convertで 、次のパラメーターを指定します。
表 16. パラメーター: Input Files to Convert タブ パラメーター Value Flash Loader 最初にFlash Loaderをクリックします。Add Deviceをクリックし、Device familyでStratix 10を選択し、 Device nameで1SG280LU3F50S1を選択します。OKをクリックします。 SOF Data 最初にSOF Dataをクリックします。 Add File をクリックし、*.sof を選択します。 図 11. Convert Programming File GUIでの上記の指定オプションの図解 - Generateをクリックして *.periph.jic および *.core.rbf ファイルを作成します。
ハードウェアの立ち上げ
- インテル® Stratix® 10 FPGA開発キット
- インテル® FPGA ダウンロード・ケーブル
- FPGA開発キットにプラグインするPCI Expressスロットを備えるDUT PC
- インテル® Quartus® Prime開発ソフトウェアを実行し、ペリフェラル・イメージ、 .sof または .pof ファイルをプログラムするPC
オープンソースCvPドライバーのLinuxシステムへのインストール
- CvP DriverからオープンソースのLinux CvPドライバーをダウンロードします。
- ドライバー・ディレクトリーに移動します。
- ドライブを解凍するために次のコマンドを入力します。
tar -zxvf <driver>.gz
- インストールを実行するために次のコマンドを入力します。
sudo make sudo make install
- インストールが正常に完了すると、 altera_cvp ファイルが /dev/altera_cvp ディレクトリーに生成されます。
インテル Stratix 10 FPGA開発キットのMSEL/DIPスイッチの変更
コンフィグレーション手法 | MSEL[2..0] |
---|---|
AS(CvP用Fastモード) 5 | 001 |
CvPイメージのプログラミング
ペリフェラル・イメージ (.periph.jic) をASコンフィグレーション・デバイスにプログラムしてから、コアイメージ (.core.rbf) のダウンロードをPCIeリンクを使用して行ってください。アクティブシリアルx4(Fastモード)を使用して、 .periph.jic をロードします。ロード先は、CvP初期化が有効になっているユーザー選択の インテル® Stratix® 10デバイスです。
ペリフェラル・イメージのロード後、 インテル® Stratix® 10がトリガーされ、ASからリコンフィグレーションしてペリフェラル・イメージをロードします。リンクは、予想されるデータレートとリンク幅に達するはずです。PCIeリンクステータスを確認するためにRW Utilitiesを使用します。次の手順に従ってCvP機能のプログラムおよびテストを行います。
- インテル® Stratix® 10 FPGA開発キットをDUT PCのPCI Expressスロットに接続し、電源を入れます。開発キットに含まれているATX電源を使用することをお勧めします。
- インテル® Quartus® Prime ToolsメニューからProgrammerを選択します。
- Auto Detect をクリックして、 インテル® FPGA ダウンロード・ケーブルによって インテル® Stratix® 10 FPGAが認識されていることを確認します。
-
次の手順に従ってペリフェラル・イメージをプログラムします。
- Stratix 10デバイスを選択してから、File列のNoneを右クリックしてChange Fileを選択します。
- .periph.jic ファイルに移動し、Openをクリックします。
- Program/Configure列でそれぞれのデバイスを選択します。例えば、1SG280LU3S1とEPCQL1024です。
- Startをクリックしてペリフェラル・イメージをEPCQL1024フラッシュにプログラムします。
図 12. ペリフェラル・イメージのプログラミング用指定オプションの図解 - .periic.jic のプログラム後、FPGAの電源を入れ直して、新しいペリフェラル・イメージをオンボードフラッシュからFPGAにロードできるようにします。DUT PCによる新しいイメージリンクの再列挙を強制するには、DUT PCおよび インテル® Stratix® 10 FPGA開発キットの電源を入れ直します。
- RWユーティリティーまたは他のシステム・ソフトウェア・ドライバーを使用してリンクステータスを確認します。予想リンク速度と幅も確認できます。
-
次の手順に従ってコアイメージをプログラムします。
- .core.rbf ファイルを作業ディレクトリーにコピーします。
- Linuxでコンソールを開きます。ディレクトリーを上記と同じ、ファイルのコピー先に変更します。
- コアイメージをプログラムするために、次のコマンドを入力します。 cp *.core.rbf /dev/altera_cvp
- コアイメージが インテル® Stratix® 10 FPGA開発キットで実行されていることが確認できます。もしくは、 dmesg を使用してカーネルメッセージを印刷し、CvPが正常に完了したことを確認します。
CvP更新モードの実装
このモードを インテル® Quartus® Primeプロ・エディション開発ソフトウェアで指定するために、CvP設定のInitialization and Updateを選択します。次の図ではCvP更新モードの概要を示します。
PCIe Hard IPのインスタンス化
CvPパラメーターの設定
CvPパラメーターをDevice and Pinオプションで指定するには、Device and Pin OptionsでのCvPパラメーターの設定 の項の手順に従います。
ベースリビジョンの設定
予約済みコア・パーティションの作成
- デザイン階層のエラボレートには、Processing > Start > Analysis&Synthesisをクリックします。
-
Project Navigatorでインスタンスを右クリックし、Design Partition > Set as Design Partitionをクリックします。デザイン・パーティションのアイコンが、割り当てた各インスタンスの横に表示されます。
図 14. Project Navigatorでのデザイン・パーティションの作成この設定は、 .qsf 内の次のアサインメントに対応しています。
set_instance_assignment -name PARTITION <name> \ -to <partition hierarchical path>
-
パーティションを定義するときは、Periphery Reuse CoreをパーティションのTypeとして選択します。他のすべてのパーティション・オプションがデフォルト値に設定されていることを確認します。
この設定は、 .qsf 内の次のアサインメントに対応しています。
set_instance_assignment -name RESERVED CORE ON -to \ <partition hierarchical path>
-
最終スタティック領域をこのベース・リビジョン・コンパイルからエクスポートし、後続のCvP更新リビジョンコンパイルで使用するには、Post Final Export Fileセルで、root_partitionのエントリーをダブルクリックし、root_partition.qdbと入力します。
図 15. Design Partitionsウィンドウこの設定は、 .qsf 内の次のアサインメントに対応しています。
set_instance_assignment -name EXPORT_PARTITION_SNAPSHOT_FINAL \ root_partition -to | -entity top
ロジックロック領域の定義
次の手順を実行して、コアのベースリビジョンのLogic Lock領域を定義します。
-
Project Navigatorでデザイン・インスタンスを右クリックし、
Logic Lock Region > Create New Logic Lock Regionをクリックします。領域がLogic Lock Regionsウィンドウに表示されます。また、Chip Plannerで領域を確認することもできます。 (Locate Node > Locate in Chip Planner)
図 16. Project NavigatorでのLogic Lock Regionの作成
- [Logic Lock RegionsウィンドウのOrigin列で、Width、Height、および配置領域の座標を指定します。
- ReservedおよびCore-Onlyオプションを有効にします。
- Size/StateでFixed/Lockedを選択します。
-
Routing Regionセルをダブルクリックします。
Logic Lock Routing Region Settingsダイアログボックスが表示されます。
- Fixed with expansionでExpansion Lengthを1としてRouting Typeに指定します。
- OKをクリックします。
- File > Save Projectをクリックします。
ルート・パーティションのコンパイルとエクスポート
- ベースリビジョンをコンパイルするには、 Processing > Start Compilationをクリックします。
- ベースリビジョンでは、エクスポートされた .qdb ファイルと、オプションで .sdc ファイルを提供し、新しいリビジョンでコアを再利用します。
更新リビジョンの設定とコンパイル
次の手順を実行して更新リビジョンの作成およびコンパイルを行います。
- 新しいリビジョンを作成するには、Project > Revisionsをクリックします。
- 新しいRevisionウィンドウが表示されます。新しいリビジョンを作成するには、<<new revision>>をダブルクリックします。
- リビジョン名をRevision nameフィールドで指定します。
- Revision Typeにsame as Base revisionを選択します。
-
This project uses a Partition
Database (.qdb) file for the root partitionを有効にします。この設定はDesign Partitionsウィンドウにも表示されます。
図 17. Creating Revisions
-
デザイン・パーティション・ウィンドウでエンティティー再バインド割り当てを使用し、予約されたコア・パーティションに関連付けられているロジックを変更します。
たとえば、まず red_led を予約済みコア・パーティション内のロジックとして使用します。ここで、 red_led ロジックから green_led への変更をエンティティーの再バインドを介して行います。これにより、 red_led インスタンスが green_led インスタンスに置き換えられます。
インテル® Quartus® Primeプロジェクトに、 インテル® Quartus® Primeの更新されたReserved Coreパーティション・ロジックに関連するソースファイルが含まれていることを確認してください。 - コンパイルを実行するには、Processing > Start Compilationをクリックします。
更新版SOFファイルの変換
- File メニューでConvert Programming Filesを選択します。
-
Output programming fileセクションで次のパラメーターを指定します。
表 18. パラメーター: Output Programming Fileタブ パラメーター 値 Programming file type JTAG Indirect Configuration File (.jic) Configuration device EPCQL1024 Mode Active Serial x4 File name cvp_init.jic Create Memory Map File (Generate output_file.map) このオプションをオンにしてください。 Create CvP files (Generate cvp_init.periph.jic and cvp_init.core.rbf) このオプションをオンにしてください。このオプションは、SOF DataファイルをInput files to convertで指定した場合にのみ使用できます。 注: Create CvP filesオプションは必ずオンにしてください。このオプションを選択しない場合、 インテル® Quartus® Prime開発ソフトウェアでは、ペリフェラル・イメージとコアイメージ用に別々のファイルを作成しません。 -
Input files to convertで、次のパラメーターを指定します。
表 19. パラメーター: Input Files to Convertタブ パラメーター 値 Flash Loader 最初にFlash Loaderをクリックします。Add Deviceをクリックし、Device familyでStratix 10を選択し、Device nameで1SG280LU3F50I1VGS1を選択します。OKをクリックします。 SOF Data 最初にSOF Dataをクリックします。Add Fileをクリックしてから *.sof を選択します。 図 18. Convert Programming File GUIでの上記の指定オプションの図解 - Generateをクリックして *.periph.jic および *.core.rbf ファイルを作成します。
Base Revision SOFファイルを使用したFPGAのプログラミング
- インテル® FPGA ダウンロード・ケーブル IIをPCのUSBポートと インテル® Stratix® 10 FPGA開発キットのUSBポートの間に接続します。
-
altera_cvp ドライバーをDUT PCシステムにインストールしてください。オープンソースのLinux CvPドライバーをCvP Driverからダウンロードします。注: Intel® 提供のLinuxドライバーはプロダクション・ドライバーではありません。
- インテル® Stratix® 10 FPGA開発キットのMSELスイッチをCvP更新操作のためのJTAGモードに設定します。
次の手順を実行してCvP更新機能のプログラミングおよびテストを行います。
- インテル® Stratix® 10 FPGA開発キットをDUT PCのPCI Expressスロットに接続し、電源を入れます。開発キットに含まれているATX電源を使用することをお勧めします。
- インテル® Quartus® Primeプロ・エディション開発ソフトウェアを開き、Tools > Programmerをクリックします 。
- Auto Detectをクリックし、 インテル® FPGA ダウンロード・ケーブル IIによって インテル® Stratix® 10 FPGAが認識されていることを確認します。
-
次の手順に従って、ベースリビジョンの .sof ファイルをプログラムします。
- Stratix 10デバイスを選択してから、File列のNoneを右クリックしてChange Fileを選択します。
- ベース・リビジョンから生成された *.sof ファイルに移動して、Openをクリックします。
- Program/Configure列でデバイス、例えば1SG280LU3S1を選択します。
- Startをクリックします。デバイスの設定が完了すると、プログレスバーは100%に達します。デバイスはフル・コンフィグレーションされ、動作中になります。
- .sof ファイルのプログラム後、ソフトリセットをPC上で実行してください。
- PCでソフトリブートが完了したら、次のコマンドを端末ウィンドウに入力し、PCIeリンクが起動されて実行中であることを確認します。 lspci -vvvd1172
- この時点で、FPGAはDUT PCへの機能的なPCIeリンクでユーザーモードに入り、 altera_cvp ドライバーを使用してCvP更新を実行する準備が整います。
- 次の手順に従って core.rbf をプログラムします。
- 端末ウィンドウに lspci -vvvd1172 と入力して、アクティブなPCIeリンクがあることを確認します。
- 更新されたリビジョンから生成された core.rbf をプログラムするには、次のコマンドを入力します。 cp <new core.rbf file> /dev/altera_cvp
インテル Stratix 10プロトコル経由コンフィグレーション (CvP) 実装 ユーザーガイド・アーカイブ
Quartusバージョン | User Guide |
---|---|
18.0 | Intel Stratix 10 Configuration via Protocol (CvP) Implementation User Guide |
17.1 | Intel Stratix 10 Configuration via Protocol (CvP) Implementation User Guide |
インテル Stratix 10 プロトコル経由コンフィグレーション (CvP) 実装 ユーザーガイドの改訂履歴
ドキュメント・バージョン | インテル® Quartus® Prime バージョン | 変更内容 |
---|---|---|
2018.11.29 | 18.1 | 次の図を修正しました。
|
2018.09.24 | 18.1 |
|
2018.07.17 | 18.0 |
|
2018.06.18 | 18.0 |
|
日付 | 日付 | 変更内容 |
---|---|---|
2017年12月 | 2017.12.18 | 初版 |