デフォルト コンストラクターを含む C++ クラス カーネルをインポートする例として、デフォルト コンストラクターを含むカーネル クラス simple_class
を定義する次の simple.h
ヘッダー ファイルがあるとします。
simple.h:
#include "adf.h"
class simple_class
{
private:
int16 val;
int16 numSamples;
public:
simple_class();
void mulBytwo(input_window_int16* in, output_window_int16* out);
static void registerKernelClass()
{
REGISTER_FUNCTION(simple_class::mulBytwo);
}
};
.cpp
ファイルで定義することを強く勧めします。
registerKernelClass()
メソッドを使用して、カーネル関数を登録する必要があります。ヘッダー ファイルでは複数のクラス カーネルを宣言でき、各クラスには個別に registerKernelClass()
メソッドを含める必要があります。クラスごとに登録できる関数は 1 つのみです。Model Composer では、REGISTER_FUNCTION() を使用して登録した関数のみをインポートできます。
カーネル関数は、simple.cpp
で次のように定義されます。
simple.cpp:
#include "simple.h"
simple_class::Simple_class()
{
val = 24;
numSamples = 8;
}
void simple_class::mulBytwo(input_window_int16* in, output_window_int16* out)
{
for (int i=0; i<numSamples; i++)
{
int16 value = window_readincr(in);
window_writeincr(out, (in*2)+val);
}
}
Model Composer デザインに mulBytwo
関数をブロックとしてインポートするには、AIE class kernel ブロックをダブルクリックし、パラメーターを次のようにアップデートします。
- [Kernel header file]
- kernels/include/simple.h
- [Kernel class]
-
simple_class
- [Kernel function]
-
mulBytwo
- [Kernel init function]
- 空のまま
- [Kernel source file]
- kernels/source/simple_kernel.cpp
- [Kernel search path]
- 空のまま
- [Preprocessor options]
- 空のまま
[Block Parameters] ダイアログ ボックスで Import ボタンをクリックします。インポートが完了すると、[Function] タブ表示されます。次の図に示すように、ユーザーが編集可能な設定パラメーターが表示されます。
Function タブに適切な値を入力したら、Apply をクリックします。AI エンジン クラス カーネル ブロックが次の図に示すようにアップデートされます。
Function タブで、インポートされたカーネル関数の関数宣言と、ポート名および方向をすばやく確認できます。
Kernel Class タブをクリックして、クラス宣言を確認します。