Задайте пользовательскую плату и исходный проект для рабочего процесса Zynq

В этом примере показано, как определить и зарегистрировать пользовательскую плату и дизайн ссылок в рабочем процессе Zynq ®.

Введение

В этом примере вы сможете зарегистрировать плату разработки Digilent ® Zybo Zynq и пользовательский исходный проект в HDL Workflow Advisor для рабочего процесса Zynq.

Этот пример использует плату Zybo Zynq, но таким же образом можно задать и зарегистрировать пользовательскую плату или пользовательский исходный проект для других платформ Zynq.

Требования

  • Xilinx Vivado Design Suite с поддерживаемой версией, перечисленной в документации HDL Coder

  • Плата для разработки Zynq™ Digilent ® Zybo с комплектом аксессуаров

  • HDL Coder поддержка платформы Xilinx Zynq

  • Пакет поддержки Embedded Coder для платформы Xilinx Zynq

Примечание: Этот пример использует учебную плату Digilent ® Zybo Zynq-7000 ARM/FPGA SoC. Этот пример не работает с Digilent ® Zybo Z7: Zynq-7000 платы разработки ARM/FPGA SoC, которые имеют два варианта Zybo Z7-10 и Zybo Z7-20.

Настройка платы Zybo

1. Ознакомьтесь с функциями платы Zybo, ознакомившись с справочным руководством по системной плате Zybo.

2. Настройте плату Zybo как показано на следующем рисунке:

3. Убедитесь, что на компьютере правильно установлены драйверы USB COM-портов.

4. Сконфигурируйте JP5 перемычка загрузочного режима для загрузки изображения Zynq Linux с платы microSD, подключенной к коннектору J4 как показано на следующем рисунке.

5. Сконфигурируйте JP7 источник степени выбирает перемычку, чтобы использовать USB в качестве источника степени, как показано на следующем рисунке.

6. Подключите общий порт USB UART/JTAG на плате Zybo к компьютеру.

7. Подключите плату Zybo к компьютеру с помощью кабеля Ethernet. IP-адрес Zybo по умолчанию 192.168.1.110.

8. Загрузите изображение Zybo Zynq Linux, извлеките архив Zip и скопируйте содержимое на карту microSD. Вставьте карту microSD в разъем J4.

9. Настройте путь инструмента Xilinx Vivado с помощью следующей команды:

hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2017.4\bin\vivado.bat');

При выполнении команды используйте собственный путь установки Xilinx Vivado.

10. Настройте аппаратное подключение Zynq с помощью следующей команды:

h = zynq();

Зарегистрируйте часть платы Zybo в инструменте Xilinx Vivado

По умолчанию установка Vivado 2017.4 инструментов не будет иметь предустановленной части платы Zybo. Эти файлы должны быть загружены с веб-сайта Digilent. Так разархивируйте содержимое и перейдите в директорию Vivado, приведенный ниже, и копируйте обновленные файлы платы Zybo в инструменты xilinx vivado вручную.

C:\Xilinx\Vivado\2017.4\data\boards\board_files

в результате этого шага часть платы Zybo добавляется в список плат разработки при создании проекта vivado, специфичного для платы.

Примечание: В случае, если ссылка выше недоступна, получите файлы платы Zybo с сайта Digilent.

Создайте и экспортируйте пользовательский исходный проект с помощью Xilinx Vivado

Исходный проект захватывает полную структуру однокристального проекта, определяя различные компоненты и их взаимосвязи. Рабочий процесс HDL Coder SoC генерирует IP-ядро, которое интегрируется с исходным проектом, и затем используется для программирования платы SoC. Следующий рисунок описывает отношения между исходным проектом, IP-ядром HDL и платой СнК.

В этом разделе описаны основные шаги, необходимые для создания и экспорта простого исходного проекта с помощью окружения Xilinx Vivado IP Integrator. Для получения дополнительной информации о инструменте IP-интегратора см. документацию Xilinx.

1. Создайте пустой проект Xilinx Vivado RTL с помощью Zybo системной платы как часть платы по умолчанию, как показано на следующем рисунке:

2. Создайте проект пустого блока и добавьте ZYNQ7 Processing System Блок IP. Выполните автоматизацию блоков, как показано на рисунке, чтобы установить набор плат для Zybo, который содержит параметры для IP ZYNQ7 обработки системы, относящиеся к строению MIO, строению синхроимпульса и строению DDR.

На следующем рисунке можно увидеть, что периферийные устройства MIO отмечены в соответствии с определением платы Zybo в результате применения предустановленной платы.

3. Завершите проект блока, как показано на следующем рисунке:

Заметьте, что проект блока не содержит никакой информации о HDL-ядре IP.

4. Экспортируйте завершённый проект блока как скрипт Tcl design_led.tcl как показано на следующем рисунке:

Экспортированный скрипт Tcl (design_led.tcl) образуют пользовательский исходный проект. Скрипт Tcl будет использоваться в рабочем процессе HDL Coder SoC, чтобы заново создать дизайн блока и интегрировать сгенерированное IP-ядро HDL с дизайном блока в проект Xilinx Vivado.

Зарегистрируйте плату Zybo в HDL Workflow Advisor

В этом разделе описываются шаги, необходимые для регистрации платы Zybo в HDL Workflow Advisor.

1. Создайте файл регистрации платы с именем hdlcoder_board_customization.m и добавьте его к пути MATLAB.

Файл регистрации платы содержит список плат-плагинов. Плагин платы является папкой пакета MATLAB, содержащей файл определения платы и все исходные проекты плагины, сопоставленные с платой.

Следующий код описывает содержимое файла регистрации платы, который содержит плагин платы ZyboRegistration для регистрации платы Zybo в HDL Workflow Advisor.

function r = hdlcoder_board_customization
% Board plugin registration file
% 1. Any registration file with this name on MATLAB path will be picked up
% 2. Registration file returns a cell array pointing to the location of
%    the board plugins
% 3. Board plugin must be a package folder accessible from MATLAB path,
%    and contains a board definition file
r = { ...
      'ZyboRegistration.plugin_board', ...
     };
end

2. Создайте файл определения платы.

Файл определения платы содержит информацию о плате СнК.

Следующий код описывает содержимое файла определения платы Zybo plugin_board.m который находится внутри плагина платы ZyboRegistration.

Информация о местоположениях контактов ввода-вывода ПЛИС ('FPGAPin') и стандарты ('IOSTANDARD') получен из файла основных ограничений Zybo из Digilent.

Свойство BoardName определяет имя платы Zybo следующим образом ZYBO в HDL Workflow Advisor.

function hB = plugin_board()
% Board definition
% Construct board object
hB = hdlcoder.Board;
hB.BoardName    = 'ZYBO';
% FPGA device information
hB.FPGAVendor   = 'Xilinx';
hB.FPGAFamily   = 'Zynq';
hB.FPGADevice   = 'xc7z010';
hB.FPGAPackage  = 'clg400';
hB.FPGASpeed    = '-1';
% Tool information
hB.SupportedTool = {'Xilinx Vivado'};
% FPGA JTAG chain position
hB.JTAGChainPosition = 2;
%% Add interfaces
% Standard "External Port" interface
hB.addExternalPortInterface( ...
    'IOPadConstraint', {'IOSTANDARD = LVCMOS33'});
% Custom board external I/O interface
hB.addExternalIOInterface( ...
  'InterfaceID',    'LEDs General Purpose', ...
  'InterfaceType',  'OUT', ...
  'PortName',       'LEDs', ...
  'PortWidth',      4, ...
  'FPGAPin',        {'M14', 'M15', 'G14', 'D18'}, ...
  'IOPadConstraint', {'IOSTANDARD = LVCMOS33'});
hB.addExternalIOInterface( ...
   'InterfaceID',    'Push Buttons', ...
   'InterfaceType',  'IN', ...
   'PortName',       'PushButtons', ...
   'PortWidth',      4, ...
   'FPGAPin',        {'R18', 'P16', 'V16', 'Y16'}, ...
   'IOPadConstraint', {'IOSTANDARD = LVCMOS33'});

Зарегистрируйте пользовательский исходный проект в HDL Workflow Advisor

В этом разделе описываются шаги, необходимые для регистрации пользовательского исходного проекта в HDL Workflow Advisor.

1. Создайте исходный проект регистрацию файла с именем hdlcoder_ref_design_customization.m содержит список исходного проекта плагинов, сопоставленных с платой SoC.

Плагин исходного проекта является папкой пакета MATLAB, содержащей файл определения исходного проекта и все файлы, сопоставленные с дизайнерским проектом SoC. Файл регистрации исходного проекта должен также содержать имя связанной платы.

Следующий код описывает содержимое файла регистрации исходного проекта Zybo, содержащего исходный проект ZyboRegistration.Vivado2017_2 связана с платой ZYBO.

function [rd, boardName] = hdlcoder_ref_design_customization
% Reference design plugin registration file
% 1. The registration file with this name inside of a board plugin folder
%    will be picked up
% 2. Any registration file with this name on MATLAB path will also be picked up
% 3. The registration file returns a cell array pointing to the location of
%    the reference design plugins
% 4. The registration file also returns its associated board name
% 5. Reference design plugin must be a package folder accessible from
%    MATLAB path, and contains a reference design definition file
rd = {'ZyboRegistration.Vivado2017_2.plugin_rd', ...
     };
boardName = 'ZYBO';
end

2. Создайте файл определения исходного проекта.

Файл определения исходного проекта задает интерфейсы между пользовательским исходным проектом и HDL-ядром IP, которые будут сгенерированы рабочим процессом HDL Coder SoC.

Следующий код описывает содержимое файла определения исходного проекта Zybo plugin_rd.m связана с платой ZYBO который находится внутри плагина исходного проекта ZyboRegistration.Vivado2017_2. Свойство ReferenceDesignName определяет имя исходного проекта следующим образом Demo system в HDL Workflow Advisor.

function hRD = plugin_rd()
% Reference design definition
% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado');
hRD.ReferenceDesignName = 'Demo system';
hRD.BoardName = 'ZYBO';
% Tool information
hRD.SupportedToolVersion = {'2017.2','2017.4'};
% add custom Vivado design
hRD.addCustomVivadoDesign( ...
    'CustomBlockDesignTcl', 'design_led.tcl', ...
    'VivadoBoardPart','digilentinc.com:zybo:part0:1.0');
%% Add interfaces
% add clock interface
hRD.addClockInterface( ...
  'ClockConnection',   'clk_wiz_0/clk_out1', ...
  'ResetConnection',   'proc_sys_reset_0/peripheral_aresetn');
% add AXI4 and AXI4-Lite slave interfaces
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'axi_interconnect_0/M00_AXI', ...
    'BaseAddress',         '0x40010000', ...
    'MasterAddressSpace',  'processing_system7_0/Data');

В сложении к файлу определения исходного проекта плагин исходного проекта должен также содержать файлы проекта дизайна SoC.

Папка плагина исходного проекта Zybo ZyboRegistration.Vivado2017_2 должен содержать скрипт Tcl design_led.tcl экспортирован ранее из проекта Xilinx Vivado. Файл определения исходного проекта Zybo plugin_rd.m определяет файл проекта разработки SoC с помощью следующего оператора:

hRD.addCustomVivadoDesign('CustomBlockDesignTcl', 'design_led.tcl');

В дополнение к файлам проекта разработки SoC, plugin_rd.m также определяет интерфейсные соединения между пользовательским исходным проектом и HDL-ядром IP, показанным на следующем рисунке, посредством операторов:

hRD.addClockInterface( ...
  'ClockConnection',   'clk_wiz_0/clk_out1', ...
  'ResetConnection',   'proc_sys_reset_0/peripheral_aresetn');
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'axi_interconnect_0/M00_AXI', ...
    'BaseAddress',         '0x40010000', ...
    'MasterAddressSpace',  'processing_system7_0/Data');

Внимание: The 'BaseAddress' интерфейса AXI4 должен быть допустимым адресом в 'MasterAddressSpace' и не должны создавать конфликт адресов с другими периферийными устройствами на основе адресов в пользовательском исходном проекте.

Выполните рабочий процесс для платы Zybo

В предыдущих разделах обсуждались шаги по определению и регистрации платы Zybo и пользовательского исходного проекта в HDL Workflow Advisor для рабочего процесса SoC. В этом разделе мы используем пользовательскую плату и систему регистрации исходного проекта, чтобы сгенерировать IP-ядро HDL, которое мигает светодиодами на плате Zybo. Файлы, используемые в следующей демонстрации, расположены в,

  • matlab/toolbox/hdlcoder/hdlcoderdemos/customboards/ZYBO

1. Добавьте файл регистрации платы Zybo в путь MATLAB с помощью команды,

addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','ZYBO'));

2. Откройте модель Simulink, которая реализует мигание светодиода с помощью команды,

open_system('hdlcoder_led_blinking_4bit');

3. Запустите HDL Workflow Advisor из hdlcoder_led_blinking_4bit/led_counter подсистема щелчком правой кнопкой мыши по led_counter и выбрав HDL-код > HDL Workflow Advisor или просто щелкните Запустить HDL Workflow Advisor в модели.

В задаче Set Target > Set Target Device and Synthesis Tool выберите IP Core Generation для целевого рабочего процесса. ZYBO теперь появится в раскрывающемся списке Target Platform. Выберите ZYBO как целевая платформа.

4. Нажмите Run This Task, чтобы выполнить задачу Set Target Device and Synthesis Tool.

5. В задаче Set Target > Set Target Reference Design пользовательский исходный проект Demo system теперь отображается относительно поля Исходного проекта. Выберите Demo system и щелкните Запуск этой задачи.

6. В задаче 1.3 Set Target Interface выберите соединения, как показано на рисунке ниже, и нажмите Run This Task.

7. Следуйте шагам 3 и 4 из Сгенерируйте ядро IP HDL с помощью раздела HDL Workflow Advisor в примере Начало работы с платформой Xilinx Zynq, чтобы сгенерировать ядро IP и просмотреть отчет о генерации ядра IP.

8. Следуйте шагу 1 Интеграция IP-ядра с разделом Environment Xilinx Vivado примера начала работы с Targeting Xilinx Zynq Platform, чтобы интегрировать IP-ядро в исходный проект и создать проект vivado.

9. Теперь рассмотрим проект Xilinx Vivado, созданный рабочим процессом SoC после выполнения задачи Create Project в разделе Встраиваемая Система Integration. Следующий рисунок показывает дизайн блока проекта SoC, где мы выделили HDL IP Core. Поучительно сравнивать эту конструкцию блоков с предыдущей конструкцией блоков, используемой для экспорта пользовательских исходных проектов, для более глубокого понимания отношений между пользовательским исходным проектом и HDL IP Core.

10. Следуйте шагам 2, 3 и 4 Интегрируйте IP-ядро с разделом Environment Xilinx Vivado из примера Getting Starting with Targeting Xilinx Zynq Platform, чтобы сгенерировать модель программного интерфейса, сгенерировать поток битов FPGA и целевое устройство программы соответственно.

11. Светодиоды на плате Zybo теперь начнут мигать после загрузки битового потока. В сложение вы сможете управлять частотой и направлением мигания светодиода, выполнив модель программного интерфейса на процессоре Zynq ARM. Смотрите раздел «Генерация модели программного интерфейса» примера «Начало работы с таргетингом Xilinx Zynq Platform», чтобы контролировать частоту и направление мигания светодиода от модели сгенерированного программного обеспечения интерфейса.