Этот пример показывает, как программировать автономный FPGA с вашим проектом MATLAB, с помощью рабочего процесса Тюремщика FPGA.
Целевым устройством в этом примере является Xilinx ® макетная плата Virtex-5 ML506.
В этом примере функция 'mlhdlc_ip_core_led_blinking' моделирует счетчик, который мигает светодиодами на плате FPGA.
Два входных порта, Blink_frequency и Blink_direction, являются портами управления, которые определяют частоту мигания LED и направление.
Можно настроить входные значения оборудования через кнопки на Xilinx ® макетная плата Virtex-5 ML506. Выходной порт функции проекта, 'LED', соединяется с оборудованием LED.
design_name = 'mlhdlc_turnkey_led_blinking'; testbench_name = 'mlhdlc_turnkey_led_blinking_tb';
Давайте смотреть на проект MATLAB
type(design_name);
function [LED, Read_back] = mlhdlc_turnkey_led_blinking(Blink_frequency, Blink_direction) % % Copyright 2013-2015 The MathWorks, Inc. persistent freqCounter LEDCounter if isempty(freqCounter) freqCounter = 0; LEDCounter = 255; end if Blink_frequency <= 0 Blink_frequency = 0; elseif Blink_frequency >= 15 Blink_frequency = 15; end blinkFrequencyOut = LookupTable(Blink_frequency); if blinkFrequencyOut == freqCounter freqMatch = 1; else freqMatch = 0; end freqCounter = freqCounter + 1; if freqMatch freqCounter = 0; end if Blink_direction LED = 255 - LEDCounter; else LED = LEDCounter; end if LEDCounter == 255 LEDCounter = 0; elseif freqMatch LEDCounter = LEDCounter + 1; end Read_back = LED; end function y = LookupTable(idx) s = 2.^(26:-1:11)'; y = s(idx+1); end
type(testbench_name);
% % Copyright 2013-2015 The MathWorks, Inc. for i=1:16 [yout, ~] = mlhdlc_turnkey_led_blinking(i-1, 0); [yout2, ~] = mlhdlc_turnkey_led_blinking(i-1, 1); end
Выполните следующие строки кода, чтобы скопировать необходимые файлы в качестве примера во временную папку.
mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos'); mlhdlc_temp_dir = [tempdir 'mlhdlc_turnkey_led_blinking']; % 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);
coder -hdlcoder -new mlhdlc_turnkey_led_blinking_prj
Затем, добавьте файл 'mlhdlc_turnkey_led_blinking.m' в проект как функция MATLAB и 'mlhdlc_turnkey_led_blinking_tb.m' как Испытательный стенд MATLAB.
Можно обратиться к Началу работы с MATLAB к Рабочему процессу HDL для более полного примера при создании и заполнении проектов HDL Coder MATLAB.
1. Щелкните правой кнопкой по Входной Define задаче Типов и выберите Run This Task.
2. В задаче Преобразования Фиксированной точки нажмите Advanced и установите Запас прочности в течение sim min (%) / макс. (%) к 0.
3. Установите предложенный тип freqCounter переменной к 27-битному целому числу без знака путем ввода numerictype (0, 27, 0) в его 'Предложенном Типе' столбец.
4. Слева, щелкните правой кнопкой по задаче Преобразования Фиксированной точки и выберите Run This Task.
В Выбрать задаче Code Generation Target выберите рабочий процесс Тюремщика FPGA и макетную плату Xilinx Virtex-5 ML506 можно следующим образом:
1. Для Рабочего процесса выберите FPGA Turnkey.
2. Для Платформы выберите макетную плату Xilinx Virtex-5 ML506. Если ваше целевое устройство не находится в списке, выберите Get больше, чтобы загрузить пакет поддержки. Кодер автоматически устанавливает Серию ИС, Устройство, Пакет и Скорость согласно вашему выбору платформы.
3. Для частоты часов FPGA, и для Входа и для Системы, входят 100.
4. В Цели Набора Интерфейсная задача сопоставьте порты ввода и вывода проекта с интерфейсами на целевом устройстве путем установки полей в столбце Интерфейсов Целевой платформы можно следующим образом:
Blink_frequency_1 к пользовательским кнопкам N E S W C [0:4]
Blink_direction к пользовательским кнопкам N E S W C [0:4]
LED к светодиодной общей цели [0:7]
Можно оставить порт 'Read_back' несопоставленным.
Можно сгенерировать код, выполнить синтез и анализ, и загрузить проект на целевой компьютер с помощью настроек по умолчанию:
1. Для исследовательской группы Синтеза и Анализа снимите флажок с Пропуском эта опция Шага.
2. Для Загрузки, чтобы Предназначаться для исследовательской группы, снимите флажок с Пропуском эта опция Шага.
3. Щелкните правой кнопкой по Download to Target> Generate Programming File и выберите Run to Selected Task.
4. Если ваш целевой компьютер соединяется и готов с программой, выберите подзадачу Целевого устройства Программы и нажмите Run.
Можно запустить следующие команды, чтобы очистить временную папку проекта.
mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos'); mlhdlc_temp_dir = [tempdir 'mlhdlc_turnkey_led_blinking']; clear mex; cd (mlhdlc_demo_dir); rmdir(mlhdlc_temp_dir, 's');