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

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

Настройте плату Zybo

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

Укажите часть платы Zybo в инструменте Xilinx Vivado

Стандартной установкой инструмент 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.

Создайте и экспортируйте пользовательское использование исходного проекта Xilinx Vivado

Исходный проект получает полную структуру проекта 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

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

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

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

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