C Caller ブロックを使用したレガシ ルックアップ テーブル関数
この例では、C Caller ブロックを使用して、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 ビット整数の型定義です。
const FLT *tableND
- テーブルconst UINT32 nbDims
- テーブルの次元const UINT32 *tableDims
- テーブルのサイズconst UINT32 *tableIdx
- テーブルのインデックス
C Caller ブロックにおいて、tableND
と tableDims
は C Caller ブロック パラメーターにマッピングされ、nbDims
はブロックの定数で、tableIdx
はブロックへの入力です。レガシ C 関数が返す値は、ブロックの出力です。
mdl = 'slexCCallerLookupTable';
open_system(mdl);
sim(mdl);