RTL カーネルの作成は、Vivado Design Suite で IP を作成するところから始まります。リポジトリに既存する RTL IP を使用するか、新しい RTL デザインを作成して、IP としてパッケージします。どちらの方法でも、新しい RTL カーネルの作成するのに適しています。
実行プロトコル
RTL カーネルは、ホスト アプリケーションが通常レジスタの読み出しおよび書き込みを使用して、RTL カーネル関数の実行と完了を管理する、ユーザー管理の実行方式を採用しています。このユーザー管理の実行プロトコルを使用すると、ユーザー管理の RTL カーネルの作成 で説明するように、再設計がほとんどまたはまったくない Vitis 環境で既存の IP の制御方式を使用できます。通常、これには、s_axilite
インターフェイスの使用、および XRT ネイティブ API オブジェクト クラスの使用、およびカーネル上のアドレスの読み出しと書き込みのためのメソッドが含まれます。
ポート インターフェイス プロトコル
- 制御レジスタ、バッファー ポインター、スカラー値、カーネルとホストの相互作用には、AXI4-Lite (
S_AXILITE
)。データは、レジスタの読み出しおよび書き込みでアクセスされます。 - カーネルからグローバル メモリまたはホスト メモリへのアクセスには、AXI4 Memory Mapped (
M_AXI
)。データは、DDR、HBM、PLRAM/BRAM/URAM などのメモリを介してカーネルからアクセスされます。 - カーネル間、またはビデオ プロセッサやカメラなどのその他のストリーミング ソース間でデータをストリーミングするには、AXI4-Stream ポート。
- カスタム (AXI 以外) インターフェイスは、
--connectivity.connect
コマンドを使用してもサポートされており、v++
リンク プロセス中にこれらのポートに接続します。このプロセスは、たとえばプラットフォーム上の GT ポートにカーネルを接続するために使用できます。
さらに、カーネルは少なくとも 1 つのクロックを必要としますが、カーネルのインターフェイス要件 で説明するように、複数のクロック、リセット信号、および割り込みをサポートできます。元の IP が AXI4 インターフェイスを使用しない場合、または必要なクロック信号を提供しない場合は、現在の IP を変更して再パッケージして、これらの信号を提供する必要があります。
プラットフォームには、スケーラブル クロックと固定クロックを含めることができます。Vitis フローでは、プラットフォームによって提供されず、RTL カーネル フローによく使用される、任意の数の派生固定クロックを生成できます。固定クロックを使用する場合、Vitis フローは MMCM をシステム デザインに挿入して必要な周波数を生成します。詳細は、クロック周波数の管理を参照してください。
AXI マスターおよびストリーム ポートのデータ バス幅は、コンフィギュレーション可能です。通常、これはデータ転送帯域幅と FPGA リソースの考慮事項に依存します。
RTL カーネルの設計は、非常に柔軟です。カーネルとホスト アプリケーション間の通信方法、内部クロック生成方式、クロック ゲーティング方式、割り込みの処理を決定できるようになっています。
IP のパッケージ
RTL カーネルを生成するには、RTL コードを Vitis XO としてパッケージ で説明するように、Vivado ツールで [Package IP] プロセスを実行する必要があります。これは、 『Vivado Design Suite ユーザー ガイド: カスタム IP の作成とパッケージ』 (UG1118) で説明されるように、標準的な IP パッケージング フローに、Vitis デザイン フローでカーネルを指定する手順を追加します。