Начало работы с рабочим процессом тюремщика FPGA

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

Создайте новый проект HDL Coder™

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. В Цели Набора Интерфейсная задача сопоставьте порты ввода и вывода проекта с интерфейсами на целевом устройстве путем установки полей в столбце Интерфейсов Целевой платформы можно следующим образом:

  1. Blink_frequency_1 к пользовательским кнопкам N E S W C [0:4]

  1. Blink_direction к пользовательским кнопкам N E S W C [0:4]

  1. 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');