exponenta event banner

Руководство по проектированию функционального блока MATLAB

Использование скомпилированных внешних функций с функциональными блоками MATLAB

Программное обеспечение HDL Coder™ поддерживает генерацию кода HDL из функциональных блоков MATLAB, которые включают скомпилированные внешние функции. Эта функция позволяет записывать многократно используемый код MATLAB ® и вызывать его из нескольких функциональных блоков MATLAB.

Такие функции должны быть определены в файлах, находящихся в пути блока функции MATLAB. Используйте %#codegen директива компиляции, указывающая, что код MATLAB подходит для генерации кода. Сведения о создании, компиляции и вызове внешних функций см. в разделе Определение функции.

Сначала создайте код функционального блока 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

Путем явного задания типа выходных данных блока 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 для настраиваемых параметров.

Выполнение проверки модели HDL для функциональных блоков MATLAB

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

См. также раздел Проверка совместимости HDL модели Simulink с помощью помощника по кодам HDL.

Использование архитектуры MATLAB Datapath для расширенной оптимизации 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.

См. также

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