Руководство по проектированию для блока MATLAB Function

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

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

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

Создайте блочный код MATLAB Function сначала

Прежде, чем сгенерировать HDL-код для подсистемы, содержащей блок MATLAB Function, создайте блочный код MATLAB Function, чтобы проверить ошибки. Чтобы создать код, нажмите кнопку Build Model в функциональном редакторе.

Используйте 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) установка для опции Treat these inherited signal types as fi objects.

Очистите установку Saturate on integer overflow для блока MATLAB Function.

Установите тип выходных данных блоков MATLAB Function явным образом

Путем установки типа выходных данных блока MATLAB Function явным образом, вы включаете оптимизацию для отображения RAM и конвейеризации. Постарайтесь не наследовать тип выходных данных для блока MATLAB Function, для которого вы хотите включить оптимизацию.

Используя настраиваемые параметры

HDL Coder поддерживает и настраиваемый и ненастраиваемые параметры со следующими типами данных:

  • Скаляр

  • Вектор

  • Комплекс

  • Структура

  • Перечисление

При использовании настраиваемых параметров с блоком MATLAB Function:

  • Настраиваемым параметром должен быть Simulink. Объект параметра с StorageClass установите на ExportedGlobal.

    x = Simulink.Parameter 
    x.Value = 1 
    x.CoderInfo.StorageClass = 'ExportedGlobal' 

  • В диалоговом окне Ports и Data Manager установите флажок tunable.

Для получения дополнительной информации смотрите, Генерируют Порты DUT для Настраиваемых параметров.

Осуществите проверку модели HDL для блоков MATLAB function

Когда ваш проект содержит блоки MATLAB Function, прежде чем вы сгенерируете HDL-код, можно осуществить Проверку проверки на настройки блока MATLAB function в Советнике по вопросам HDL-кода. Эта проверка проверяет, используете ли вы рекомендуемые блоки MATLAB Function для генерации HDL-кода. Настройки включают ли fimath настройки заданы согласно hdlfimath и флажок Saturate on integer overflow снимается.

См. также Совместимость HDL Проверки Модели Simulink Используя Советника по вопросам HDL-кода.

Используйте архитектуру MATLAB Datapath для расширенной оптимизации HDL

В диалоговом окне HDL Block Properties для блоков MATLAB Function можно задать, использовать ли MATLAB Function или MATLAB Datapath как архитектура HDL. Модели с плавающей точкой используют MATLAB Datapath архитектура, даже если вы задаете архитектуру HDL как MATLAB Function на блоке. Модели фиксированной точки используют MATLAB Function архитектура по умолчанию.

Чтобы выполнить различную скорость и оптимизацию области, такую как совместное использование и распределенная конвейеризация в блоке MATLAB Function и через контур блока MATLAB Function с другими блоками Simulink®, используйте MATLAB Datapath архитектура. Когда вы используете эту архитектуру, генератор кода обрабатывает блок MATLAB Function как регулярный блок Subsystem. Эта возможность позволяет вам оптимизировать алгоритм в блоке MATLAB Function и через блок MATLAB Function с другими блоками в вашей модели.

Смотрите оптимизацию HDL через контур блока MATLAB function Используя архитектуру MATLAB Datapath.

Смотрите также

Похожие темы