ここでは、このチュートリアルの vadd カーネルに必要な変更を示します。これは単なる例であり、同じ関数をインプリメントする方法はほかにもあることに注意してください。

1.必要なファイル ヘッダーを含有

define コマンドの直前、ファイルの先頭に次の include コマンドを追加します。

変更前:

#define DATA_SIZE 4096

変更後:

#include "ap_int.h" #include "ap_axi_sdata.h" #include "hls_stream.h" #define DATA_SIZE 4096

2.AXI-Stream データ型を定義

カーネル関数定義の前に新しい pkt 型を定義します。

変更前

extern "C" { void krnl_vadd(... ){ ...

変更後

typedef ap_axis<15, 0, 0, 0> pkt; extern "C" { void krnl_vadd(... ){ ...

3.カーネル関数にポートを追加

カーネル関数を変更して、プラットフォーム内の IP 用のポートを増やします。

変更前

extern "C" { void krnl_vadd(uint32_t* in1, uint32_t* in2, uint32_t* out, int size) {

変更後

void krnl_vadd(uint32_t* in1, uint32_t* in2, uint32_t* out, int size, int *wave_out, hls::stream<pkt> &dds_in) {

4.カーネル関数本体にロジックを追加

このロジックは、単にデータをカーネルに読み込み、別のポートを介して送信するだけです。どこにでも追加できますが、ここでは関数本体の最後に追加する例を示します。

変更前

store_result(out, out_stream, size);

変更後

store_result(out, out_stream, size); for (int i = 0; i < 1024; i++) { #pragma HLS PIPELINE II = 1 pkt value = dds_in.read(); wave_out[i] = value.data; }

ライセンス

Apache ライセンス、バージョン 2.0 (以下「ライセンス」) に基づいてライセンス付与されています。本ライセンスに準拠しないと、このファイルを使用することはできません。

ライセンスのコピーは、http://www.apache.org/licenses/LICENSE-2.0 から入手できます。

適切な法律で要求されるか、書面で同意された場合を除き、本ライセンスに基づいて配布されるソフトウェアは、明示的または黙示的を問わず、いかなる種類の保証または条件もなく、「現状のまま」配布されます。ライセンスに基づく権限と制限を管理する特定の言語については、ライセンスを参照してください。