В этом примере показано, как работать с проектами MATLAB® HDL Coder™ сгенерировать HDL из проектов MATLAB.
Этот пример помогает вам ознакомить себя со следующими аспектами генерации HDL-кода:
Генерация HDL-кода из проекта MATLAB.
Генерация испытательного стенда HDL от испытательного стенда MATLAB.
Проверка сгенерированного HDL-кода с помощью симулятора HDL.
Синтезирование сгенерированного HDL-кода с помощью инструмента синтеза HDL.
Код MATLAB, используемый в этом примере, реализует простой симметричный КИХ-фильтр. Этот пример также показывает испытательный стенд MATLAB, который осуществляет фильтр.
design_name = 'mlhdlc_sfir'; testbench_name = 'mlhdlc_sfir_tb';
Проект MATLAB: mlhdlc_sfir
Испытательный стенд MATLAB: mlhdlc_sfir_tb
Выполните следующие строки кода, чтобы скопировать необходимые файлы в качестве примера во временную папку.
mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos'); mlhdlc_temp_dir = [tempdir 'mlhdlc_sfir']; % 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_sfir_tb
Чтобы создать новый проект, введите следующую команду:
coder -hdlcoder -new mlhdlc_sfir
Затем добавьте файл 'mlhdlc_sfir.m' в проект как функция MATLAB и 'mlhdlc_sfir_tb.m' как Испытательный стенд MATLAB.
Можно обратиться к Началу работы с MATLAB к примеру по Рабочему процессу HDL для более полного введения в создание и заполнение проектов HDL Coder.
Щелкните правой кнопкой по 'Float-to-Fixed Workflow', продвигаются и выбирают, опция 'Запускают эту задачу', чтобы запустить все шаги, чтобы сгенерировать фиксированную точку код MATLAB.
Исследуйте сгенерированную фиксированную точку код MATLAB путем щелчка по ссылкам в логарифмическом окне, чтобы открыть код MATLAB в редакторе.
Для получения дополнительной информации о преобразовании фиксированной точки обратитесь к примеру по Преобразованию из плавающей запятой в фиксированную запятую.
Этот шаг генерирует код Verilog от сгенерированной фиксированной точки проект MATLAB и испытательный стенд Verilog от обертки испытательного стенда MATLAB.
Установить опции генерации кода и сгенерировать HDL-код:
Нажмите шаг 'Code Generation', чтобы просмотреть панель опций генерации HDL-кода.
Во вкладке Target выберите 'Verilog' в качестве опции 'Языка'.
Выберите опции 'Generate HDL test bench' и 'Generate HDL'.
Во вкладке 'Optimizations' выберите '1' как конвейерная длина Ввода и вывода и включите, 'Распределяют конвейерную опцию' регистров.
Во вкладке 'Coding style' выберите 'Include MATLAB source code as comments' и 'Generate report', чтобы сгенерировать отчет генерации кода со ссылками трассируемости и комментариями.
Нажмите кнопку 'Run', чтобы сгенерировать и проект Verilog и испытательный стенд с отчетами.
Исследуйте логарифмическое окно и щелкните по ссылкам, чтобы исследовать сгенерированный код и отчеты.
На шаге 'верификации HDL-кода' выберите 'Verify with HDL Test Bench', подпродвигаются и выбирают опцию 'Multi-file test bench' в 'подзакладке' Опций Испытательного стенда. Эта опция помогает сгенерировать код испытательного стенда HDL и данные об испытательном стенде (стимул и ответ) в отдельных файлах.
HDL Coder автоматизирует процесс генерации испытательного стенда HDL и выполнения сгенерированного испытательного стенда HDL с помощью ModelSim® или средства моделирования ISIM™, и сообщает, совпадает ли сгенерированная симуляция HDL с численными данными и задержкой относительно фиксированной точки симуляция MATLAB.
HDL Coder также создает Xilinx® ISE™ или проект Altera® Quartus™ с выбранными опциями и запускает выбранный логический синтез и шаги места-и-маршрута для сгенерированного HDL-кода.
Исследуйте логарифмическое окно, чтобы просмотреть результаты шагов синтеза.
Запустите следующие команды, чтобы очистить временную папку проекта.
mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos'); mlhdlc_temp_dir = [tempdir 'mlhdlc_sfir']; clear mex; cd (mlhdlc_demo_dir); rmdir(mlhdlc_temp_dir, 's');