В этом примере показано, как использовать блок 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');
