В этом примере показано, как определить и зарегистрировать пользовательскую плату и дизайн ссылок в рабочем процессе 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.
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();
По умолчанию установка Vivado 2017.4 инструментов не будет иметь предустановленной части платы Zybo. Эти файлы должны быть загружены с веб-сайта Digilent. Так разархивируйте содержимое и перейдите в директорию Vivado, приведенный ниже, и копируйте обновленные файлы платы Zybo в инструменты xilinx vivado вручную.
C:\Xilinx\Vivado\2017.4\data\boards\board_files
в результате этого шага часть платы Zybo добавляется в список плат разработки при создании проекта vivado, специфичного для платы.
Примечание: В случае, если ссылка выше недоступна, получите файлы платы Zybo с сайта Digilent.
Исходный проект захватывает полную структуру однокристального проекта, определяя различные компоненты и их взаимосвязи. Рабочий процесс 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.
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.
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 и пользовательского исходного проекта в 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», чтобы контролировать частоту и направление мигания светодиода от модели сгенерированного программного обеспечения интерфейса.