Инструкции по проекту для блока 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);

Оператор деления не поддерживает 'floor' режим округления. Использование 'round' mode или измените целое число со знаком операций деления на беззнаковое целое деление.

Когда 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, вы включаете оптимизацию для отображения ОЗУ и конвейеризации. Избегайте наследования типа выходных данных для блока MATLAB Function, для которого вы хотите включить оптимизацию.

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

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

  • Скаляр

  • Вектор

  • Комплекс

  • Структура

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

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

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

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

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

Для получения дополнительной информации смотрите Сгенерировать порты DUT для настраиваемых параметров.

Запустите проверку HDL-модели для блоков MATLAB function

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

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

Используйте архитектуру 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.

См. также

Похожие темы