Main Content

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 - テーブルのインデックス

ここで、tableNDtableDims は C Function ブロック パラメーターにマッピングされ、tableIdx はブロックへの入力です。レガシ C 関数が返す値は、ブロックの出力です。

model = 'slexCFunctionLookupTable';
open_system(model);
sim(model);

参考

ブロック

関連するトピック