Программное обеспечение HDL Coder™ поддерживает генерацию кода HDL из функциональных блоков MATLAB, которые включают скомпилированные внешние функции. Эта функция позволяет записывать многократно используемый код MATLAB ® и вызывать его из нескольких функциональных блоков MATLAB.
Такие функции должны быть определены в файлах, находящихся в пути блока функции MATLAB. Используйте %#codegen директива компиляции, указывающая, что код MATLAB подходит для генерации кода. Сведения о создании, компиляции и вызове внешних функций см. в разделе Определение функции.
Перед формированием кода HDL для подсистемы, содержащей функциональный блок MATLAB, создайте функциональный код MATLAB для проверки ошибок. Чтобы создать код, нажмите кнопку «Построить модель» в редакторе функций.
hdlfimath Утилита для оптимизации параметров FIMATH hdlfimath функция - это утилита, определяющая спецификацию FIMATH, оптимизированную для генерации кода HDL.
Следующий список показывает fimath установка, определяемая hdlfimath.
hdlfm = fimath(... 'RoundMode', 'floor',... 'OverflowMode', 'wrap',... 'ProductMode', 'FullPrecision', 'ProductWordLength', 32,... 'SumMode', 'FullPrecision', 'SumWordLength', 32,... 'CastBeforeSum', true);
Оператор разделения HDL не поддерживает 'floor' режим округления. Использовать 'round' или измените операции целочисленного деления на беззнаковое целочисленное деление.
Когда fimath
OverflowMode имущества fimath для спецификации установлено значение 'Saturate'Создание кода HDL запрещено в следующих случаях:
SumMode имеет значение 'SpecifyPrecision'
ProductMode имеет значение 'SpecifyPrecision'
Использовать значение по умолчанию (Fixed-point) настройка для опции Обработать наследуемые типы сигналов как объекты fi.
Снимите флажок Saturate on integer overflow для блока MATLAB Function.
Путем явного задания типа выходных данных блока MATLAB Function можно включить оптимизацию отображения и конвейеризации ОЗУ. Избегайте наследования типа выходных данных для блока MATLAB Function, для которого требуется включить оптимизации.
Кодер HDL поддерживает как настраиваемые, так и не настраиваемые параметры со следующими типами данных:
Скаляр
Вектор
Комплекс
Структура
Перечисление
При использовании настраиваемых параметров с функциональным блоком MATLAB:
Настраиваемый параметр должен быть объектом Simulink.Parameter с StorageClass установить в значение ExportedGlobal.
x = Simulink.Parameter
x.Value = 1
x.CoderInfo.StorageClass = 'ExportedGlobal' В диалоговом окне «Ports and Data Manager» установите настраиваемый флажок.
Дополнительные сведения см. в разделе Создание портов DUT для настраиваемых параметров.
Если проект содержит функциональные блоки MATLAB, то перед созданием кода HDL можно выполнить проверку настроек функциональных блоков MATLAB в помощнике по коду HDL. Эта проверка проверяет, используются ли рекомендуемые функциональные блоки MATLAB для генерации кода HDL. Параметры включают: fimath настройки определены в соответствии с hdlfimath и флажок Насыщить при переполнении целых чисел снят.
См. также раздел Проверка совместимости HDL модели Simulink с помощью помощника по кодам HDL.
В диалоговом окне «Свойства блока HDL» для функциональных блоков MATLAB можно указать, следует ли использовать MATLAB Function или MATLAB Datapath в качестве архитектуры HDL. Модели с плавающей запятой используют MATLAB Datapath архитектура, даже если вы указываете архитектуру HDL как MATLAB Function на блоке. Модели с фиксированной точкой используют MATLAB Function архитектура по умолчанию.
Чтобы выполнить различные оптимизации скорости и площади, такие как совместное использование и распределенная конвейерная обработка внутри функционального блока MATLAB и через границу функционального блока MATLAB с другими блоками Simulink ®, используйте MATLAB Datapath архитектура. При использовании этой архитектуры генератор кода обрабатывает функциональный блок MATLAB как обычный блок подсистемы. Эта возможность позволяет оптимизировать алгоритм в функциональном блоке MATLAB и в функциональном блоке MATLAB с другими блоками в модели.
См. раздел Оптимизация HDL по границе функционального блока MATLAB с использованием архитектуры Datapath MATLAB.
Проверка настроек функционального блока MATLAB