Важным набором сгенерированных функций, которые модель создает в общей папке утилит, являются функции поддержки с фиксированной точкой. На основе свойств модели и блока существует множество возможных версий функций утилит с фиксированной точкой, которые делают нецелесообразным предоставление полного набора в виде статических файлов. Эффективной альтернативой является создание только необходимых служебных функций с фиксированной точкой во время процесса создания кода.
Механизм контрольной суммы общей утилиты обеспечивает идентичность нескольких критических свойств для моделей, использующих общие утилиты. Для функций с фиксированной точкой существуют дополнительные свойства, определяющие поведение функции. Механизм кодирует эти свойства в функции и имена файлов для поддержания требований. Дополнительные свойства:
| Категория | Функция/свойство |
|---|---|
| Свойства блока |
|
| Свойства модели | 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 пример имеет идентичный тип данных и биты как для входов, так и для выхода. Таким образом, имя файла и функции включает только выходные данные.
| Операция | FIX2FIX | FIX2FIX | ACCUM_POS | MUL | отделение | отделение |
|---|---|---|---|---|---|---|
| Нулевая защита | NULL | NULL | NULL | NULL | _nzp | NULL |
| Тип выходных данных | _U | _S | _S | _S | _s | _s |
| Выходные биты | 12 | 9 | 30 | 30 | 16 | 32 |
| Тип входных данных | _U | _S | _S | _S [and _S] | s | NULL |
| Входные биты | 16 | 9 | 30 | 30 [and 16] | 32 | NULL |
| Направление сдвига | NULL | SR99 | NULL | NULL | NULL | NULL |
| Режим насыщения | NULL | NULL | NULL | NULL | NULL | _sat |
| Режим скругления | NULL | NULL | NULL | NULL | _floor | _floor |