Разработка системы с генерацией HDL-кода от MATLAB и Simulink

В этом примере показано, как сгенерировать блок MATLAB Function из проекта MATLAB ® для системной симуляции, генерации кода и программирования FPGA в Simulink ®.

Введение

HDL Coder может генерировать HDL-код как от MATLAB ®, так и от Simulink ®. Кодер может также сгенерировать компонент Simulink ®, блок MATLAB Function, из вашего кода MATLAB.

Эта возможность позволяет вам:

  1. Разработайте алгоритм в MATLAB;

  2. Сгенерируйте блок MATLAB Function из вашего проекта MATLAB;

  3. Используйте компонент MATLAB в модели Simulink системы;

  4. Моделируйте и оптимизируйте системную модель;

  5. Сгенерируйте HDL-код; и

  6. Программируйте FPGA со всей разработкой системы.

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

MATLAB- Проекта

Код MATLAB, используемый в примере, является простым конечная импульсная характеристика. В примере также показан тестовый набор MATLAB, который выполняет фильтр.

design_name = 'mlhdlc_fir';
testbench_name = 'mlhdlc_fir_tb';
  1. Проект: mlhdlc_fir

  2. Испытательный стенд: mlhdlc_fir_tb

Создайте новую папку и скопируйте соответствующие файлы

Выполните следующие строки кода, чтобы скопировать файлы примера во временную папку.

mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos');
mlhdlc_temp_dir = [tempdir 'mlhdlc_fir'];

% Create a temporary folder and copy the MATLAB files
cd(tempdir);
[~, ~, ~] = rmdir(mlhdlc_temp_dir, 's');
mkdir(mlhdlc_temp_dir);
cd(mlhdlc_temp_dir);

copyfile(fullfile(mlhdlc_demo_dir, [design_name,'.m*']), mlhdlc_temp_dir);
copyfile(fullfile(mlhdlc_demo_dir, [testbench_name,'.m*']), mlhdlc_temp_dir);

Моделируйте проект

Чтобы симулировать проект с испытательным стендом до генерации кода, чтобы убедиться, что нет ошибок во время выполнения, введите следующую команду:

mlhdlc_fir_tb

Создайте новый проект

Чтобы создать новый проект HDL Coder, введите следующую команду:

coder -hdlcoder -new fir_project

Затем добавьте файл 'mlhdlc _ fir.m' к проекту в качестве функции MATLAB и 'mlhdlc _ fir _ tb.m' в качестве испытательного стенда MATLAB.

Нажмите кнопку Workflow Advisor, чтобы запустить HDL Workflow Advisor.

Включите опцию Блок MATLAB Function

Чтобы сгенерировать блок MATLAB Function из проекта MATLAB HDL, необходимо иметь лицензию Simulink. Если следующая команда возвращает '1', Simulink доступен:

license('test', 'Simulink')

На вкладке HDL Workflow Advisor Advanced включите опцию Generate MATLAB Function Block.

Запуск Преобразования из плавающей запятой в фиксированную запятую и генерация кода

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

Щелкните правой кнопкой мыши шаг 'Генерация Кода' и выберите опцию 'Run to selected task', чтобы запустить все шаги от начала до генерации HDL-кода.

Исследуйте сгенерированный блок MATLAB function

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

Чтобы сгенерировать HDL-код из блока MATLAB Function, введите следующую команду:

makehdl('untitled');

Можно переименовать и сохранить новый блок для использования в большем проекте Simulink.

Очистка сгенерированных файлов

Для очистки временной папки проекта можно запустить следующие команды.

mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos');
mlhdlc_temp_dir = [tempdir 'mlhdlc_fir'];
clear mex;
cd (mlhdlc_demo_dir);
rmdir(mlhdlc_temp_dir, 's');