Важным набором сгенерированных функций, которые модель размещает в общей папке утилиты, являются функции поддержки с фиксированной точкой. На основе свойств модели и блока существует много возможных версий функций утилит с фиксированной точкой, которые делают непрактичным предоставление полного набора в виде статических файлов. Генерация только необходимых служебных функций с фиксированной точкой в процессе генерации кода является эффективной альтернативой.
Механизм общей контрольной суммы утилиты гарантирует, что несколько критических свойств идентичны для моделей, которые используют общие утилиты. Для функций с фиксированной точкой существуют дополнительные свойства, которые определяют поведение функции. Механизм кодирует эти свойства в имена функций и файлов для поддержания требований. Дополнительные свойства включают:
Категория | Функция/Свойство |
---|---|
Свойства блока |
|
Свойства модели | 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
пример имеет одинаковый тип данных и биты для обоих входов и выхода. Итак, файл и имя функции включают только выход.
Операция | 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 |