RTL カーネルには、C/C++ および OpenCL カーネルと同じソフトウェア インターフェイス モデルがあります。RTL カーネルは、ホスト プログラムでは void 戻り値、ポインター引数、およびスカラー引数を持つ関数として認識されます。
Vitis コア開発キットの実行モデルでは、次が検出されます。
- スカラー引数は、AXI4-Lite スレーブ インターフェイスを介してカーネルに直接書き込まれます。
- ポインター引数はホスト プログラムとメモリ間で転送され、RTL カーネルは 1 つまたは複数の AXI4 メモリ マップド インターフェイスを介してメモリにデータを読み出し/書き込みします。
- カーネルは AXI4-Lite スレーブ インターフェイスを使用した制御レジスタ (次を参照) を介してホスト プログラムで制御されます。
RTL デザインに別の実行モデルがある場合は、デザインがこの方法で実行できるようにそれを適用する必要があります。
次の表に、カーネルを Vitis IDE 内で使用できるようにするのに必要なレジスタ マップを示します。制御レジスタはすべてのカーネルに必要ですが、割り込み関連のレジスタは割り込みを含むデザインにのみ必要です。すべてのユーザー定義のレジスタは、0x10
で開始する必要があります。これより下位の位置は予約されています。
アドレス | 名前 | 説明 |
---|---|---|
0x0 | 制御 | カーネル ステータスを制御および示します。 |
0x4 | グローバル割り込みイネーブル | ホストへの割り込みをイネーブルにします。 |
0x8 | IP 割り込みイネーブル | 割り込みの生成に使用する IP で生成された信号を制御します。 |
0xC | IP 割り込みステータス | 割り込みステータスを示します。 |
0x10 | カーネル引数 | スカラーおよびグローバル メモリ引数などを含みます。 |
ビット | 名前 | 説明 |
---|---|---|
0 |
ap_start
|
カーネルがデータ処理を開始するとアサートされます。ap_done がアサートされたハンドシェイクでクリアされます。 |
1 |
ap_done
|
カーネルが処理を終了するとアサートされます。読み出しでクリアされます。 |
2 |
ap_idle
|
カーネルがアイドルになるとアサートされます。 |
31:3 | 予約 | 予約 |
注記: ホストは通常オフセット 0 の制御レジスタに
0x00000001
を書き込みます。これは、ビット 0 をセットし、ビット 1 および 2 をクリアし、読み出し完了信号を 1 になるまでポーリングします。次の割り込み関連のレジスタは、カーネルに割り込みがある場合にのみ必要です。
ビット | 名前 | 説明 |
---|---|---|
0 | グローバル割り込みイネーブル | IP 割り込みイネーブル ビットと共にアサートされると、割り込みがイネーブルになります。 |
31:1 | 予約 | 予約 |
ビット | 名前 | 説明 |
---|---|---|
0 | 割り込みイネーブル | グローバル割り込みイネーブル ビットと共にアサートされると、割り込みがイネーブルになります。 |
31:1 | 予約 | 予約 |
ビット | 名前 | 説明 |
---|---|---|
0 | 割り込みステータス | 書き込みでトグルされます。 |
31:1 | 予約 | 予約 |