Начало работы с предназначением для Zynq UltraScale + платформа MPSoC

В этом примере показано, как использовать рабочий процесс элемента кода аппаратного программного обеспечения, чтобы мигнуть светодиодами на различных частотах на Xilinx® Zynq® UltraScale + MPSoC.

Введение

Этим примером является пошаговое руководство, которое помогает вам использовать программное обеспечение HDL Coder™, чтобы сгенерировать пользовательское ядро IP HDL, которое мигает светодиодами на Xilinx Zynq UltraScale + оценочный комплект MPSoC ZCU102 и показывает, как использовать Embedded Coder®, чтобы сгенерировать код С, который работает на процессоре ARM®, чтобы управлять частотой мигания LED.

Можно использовать MATLAB® и Simulink®, чтобы спроектировать, симулировать, и проверить приложение, выполнить то, что - если сценарии с алгоритмами, и оптимизируют параметры. Можно затем подготовить проект к аппаратной и программной реализации на Xilinx Zynq UltraScale + MPSoC путем решения, какие системные элементы будут выполняться программируемой логикой, и какие системные элементы будут работать на Коре-A53 ARM.

Используя ведомый рабочий процесс, показанный в этом примере, вы автоматически генерируете HDL-код для программируемой логики с помощью HDL Coder, генерируете код С для процессора ARM с помощью Embedded Coder и реализуете проект на Xilinx Zynq UltraScale + Платформа MPSoC.

В этом рабочем процессе вы выполняете следующие шаги:

  1. Настройте свой Xilinx Zynq UltraScale + оборудование MPSoC ZCU102 и инструменты.

  2. Разделите свой проект для аппаратной и программной реализации.

  3. Сгенерируйте ядро IP HDL использование HDL Workflow Advisor.

  4. Интегрируйте ядро IP в проект Xilinx Vivado и программируйте Xilinx Zynq UltraScale + оборудование MPSoC.

  5. Сгенерируйте модель программного интерфейса.

  6. Сгенерируйте код С из модели программного интерфейса и запустите его на процессоре ARM Cortex-A53.

  7. Настройки параметров и получение следуют из оборудования Zynq с помощью Режима external mode.

Требования

  1. Комплект Проекта Xilinx Vivado, с поддерживаемой версией, перечисленной в документации HDL Coder

  2. Xilinx Zynq UltraScale + оценочный комплект MPSoC ZCU102

  3. Пакет поддержки HDL Coder для платформы Xilinx Zynq

  4. Пакет поддержки Embedded Coder для платформы Xilinx Zynq

Настройте свой Xilinx Zynq UltraScale + оборудование MPSoC и инструменты

1. Настройте Xilinx Zynq UltraScale + оценочный комплект MPSoC ZCU102 как показано в фигуре ниже. Чтобы узнать больше о настройке оборудования ZCU102, обратитесь к документации Xilinx.

1.1. Убедитесь SW6 переключатель установлен как показано в фигуре ниже, таким образом, можно загрузить Linux от SD-карты.

1.2 Соедините свой компьютер с коннектором UART USB ZCU102 с помощью кабеля micro-USB. Убедитесь, что ваши драйверы USB-устройства, такой что касается Silicon Labs CP210x USB к Мосту UART, установлены правильно. В противном случае ищите драйверы онлайн и установите их.

1.3 Соедините Xilinx Zynq UltraScale + плата MPSoC к вашему использующему компьютеры кабель Ethernet.

2. Установите HDL Coder и Пакеты Поддержки Embedded Coder для Платформы Xilinx Zynq, если вы уже не имеете.

2.1 На вкладке MATLAB Home в разделе Environment Нажмите Add-Ons> Manage Add-Ons.

2.2 В Add-On Manager запустите процесс настройки оборудования путем нажатия кнопки настройки для Пакета Поддержки Embedded Coder для Платформы Xilinx Zynq.

3. Убедитесь, что вы используете изображение SD-карты, обеспеченное Пакетом Поддержки Embedded Coder для Платформы Xilinx Zynq.

4. Настройте аппаратную связь Zynq путем ввода следующей команды в окно команды MATLAB:

h = zynq

zynq функция входит в систему оборудования через COM-порт и запускает ifconfig команда, чтобы получить IP-адрес платы. Эта функция также тестирует соединение Ethernet.

5. Можно опционально протестировать последовательную связь с помощью следующей настройки с помощью программы, такой как PuTTY™. BaudRate: 115200DataBits: 8StopBits: 1Четность: NoneFlowControl: None. Необходимо смочь наблюдать Linux, загружающий вход в систему последовательная консоль, когда вы подвергаете циклу включения и выключения питания плату MPSoC. Необходимо закрыть эту последовательную связь перед использованием zynq функционируйте снова.

6. Настройте инструмент path синтеза Xilinx Vivado с помощью следующей команды в окне команды MATLAB. Используйте свой собственный путь к установке Vivado, когда вы запустите команду.

hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2017.4\bin\vivado.bat');

Разделите свой проект для аппаратной и программной реализации

Первый шаг рабочего процесса элемента кода аппаратного программного обеспечения Zynq должен решить который части вашего проекта реализовать на программируемой логике, и который части работать на процессоре ARM.

Группируют все блоки, которые вы хотите реализовать на программируемой логике в Атомарную подсистему. Эта Атомарная подсистема является контуром вашего раздела аппаратного программного обеспечения. Все блоки в этой подсистеме будут реализованы на программируемой логике, и все блоки вне этой подсистемы будут работать на процессоре ARM.

В этом примере подсистема led_counter является аппаратной подсистемой. Это моделирует счетчик, который мигает светодиодами на плате FPGA. Два входных порта, Blink_frequency и Blink_direction, являются портами управления, которые определяют частоту мигания LED и направление. Все блоки за пределами подсистемы led_counter используются в реализации программного обеспечения.

В Simulink можно использовать Усиление Ползунка или Ручной блок switch, чтобы настроить входные значения аппаратной подсистемы. Во встроенном программном обеспечении это означает, что процессор ARM управляет сгенерированным ядром IP путем записи в интерфейс AXI доступных регистров. Выходной порт аппаратной подсистемы, LED, связывает с оборудованием LED. Выходной порт, Read_Back, может использоваться, чтобы считать данные назад в процессор.

open_system('hdlcoder_led_blinking');

Сгенерируйте ядро IP HDL использование HDL Workflow Advisor

Используя рабочий процесс Генерации Ядра IP в HDL Workflow Advisor позволяет вам автоматически сгенерировать и допускающий повторное использование модуль ядра IP с обеспечением совместного доступа из модели Simulink. Сгенерированное ядро IP спроектировано, чтобы быть соединенным со встраиваемым процессором на устройстве FPGA. HDL Coder генерирует HDL-код от блоков Simulink, и также генерирует HDL-код для логики интерфейса AXI соединение ядра IP к встраиваемому процессору. Пакеты HDL Coder все сгенерированные файлы в папку ядра IP. Можно затем интегрировать сгенерированное ядро IP с большим FPGA встроенный проект в среде Xilinx Vivado.

1. Запустите рабочий процесс генерации ядра IP.

1.1. Откройте HDL Workflow Advisor от hdlcoder_led_blinking/led_counter подсистема путем щелчка правой кнопкой по led_counter подсистема и выбор HDL Code> HDL Workflow Advisor.

1.2. В Цели Набора> Целевое устройство Набора и задача Инструмента Синтеза, для Целевого рабочего процесса, выбирают IP Core Generation.

1.3. Для Целевой платформы выберите Xilinx Zynq UltraScale + Оценочный комплект MPSoC ZCU102. Если у вас нет этой опции, выберите Get больше, чтобы открыть Инсталлятор Пакета Поддержки. В Инсталляторе Пакета Поддержки выберите Xilinx Zynq Platform и следуйте инструкциям, предоставленным Инсталлятором Пакета Поддержки, чтобы завершить установку.

1.4. Нажмите Run This Task, чтобы запустить задачу Инструмента Целевого устройства и Синтеза Набора.

1.5 В Цели Набора> Целевая задача Исходного проекта Набора, выберите систему Default.

1.6. Нажмите Run This Task, чтобы запустить Целевую задачу Исходного проекта Набора.

2. Сконфигурируйте целевой интерфейс.

Сопоставьте каждый порт в своем DUT к одному из целевых интерфейсов ядра IP. В этом примере входные порты Blink_frequency и Blink_direction сопоставлены с интерфейсом AXI4-Lite, таким образом, HDL Coder генерирует интерфейс AXI доступные регистры для них. Выходной порт LED сопоставлен с внешним интерфейсом, светодиодная Общая цель [0:7], который связывает с оборудованием LED на плате Zynq.

2.1 В Цели Набора> Поставившая Целевая Интерфейсная задача, выберите AXI4-Lite for Blink_frequency, Blink_direction и Read_back.

2.2 Выберите LEDs General Purpose [0:7] для LED.

2.3 В Цели Набора> Целевая задача Частоты Набора, выберите Target Frequency в качестве 50 МГц.

3. Сгенерируйте ядро IP.

Чтобы сгенерировать ядро IP, щелкните правой кнопкой по Generate RTL Code и задаче IP Core и выберите Run to Selected Task.

4. Сгенерируйте и просмотрите отчет ядра IP.

После того, как вы сгенерируете пользовательское ядро IP, файлы ядра IP находятся в ipcore папке в вашей папке проекта. HTML пользовательский отчет ядра IP сгенерирован вместе с пользовательским ядром IP. Отчет описывает поведение и содержимое сгенерированного пользовательского ядра IP.

Интегрируйте ядро IP со средой Xilinx Vivado

В этой части рабочего процесса вы вставляете свое сгенерированное ядро IP в исходный проект встраиваемой системы, генерируете поток битов FPGA и загружаете поток битов на оборудование Zynq.

Исходный проект является предопределенным проектом Xilinx Vivado. Это содержит все элементы, программное обеспечение Xilinx должно развернуть ваш проект в платформу Zynq, за исключением пользовательского IP базовое и встроенное программное обеспечение, которое вы генерируете.

1. Чтобы объединяться со средой Xilinx Vivado, выберите Создать задачу Проекта при Интегрировании Встраиваемой системы и нажмите Run This Task. Проект Xilinx Vivado с Интегратором IP, встроенный проект сгенерирован, и ссылка на проект, предоставлен в диалоговом окне. Можно опционально открыть проект смотреть.

2. Если у вас есть лицензия Embedded Coder, можно сгенерировать модель программного интерфейса в следующей задаче, Сгенерировать Модель Программного интерфейса. Детали модели программного интерфейса объяснены в следующем разделе этого примера, "Сгенерируйте модель программного интерфейса".

3. Создайте поток битов FPGA в задаче Потока битов FPGA Сборки. Убедитесь процесс сборки Запуска внешне, опция проверяется, таким образом, инструмент синтеза Xilinx запустится в отдельном процессе из MATLAB. Ожидайте процесса инструмента синтеза, чтобы закончить запускаться во внешнем командном окне.

4. После того, как поток битов сгенерирован, выберите задачу Целевого устройства Программы. Выберите Download for Programming method, чтобы загрузить поток битов FPGA на SD-карту на Xilinx Zynq UltraScale + плата MPSoC, таким образом, ваш проект будет автоматически перезагружен, когда вы подвергнете циклу включения и выключения питания плату Zynq. нажмите Run This Task, чтобы программировать оборудование Zynq.

После того, как вы будете программировать оборудование FPGA, LED начинает мигать на вашем Xilinx Zynq UltraScale + плата MPSoC ZCU102.

Затем вы сгенерируете код С, чтобы работать на процессоре ARM, чтобы управлять частотой мигания LED и направлением.

Сгенерируйте модель программного интерфейса

В HDL Workflow Advisor, после того, как вы генерируете ядро IP, можно создать vivado проект на шаге 4.1, можно опционально сгенерировать модель программного интерфейса в Интегрировании Встраиваемой системы>, Генерируют задачу Модели Программного интерфейса.

Модель программного интерфейса содержит часть вашего проекта, который запускается в программном обеспечении. Это включает все блоки за пределами подсистемы HDL и заменяет подсистему HDL на блоки драйверов AXI. Если у вас есть лицензия Embedded Coder, можно автоматически сгенерировать встроенный код С из модели программного интерфейса, создать ее и запустить исполняемый файл на Linux на процессоре ARM. Сгенерированное встроенное программное обеспечение включает код драйвера AXI, сгенерированный от блоков драйверов AXI, который управляет ядром IP HDL.

Запустите Сгенерировать задачу Модели Программного интерфейса и смотрите, что сгенерирована новая модель. Диалоговое окно задачи показывает ссылку на модель.

В модели интерфейса сгенерированного программного обеспечения "led_counter" подсистема заменяется блоками драйверов AXI, который генерирует интерфейсную логику между процессором ARM и FPGA.

Запустите модель программного интерфейса на оборудовании Zynq ZCU102

В этой части рабочего процесса вы конфигурируете модель интерфейса сгенерированного программного обеспечения, автоматически генерируете встроенный код С и запускаете вашу модель на процессоре ARM в оборудовании Zynq в Режиме external mode.

Когда вы моделируете и разрабатываете алгоритм, полезно контролировать и настроить алгоритм, в то время как это работает на оборудовании. Функция Режима external mode в Simulink включает эту возможность. В этом режиме ваш алгоритм сначала развертывается на процессоре ARM в оборудовании Zynq, и затем соединяется с моделью Simulink на хосте - компьютере посредством соединения Ethernet.

Основная роль модели Simulink должна настроить и контролировать алгоритм, работающий на оборудовании. Поскольку процессор ARM соединяется с ядром IP HDL через интерфейс AXI, можно использовать Режим external mode для настроек параметров и собрать данные от FPGA.

  1. В сгенерированной модели откройте диалоговое окно Configuration Parameters.

  2. Выберите Solver и установите "Время остановки" на "inf".

  3. В меню модели выберите Simulation> Mode> External.

  4. Щелкните по кнопке Run на панели инструментов модели. Embedded Coder создает модель, загружает исполняемый файл ARM на Xilinx Zynq UltraScale + оборудование MPSoC ZCU102, выполняет его и соединяет модель с исполняемым файлом, работающим на оборудовании Zynq.

  5. Дважды кликните блок Slider Gain. Измените значение Усиления Ползунка и наблюдайте изменение в частоте массива LED, мигающего на оборудовании Zynq. Дважды кликните Ручной блок switch, чтобы переключить направление мигающих светодиодов.

  6. Дважды кликните осциллограф, соединенный с выходным портом Read_back, и заметьте, что выходные данные ядра IP FPGA получены и переданы обратно в Осциллограф Simulink.

  7. По окончании, изменив параметры модели, нажимаете кнопку Stop на модели.

Сводные данные

В этом примере показано, как рабочий процесс элемента кода аппаратного программного обеспечения помогает автоматизировать развертывание вашего MATLAB и проекта Simulink к Ультрашкале Xilinx Zynq + MPSoC. Можно исследовать лучшие способы разделить и развернуть проект путем итерации через рабочий процесс.

Следующая схема показывает высокоуровневое изображение рабочего процесса, который вы прошли в этом примере. Чтобы узнать больше об аппаратном и программном рабочем процессе элемента кода, обратитесь к документации HDL Coder.