exponenta event banner

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

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

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

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

  • Тип данных с фиксированной точкой и масштабирование (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

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

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

Связанные темы