В этом примере показано, как создать функциональный блок MATLAB из конструкции MATLAB ® для моделирования системы, генерации кода и программирования FPGA в Simulink ®.
Кодер HDL может генерировать код HDL как из MATLAB ®, так и из Simulink ®. Кодер также может генерировать компонент Simulink ®, функциональный блок MATLAB, из кода MATLAB.
Эта возможность позволяет:
Разработка алгоритма в MATLAB;
Создайте функциональный блок MATLAB из проекта MATLAB;
Используйте компонент MATLAB в модели Simulink системы;
Моделирование и оптимизация модели системы;
Генерировать код ЛПВП; и
Программирование FPGA со всей конструкцией системы.
В этом примере из кода MATLAB создается функциональный блок MATLAB, реализующий фильтр FIR.
Код MATLAB, используемый в примере, является простым фильтром FIR. В примере также показано тестовое средство MATLAB, выполняющее фильтр.
design_name = 'mlhdlc_fir'; testbench_name = 'mlhdlc_fir_tb';
Проектирование: mlhdlc_fir
Испытательный стенд: 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 HDL необходимо иметь лицензию Simulink. Если следующая команда возвращает «1», функция Simulink доступна:
license('test', 'Simulink')
На вкладке Advisor Advisor Advanced HDL включите опцию Generate MATLAB Function Block.

Чтобы создать функциональный блок MATLAB, необходимо также преобразовать конструкцию из плавающей точки в фиксированную.
Щелкните правой кнопкой мыши на шаге «Code Generation» и выберите опцию «Run to selected task» для выполнения всех шагов от начала до создания кода HDL.
Модель без названия открывается после генерации кода 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');