Разработка системы с генерацией 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 из проекта HDL MATLAB, у вас должна быть лицензия Simulink. Если следующая команда возвращается '1', Simulink доступен:

license('test', 'Simulink')

Во Вкладке "Дополнительно" HDL Workflow Advisor включите Сгенерировать опцию блока MATLAB function.

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

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

Щелкните правой кнопкой по 'Code Generation', продвигаются и выбирают опцию, 'Запущенную к выбранной задаче', чтобы запустить все шаги с начала через генерацию HDL-кода.

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

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