Сгенерируйте общий код утилиты для функций с фиксированной точкой

Важным набором сгенерированных функций, которые модель размещает в общей папке утилиты, являются функции поддержки с фиксированной точкой. На основе свойств модели и блока существует много возможных версий функций утилит с фиксированной точкой, которые делают непрактичным предоставление полного набора в виде статических файлов. Генерация только необходимых служебных функций с фиксированной точкой в процессе генерации кода является эффективной альтернативой.

Механизм общей контрольной суммы утилиты гарантирует, что несколько критических свойств идентичны для моделей, которые используют общие утилиты. Для функций с фиксированной точкой существуют дополнительные свойства, которые определяют поведение функции. Механизм кодирует эти свойства в имена функций и файлов для поддержания требований. Дополнительные свойства включают:

КатегорияФункция/Свойство
Свойства блока
  • Операция с фиксированной точкой, которую выполняет блок

  • Тип данных с фиксированной точкой и масштабирование (Slope, Bias) входных параметров функции и выходов

  • Режим обработки переполнения (Saturation, Wrap)

  • Режим округления (Floor, Ceil, Zero)

Свойства моделиget_param(bdroot, 'NoFixptDivByZeroProtection')

Стандарт именования на основе свойств для утилит с фиксированной точкой следующий:

operation + [zero protection] + output data type + output bits + 
[input1 data] + input1 bits + [input2 data type + input2 bits] + 
[shift direction] + [saturate mode] + [round mode]

Показанные имена файлов являются примерами сгенерированных служебных файлов с фиксированной точкой. Имена функций или макросов в файле идентичны имени файла без расширения.

FIX2FIX_U12_U16.c 
FIX2FIX_S9_S9_SR99.c
ACCUM_POS_S30_S30.h
MUL_S30_S30_S16.h
div_nzp_s16s32_floor.c
div_s32_sat_floor.c

Для этих примеров таблица показывает соответствие соответствующих полей.

The ACCUM_POS пример использует выходную переменную в качестве одной из входных переменных. Таким образом, имя файла и макроса содержит только выход и второй вход.

Вторая div пример имеет одинаковый тип данных и биты для обоих входов и выхода. Итак, файл и имя функции включают только выход.

ОперацияFIX2FIXFIX2FIXACCUM_POSMULотделениеотделение
Нулевая защитаNULLNULLNULLNULL_nzpNULL
Выход данных _U_S_S_S_s_s
Выходные биты 12930301632
Тип входных данных _U_S_S_S [and _S] sNULL
Входные биты 1693030 [and 16]32NULL
Направление сдвига NULL SR99NULLNULLNULLNULL
Режим насыщения NULLNULLNULLNULLNULL_sat
Круглый режимNULLNULLNULLNULL_floor_floor

Похожие темы