В этом примере показано, как задать и указать пользовательскую плату и исходный проект в рабочем процессе Zynq®.
Используя этот пример, вы сможете указать макетную плату 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
Примечание: Этот пример использует плату преподавателя Digilent® Zybo Zynq-7000 ARM/FPGA SoC. Этот пример не работает над Digilent® Zybo Z7: макетная плата Zynq-7000 ARM/FPGA SoC, которые имеют два варианта Zybo Z7-10 и Zybo Z7-20.
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 pre-installed.These, файлы должны быть загружены с веб-сайта 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 и направлением из модели интерфейса сгенерированного программного обеспечения.