В этом примере показано, как программировать автономный 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');