exponenta event banner

Вызов унаследованных функций таблицы поиска с использованием функционального блока C

В этом примере показано, как использовать блок C Function для вызова унаследованных C-функций, реализующих n-мерный табличный поиск.

В этом примере устаревшие функции C определяются в lookupTable.h и реализуются в directLookupTaureND.c. Определения типов, использованные в этом примере, можно найти в your_types.h.

В модели файл заголовка и исходный файл задаются в меню «Параметры конфигурации модели» > «Цель моделирования». Теперь функция C может быть вызвана в блоке C Function. Прототип функции, вызываемой в этом примере:

FLT directLookupTableND(const FLT *tableND, const UINT32 nbDims, const UINT32 *tableDims, const UINT32 *tableIdx)

где FLT является определением типа для типа с плавающей запятой, и UINT32 - определение типа для беззнакового 32-разрядного целого числа.

В этом примере определяются две макрофункции, использующие эту функцию. directLookupTableND, которые вызываются с использованием блоков C Function. Это:

  • DirectLookupTable3D - таблица поиска 3D

  • DirectLookupTable4D - таблица поиска 4D

Обе эти функции принимают следующие входные аргументы:

  • const FLT *tableND - Таблица

  • const UINT32 *tableDims - Размер таблицы

  • const UINT32 *tableIdx - Табличный индекс

где tableND и tableDims сопоставляются с параметрами функционального блока C и tableIdx является входом в блок. Значение, возвращаемое унаследованной функцией C, является выводом блока.

model = 'slexCFunctionLookupTable';
open_system(model);
evalc('sim(model)');
slcc('clearCustomCodeModules');