exponenta event banner

Проектирование системы с генерацией кода HDL от MATLAB и Simulink

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

Введение

Кодер HDL может генерировать код HDL как из MATLAB ®, так и из Simulink ®. Кодер также может генерировать компонент Simulink ®, функциональный блок MATLAB, из кода MATLAB.

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

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

  2. Создайте функциональный блок MATLAB из проекта MATLAB;

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

  4. Моделирование и оптимизация модели системы;

  5. Генерировать код ЛПВП; и

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

В этом примере из кода MATLAB создается функциональный блок MATLAB, реализующий фильтр FIR.

Проектирование MATLAB

Код MATLAB, используемый в примере, является простым фильтром FIR. В примере также показано тестовое средство 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 -hdlcoder -new fir_project

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

Нажмите кнопку Помощник по рабочим процессам, чтобы запустить помощник по рабочим процессам HDL.

Включение опции функционального блока MATLAB

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

license('test', 'Simulink')

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

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

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

Щелкните правой кнопкой мыши на шаге «Code Generation» и выберите опцию «Run to selected task» для выполнения всех шагов от начала до создания кода HDL.

Проверка сгенерированного функционального блока MATLAB

Модель без названия открывается после генерации кода HDL. Он имеет функциональный блок MATLAB, содержащий код MATLAB с фиксированной точкой из вашей конструкции MATLAB HDL. Кодер HDL автоматически применяет настройки к модели и функциональному блоку MATLAB, чтобы они могли моделировать в 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');