C Function ブロックを使用したレガシ ルックアップ テーブル関数の呼び出し
この例では、C Function ブロックを使用して、N 次元のテーブル ルックアップを実装するレガシ C 関数を呼び出す方法を示します。
この例では、レガシ C 関数は lookupTable.h で定義され、directLookupTableND.c で実装されています。この例で使用される型の定義は、your_types.h にあります。
モデルでは、ヘッダー ファイルとソース ファイルは [モデル コンフィギュレーション パラメーター]、[シミュレーション ターゲット] で指定されています。ここで、C Function ブロック内で C 関数を呼び出すことができます。この例で呼び出される関数のプロトタイプは以下のとおりです。
FLT directLookupTableND(const FLT *tableND, const UINT32 nbDims, const UINT32 *tableDims, const UINT32 *tableIdx)
ここで、FLT
は浮動小数点型の型定義で、UINT32
は符号なし 32 ビット整数の型定義です。
この例では、関数 directLookupTableND
を使用する 2 つのマクロ関数を定義し、それを C Function ブロックを使用して呼び出します。内容は以下のとおりです。
DirectLookupTable3D
- 3D ルックアップ テーブルDirectLookupTable4D
- 4D ルックアップ テーブル
これらの関数は両方とも次の入力引数を受け取ります。
const FLT *tableND
- テーブルconst UINT32 *tableDims
- テーブルのサイズconst UINT32 *tableIdx
- テーブルのインデックス
ここで、tableND
と tableDims
は C Function ブロック パラメーターにマッピングされ、tableIdx
はブロックへの入力です。レガシ C 関数が返す値は、ブロックの出力です。
model = 'slexCFunctionLookupTable';
open_system(model);
sim(model);