В этом примере показано, как использовать рабочий процесс элемента кода аппаратного программного обеспечения, чтобы мигнуть светодиодами на различных частотах на оценочном комплекте Xilinx® Zynq® ZC702.
Этим примером является пошаговое руководство, которое помогает вам использовать HDL Coder™, чтобы сгенерировать пользовательское ядро IP HDL, которое мигает светодиодами на оценочном комплекте Xilinx Zynq ZC702 и показывает, как использовать Embedded Coder®, чтобы сгенерировать код С, который работает на процессоре ARM®, чтобы управлять частотой мигания LED.
Можно использовать MATLAB® и Simulink®, чтобы спроектировать, симулировать, и проверить приложение, выполнить то, что - если сценарии с алгоритмами, и оптимизируют параметры. Можно затем подготовить проект к аппаратной и программной реализации на Zynq-7000 AP SoC путем решения, какие системные элементы будут выполняться программируемой логикой, и какие системные элементы будут работать на ARM Cortex-A9.
Используя ведомый рабочий процесс, показанный в этом примере, вы автоматически генерируете HDL-код для программируемой логики с помощью HDL Coder, генерируете код С для ARM с помощью Embedded Coder и реализуете проект на Платформе Xilinx Zynq.
В этом рабочем процессе вы выполняете следующие шаги:
Настройте свое оборудование Zynq и инструменты.
Разделите свой проект для аппаратной и программной реализации.
Сгенерируйте ядро IP HDL использование HDL Workflow Advisor.
Интегрируйте ядро IP в проект Xilinx Vivado и программируйте оборудование Zynq.
Сгенерируйте модель программного интерфейса.
Сгенерируйте код С из модели программного интерфейса и запустите его на процессоре ARM Cortex-A9.
Настройки параметров и получение следуют из оборудования Zynq с помощью Режима external mode.
Для получения дополнительной информации обратитесь к другим более усовершенствованным примерам, и документации Embedded Coder и HDL Coder.
Набор Проекта Xilinx Vivado, с поддерживаемой версией, перечисленной в документации HDL Coder
Оценочный комплект Xilinx Zynq-7000 SoC ZC702
Пакет поддержки HDL Coder для платформы Xilinx Zynq
Пакет поддержки Embedded Coder для платформы Xilinx Zynq
1. Настройте оценочный комплект Xilinx Zynq ZC702 как показано на рисунке ниже. Чтобы узнать больше о настройке оборудования ZC702, обратитесь к документации Xilinx.
1.1. Убедитесь SW16
переключатель установлен как показано на рисунке ниже, таким образом, можно загрузить Linux от SD-карты.
1.2. Убедитесь SW10
переключатель (вход цепи JTAG выбирают двухпозиционный Dip-переключатель) установлен как показано на рисунке ниже, таким образом, можно использовать интерфейс Digilent USB-to-JTAG (U23). Положение 1: Off; Положение 2: On.
1.3 Соедините свой компьютер с коннектором UART USB с помощью кабеля micro-USB. Убедитесь, что ваши драйверы USB-устройства, такой что касается Silicon Labs CP210x USB к Мосту UART, установлены правильно. В противном случае ищите драйверы онлайн и установите их.
1.4 Соедините свой компьютер и плату Zynq с помощью кабеля Ethernet.
2. Установите HDL Coder и Пакеты Поддержки Embedded Coder для Платформы Xilinx Zynq, если вы уже не имеете. Чтобы запустить инсталлятор, перейдите к панели инструментов MATLAB и нажмите Add-Ons> Get Hardware Support Packages. Для получения дополнительной информации обратитесь к Документации по установке Пакета Поддержки.
3. Убедитесь, что вы используете изображение SD-карты, обеспеченное Пакетом Поддержки Embedded Coder для Платформы Xilinx Zynq. Если необходимо обновить изображение SD-карты, обратитесь к разделу Hardware Setup этого документа.
4. Настройте аппаратную связь Zynq путем ввода следующей команды в окно команды MATLAB:
h = zynq
zynq
функция входит в систему оборудования через COM-порт и запускает ifconfig
команда, чтобы получить IP-адрес платы. Эта функция также тестирует соединение Ethernet.
5. Можно опционально протестировать последовательную связь с помощью следующей настройки с помощью программы, такой как PuTTY™. BaudRate: 115200
DataBits: 8
StopBits: 1
Четность: None
FlowControl: None
. Необходимо смочь наблюдать Linux, загружающий вход в систему последовательная консоль, когда вы подвергаете циклу включения и выключения питания плату Zynq. Необходимо закрыть эту последовательную связь перед использованием zynq
функционируйте снова.
6. Настройте инструмент path синтеза Xilinx Vivado используя следующую команду в окне команды MATLAB. Используйте свой собственный путь к установке Vivado, когда вы запустите команду.
hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2019.1\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 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 ZC702. Если у вас нет этой опции, выберите 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 в исходный проект встраиваемой системы, генерируете поток битов 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-карту на плате Zynq, таким образом, ваш проект будет автоматически перезагружен, когда вы подвергнете циклу включения и выключения питания плату Zynq. нажмите Run This Task, чтобы программировать оборудование Zynq.
После того, как вы будете программировать оборудование FPGA, LED начинает мигать на вашей плате Zynq.
Затем вы сгенерируете код С, чтобы работать на процессоре ARM, чтобы управлять частотой мигания LED и направлением.
В HDL Workflow Advisor, после того, как вы генерируете ядро IP и вставляете его в исходный проект Vivado, можно опционально сгенерировать модель программного интерфейса в Интегрировании Встраиваемой системы>, Генерируют задачу Модели Программного интерфейса.
Модель программного интерфейса содержит часть вашего проекта, который запускается в программном обеспечении. Это включает все блоки за пределами подсистемы HDL и заменяет подсистему HDL на блоки драйверов AXI. Если у вас есть лицензия Embedded Coder, можно автоматически сгенерировать встроенный код из модели программного интерфейса, создать ее и запустить исполняемый файл на Linux на процессоре ARM. Сгенерированное встроенное программное обеспечение включает код драйвера AXI, сгенерированный от блоков драйверов AXI, который управляет ядром IP HDL.
Запустите Сгенерировать задачу Модели Программного интерфейса и смотрите, что сгенерирована новая модель. Диалоговое окно задачи показывает ссылку на модель.
В модели интерфейса сгенерированного программного обеспечения "led_counter" подсистема заменяется блоками драйверов AXI, которые генерируют интерфейсную логику между процессором ARM и FPGA.
В этой части рабочего процесса вы конфигурируете модель интерфейса сгенерированного программного обеспечения, автоматически генерируете встроенный код С и запускаете вашу модель на процессоре ARM в оборудовании Zynq в Режиме external mode.
Когда вы моделируете и разрабатываете алгоритм, полезно контролировать и настроить алгоритм, в то время как это работает на оборудовании. Функция Режима external mode в Simulink включает эту возможность. В этом режиме ваш алгоритм сначала развертывается на процессоре ARM в оборудовании Zynq, и затем соединяется с моделью Simulink на хосте - компьютере посредством соединения Ethernet.
Основная роль модели Simulink должна настроить и контролировать алгоритм, работающий на оборудовании. Поскольку процессор ARM соединяется с ядром IP HDL через интерфейс AXI, можно использовать Режим external mode для настроек параметров и собрать данные от FPGA.
В сгенерированной модели нажмите на панель Hardware и перейдите к настройкам Hardware, чтобы открыть диалоговое окно Configuration Parameter.
Выберите Solver и установите "Время остановки" на "inf".
От АППАРАТНОЙ панели нажмите кнопку Monitor & Tune на панели инструментов модели, чтобы запустить вашу модель на процессоре ARM в оборудовании Zynq ZC702 в Режиме external mode. Embedded Coder создает модель, загружает исполняемый файл ARM на оборудование Zynq ZC702, выполняет его и соединяет модель с исполняемым файлом, работающим на оборудовании Zynq ZC702.
Дважды кликните блок Slider Gain. Измените значение Усиления Ползунка и наблюдайте изменение в частоте массива LED, мигающего на оборудовании Zynq ZC702. Дважды кликните Ручной блок switch, чтобы переключить направление мигающих светодиодов.
Дважды кликните осциллограф, соединенный с выходным портом Read_back, и заметьте, что выходные данные ядра IP FPGA получены и переданы обратно в Осциллограф Simulink.
Когда вы закончите изменение параметров модели, нажмите кнопку Stop на модели. Заметьте, что системное командное окно, открытое на предыдущем шаге, указывает, что модель была остановлена. На данном этапе можно закрыть системное командное окно.
В этом примере показано, как аппаратный и программный рабочий процесс элемента кода помогает автоматизировать развертывание вашего MATLAB и проекта Simulink к Zynq-7000 Весь Программируемый SoC. Можно исследовать лучшие способы разделить и развернуть проект путем итерации через рабочий процесс.
Следующая схема показывает высокоуровневое изображение рабочего процесса, который вы прошли в этом примере. Чтобы узнать больше об аппаратном и программном рабочем процессе элемента кода, обратитесь к документации HDL Coder.