Этот пример показывает, как задать и указать пользовательскую плату и исходный проект в рабочем процессе SoC HDL Coder™. Используя этот пример, вы сможете указать макетную плату Digilent® Zybo Zynq™ и пользовательский исходный проект в HDL Workflow Advisor для рабочего процесса Zynq.
Этот пример использует плату Zybo Zynq, но таким же образом, можно задать и указать пользовательскую плату или пользовательский исходный проект для других платформ Zynq.
Комплект Проекта Xilinx Vivado, с поддерживаемой версией, перечисленной в документации HDL Coder
Макетная плата Digilent® Zybo Zynq™ со вспомогательным набор
Пакет поддержки HDL Coder для Платформы Xilinx Zynq
Пакет поддержки Embedded Coder для Платформы Xilinx Zynq
1. Поймите функции, доступные на плате Zybo путем чтения справочника платы Zybo.
2. Настройте плату Zybo как показано в следующей фигуре:
3. Гарантируйте, что вы правильно установили драйверы устройств COM-порта USB на своем компьютере.
4. Сконфигурируйте перемычку режима начальной загрузки JP5
, чтобы включить загрузку изображения Linux Zynq от карты памяти microSD, соединенной с коннектором J4
как показано в следующей фигуре.
5. Сконфигурируйте перемычку выбора источника питания JP7
, чтобы использовать USB в качестве источника питания как показано в следующей фигуре.
6. Соедините разделяемый USB-порт UART/JTAG на плате Zybo к вашему компьютеру.
7. Соедините плату Zybo со своим использующим компьютеры кабель Ethernet. IP-адресом Zybo по умолчанию является 192.168.1.110
.
8. Загрузите изображение Linux Zybo Zynq, извлеките 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();
Стандартной установкой инструмент Vivado 2017.4 не будет иметь части платы Zybo предварительно установленной. Эти файлы должны быть загружены с веб-сайта Digilent. Поэтому разархивируйте содержимое и перейдите к директории установки приведенного ниже Vivado и скопируйте обновленные файлы платы Zybo в xilinx vivado инструменты вручную.
C:\Xilinx\Vivado\2017.4\data\boards\board_files
как результат этого шага, часть платы Zybo добавляется к списку макетных плат при создании vivado проекта, характерного для платы.
Примечание: В случае, если выше ссылки недоступно, получите файлы платы Zybo от веб-сайта Digilent.
Исходный проект получает полную структуру проекта SoC, задавая различные компоненты и их соединения. Рабочий процесс SoC HDL Coder генерирует ядро IP, которое объединяется с исходным проектом и затем используется, чтобы программировать плату SoC. Следующая фигура описывает отношение между исходным проектом, ядром IP HDL и платой SoC.
В этом разделе мы обрисовываем в общих чертах основные шаги, необходимые, чтобы создать и экспортировать простой исходный проект с помощью среды Интегратора IP Xilinx Vivado. Для получения дополнительной информации об инструменте IP Integrator, обратитесь к документации Xilinx.
1. Создайте пустой проект RTL Xilinx Vivado с помощью части платы Zybo
в качестве части платы по умолчанию как показано в следующей фигуре:
2. Создайте пустую блочную конструкцию и добавьте блок ZYNQ7 Processing System
IP. Запустите автоматизацию блока как показано в фигуре, чтобы установить предварительную установку платы для Zybo, который содержит параметры для IP Системы обработки ZYNQ7, связанного с Настройкой MIO, настройкой Часов и Настройкой DDR.
В следующей фигуре вы видите, что периферийные устройства MIO явлены отмеченным соответствием с определением платы Zybo, когда результат применяет предварительную установку платы.
3. Завершите блочную конструкцию как показано в следующей фигуре:
Заметьте, что блочная конструкция не содержит информации о ядре IP HDL.
4. Экспортируйте завершенную блочную конструкцию как скрипт Tcl design_led.tcl
как показано в следующей фигуре:
Экспортируемый скрипт Tcl (design_led.tcl
) составляет пользовательский исходный проект. Скрипт Tcl будет использоваться в HDL Coder рабочий процесс SoC, чтобы воссоздать блочную конструкцию и интегрировать сгенерированное ядро IP HDL с блочной конструкцией в проекте Xilinx Vivado.
В этом разделе мы обрисовываем в общих чертах шаги, необходимые, чтобы указать плату 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. Создайте файл определения платы.
Файл определения платы содержит информацию о плате SoC.
Следующий код описывает содержимое файла определения платы Zybo plugin_board.m
, который находится в плагине платы ZyboRegistration
.
Информация о местоположениях контакта ввода-вывода FPGA ('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.
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. Создайте файл определения исходного проекта.
Файл определения исходного проекта задает интерфейсы между пользовательским исходным проектом и ядром IP HDL, которое будет сгенерировано 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.
Папка ZyboRegistration.Vivado2017_2
плагина исходного проекта Zybo должна содержать скрипт Tcl design_led.tcl
, экспортируемый ранее из проекта Xilinx Vivado. Файл определения исходного проекта Zybo plugin_rd.m
идентифицирует файл дизайн-проекта SoC через следующий оператор:
hRD.addCustomVivadoDesign('CustomBlockDesignTcl', 'design_led.tcl');
В дополнение к файлам дизайн-проекта SoC plugin_rd.m
также задает интерфейсные связи между пользовательским исходным проектом и ядром IP HDL, обозначенным в следующей фигуре через операторы:
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');
Внимание: 'BaseAddress'
интерфейса AXI4 должен быть допустимым адресом в 'MasterAddressSpace'
и не должен создавать конфликт адреса с другими основанными на адресе периферийными устройствами в пользовательском исходном проекте.
Предыдущие разделы обсудили шаги, чтобы задать и указать плату 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, которая реализует мигание LED с помощью команды,
open_system('hdlcoder_led_blinking_4bit');
3. Запустите HDL Workflow Advisor от подсистемы hdlcoder_led_blinking_4bit/led_counter
путем щелчка правой кнопкой по подсистеме led_counter
и выбора HDL Code> HDL Workflow Advisor или только щелкните, Launch HDL Workflow Advisor окружают модель.
В Цели Набора> Целевое устройство Набора и задача Инструмента Синтеза, выберите IP Core Generation для Целевого рабочего процесса. ZYBO
теперь появляется в выпадающей Целевой платформе списка. Выберите ZYBO
как Целевую платформу.
4. Нажмите Run This Task, чтобы выполнить задачу Инструмента Целевого устройства и Синтеза Набора.
5. В Цели Набора> Целевая задача Исходного проекта Набора, пользовательский исходный проект Demo system
теперь появляется против поля Исходного проекта. Выберите Demo system
и нажмите на Run This Task.
6. В Задаче 1.3 Целевых Интерфейса Набора выберите связи как показано в фигуре ниже и затем нажмите на Run This Task.
7. Следуйте за шагом 3, и шаг 4 Генерируют ядро IP HDL использование раздела HDL Workflow Advisor Начала работы с Рабочим процессом Элемента кода аппаратного программного обеспечения для примера Платформы Xilinx Zynq сгенерировать ядро IP и просмотреть отчет генерации ядра IP.
8. Следуйте шаг 1 Интегрируют ядро IP с разделом Environment Xilinx Vivado Начала работы с Рабочим процессом Элемента кода аппаратного программного обеспечения для примера Платформы Xilinx Zynq интегрировать ядро IP в исходном проекте и создать vivado проект.
9. Теперь давайте исследуем проект Xilinx Vivado, созданный рабочим процессом SoC после завершения Создать задачи Проекта при Интегрировании Встраиваемой системы. Следующие данные показывают блочную конструкцию проекта SoC, где мы подсветили Ядро IP HDL. Это поучительно, чтобы сравнить эту блочную конструкцию с предыдущей блочной конструкцией, используемой, чтобы экспортировать пользовательский исходный проект для более глубокого понимания отношения между пользовательским исходным проектом и Ядром IP HDL.
10. Следуйте шаги 2, 3 и 4 Интегрируют ядро IP с разделом Environment Xilinx Vivado Начала работы с Рабочим процессом Элемента кода аппаратного программного обеспечения для примера Платформы Xilinx Zynq сгенерировать модель программного интерфейса, сгенерировать поток битов FPGA и целевое устройство программы соответственно.
11. Светодиоды на плате Zybo теперь начнут мигать после загрузки потока битов. Кроме того, вы сможете управлять частотой мигания LED и направлением путем выполнения модели программного интерфейса на процессоре Zynq ARM. Относитесь, чтобы Сгенерировать раздел модели программного интерфейса Начала работы с Рабочим процессом Элемента кода аппаратного программного обеспечения для примера Платформы Xilinx Zynq управлять частотой мигания LED и направлением из модели интерфейса сгенерированного программного обеспечения.