exponenta event banner

Определение пользовательской платы и эталонного проекта для рабочего процесса Zynq

В этом примере показано, как определить и зарегистрировать пользовательскую и ссылочную конструкцию платы в рабочем процессе 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.

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

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();

Регистрация компонентов платы 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

Эталонная конструкция фиксирует полную структуру конструкции 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

В этом разделе описываются шаги, необходимые для регистрации платы 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

В этом разделе описываются шаги, необходимые для регистрации пользовательского ссылочного проекта в методе 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' и не должен создавать конфликта адресов с другими периферийными устройствами на основе адресов в пользовательской ссылочной конструкции.

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

В предыдущих разделах обсуждались шаги по определению и регистрации платы 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» для управления частотой и направлением мигания светодиодного индикатора из созданной модели интерфейса программного обеспечения.