В этом примере показано, как определить и зарегистрировать пользовательскую и ссылочную конструкцию платы в рабочем процессе Zynq ®.
Используя этот пример, вы сможете зарегистрировать плату разработки Digilent ® Zybo Zynq и пользовательский эталонный дизайн в помощнике по рабочим процессам HDL для рабочего процесса Zynq.
В этом примере используется плата Zybo Zynq, но таким же образом можно определить и зарегистрировать пользовательскую плату или пользовательскую эталонную конструкцию для других платформ Zynq.
Xilinx Vivado Design Suite с поддерживаемой версией, указанной в документации HDL Coder
Плата для разработчиков Digilent ® Zybo Zynq™ с комплектом аксессуаров
Пакет поддержки кодера HDL для платформы Xilinx Zynq
Пакет поддержки встроенного кодера для платформы 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. Подключите общий порт UART/JTAG USB на плате 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.
Эталонная конструкция фиксирует полную структуру конструкции SoC, определяя различные компоненты и их взаимосвязи. Рабочий процесс SoC кодера HDL генерирует ядро 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. Выполните проектирование блока, как показано на следующем рисунке:

Обратите внимание, что конструкция блока не содержит никакой информации о ядре HDL IP.
4. Экспорт завершенного проекта блока в виде сценария Tcl design_led.tcl как показано на следующем рисунке:

Экспортированный сценарий Tcl (design_led.tcl) составляют пользовательскую эталонную конструкцию. Сценарий TCL будет использоваться в рабочем процессе системы кодирования HDL для повторного создания дизайна блока и интеграции созданного IP-ядра HDL с дизайном блока в проекте Xilinx Vivado.
В этом разделе описываются шаги, необходимые для регистрации платы Zybo в консультанте по рабочим процессам HDL.
1. Создание файла регистрации платы с именем hdlcoder_board_customization.m и добавьте его в путь MATLAB.
Файл регистрации платы содержит список подключаемых модулей платы. Подключаемый модуль платы - это папка пакета MATLAB, содержащая файл определения платы и все ссылочные подключаемые модули, связанные с платой.
Следующий код описывает содержимое файла регистрации платы, содержащего подключаемый модуль платы ZyboRegistration для регистрации платы Zybo в помощнике по рабочим процессам HDL.
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.
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, которые будут генерироваться в рабочем процессе SoC кодера HDL.
Следующий код описывает содержимое файла определения конструкции ссылки Zybo plugin_rd.m связанные с платой ZYBO который находится внутри подключаемого модуля эталонного дизайна ZyboRegistration.Vivado2017_2. Собственность ReferenceDesignName определяет имя ссылочной конструкции как Demo system в Консультаторе по рабочим процессам HDL.
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 также определяет интерфейсные соединения между пользовательским эталонным дизайном и ядром 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 для рабочего процесса 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 из hdlcoder_led_blinking_4bit/led_counter путем щелчка правой кнопкой мыши по led_counter и выберите команду Код HDL (HDL Code) > Помощник по рабочим процессам HDL (HDL Workflow Advisor) или просто щелкните в модели поле Запуск помощника по рабочим процессам HDL (Launch HDL Workflow Advisor
В задании Set Target > Set Target Device and Synthesis Tool выберите IP Core Generation для рабочего процесса Target. ZYBO появится в раскрывающемся списке Целевая платформа. Выбрать ZYBO в качестве целевой платформы.

4. Щелкните Выполнить эту задачу, чтобы завершить задачу Задать целевое устройство и средство синтеза.
5. В задаче «Задание целевого объекта» > «Задание целевого ссылочного проекта» пользовательская ссылочная конструкция Demo system появится в поле Ссылочный дизайн (Reference design). Выбрать Demo system и нажмите кнопку Run This Task (Выполнить эту задачу).

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

7. Для создания IP-ядра и просмотра отчета о создании IP-ядра выполните шаги 3 и 4 из раздела «Создание IP-ядра ЛПВП» примера «Начало работы с платформой Targeting Xilinx Zynq».
8. Выполните шаг 1 в разделе Интеграция ядра IP с средой Xilinx Vivado примера «Начало работы с платформой Targeting Xilinx Zynq», чтобы интегрировать ядро IP в эталонный проект и создать проект vivado.
9. Теперь рассмотрим проект Xilinx Vivado, созданный рабочим процессом SoC, после выполнения задачи Создать проект в разделе Интеграция со встроенной системой. На следующем рисунке показан блочный проект SoC, в котором выделен IP-ядро HDL. Рекомендуется сравнить эту конструкцию блока с предыдущей конструкцией блока, используемой для экспорта пользовательской конструкции ссылки, для более глубокого понимания взаимосвязи между пользовательской конструкцией ссылки и IP-ядром HDL.

10. Выполните шаги 2, 3 и 4 раздела «Интеграция ядра IP с средой Xilinx Vivado» примера «Начало работы с платформой Targeting Xilinx Zynq», чтобы создать модель интерфейса программного обеспечения, создать битовый поток FPGA и целевое устройство программы соответственно.
11. Светодиодные индикаторы на плате Zybo начнут мигать после загрузки битового потока. Кроме того, вы сможете управлять частотой и направлением мигания светодиодов, выполняя модель программного интерфейса на процессоре Zynq ARM. См. раздел Создание модели интерфейса программного обеспечения примера «Начало работы с платформой Targeting Xilinx Zynq» для управления частотой и направлением мигания светодиодного индикатора из созданной модели интерфейса программного обеспечения.