В этом примере показано, как использовать рабочий процесс совместного проектирования аппаратного и программного обеспечения для мигания светодиодов на различных частотах в оценочном комплекте Xilinx ® Zynq ® ZC702.
Этот пример представляет собой пошаговое руководство, которое помогает использовать HDL Coder™ для создания пользовательского IP-ядра HDL, которое мигает светодиодами в оценочном комплекте Xilinx Zynq ZC702, и показывает, как использовать Embedded Coder ® для генерации кода C, который работает на процессоре ARM ® для управления частотой мигания светодиодов.
MATLAB ® и Simulink ® можно использовать для проектирования, моделирования и проверки приложений, выполнения сценариев «что если» с помощью алгоритмов и оптимизации параметров. Затем вы можете подготовить проект для внедрения аппаратного и программного обеспечения на SoC Zynq-7000 AP, решив, какие элементы системы будут выполняться программируемой логикой и какие элементы системы будут выполняться на Cortex-A9 ARM.
Используя управляемый рабочий процесс, показанный в этом примере, вы автоматически генерируете код HDL для программируемой логики с помощью кодера HDL, генерируете код C для ARM с помощью встроенного кодера и реализуете проект на платформе Xilinx Zynq.
В этом рабочем процессе выполняются следующие шаги.
Настройте оборудование и инструменты Zynq.
Разбейте дизайн на разделы для внедрения аппаратного и программного обеспечения.
Создание IP-ядра ЛПВП с помощью помощника по рабочим процессам ЛПВП.
Интеграция IP-ядра в проект Xilinx Vivado и программирование оборудования Zynq.
Создание модели программного интерфейса.
Создайте код C из модели программного интерфейса и запустите его на процессоре ARM Cortex-A9.
Настройка параметров и сбор результатов с оборудования Zynq с использованием внешнего режима.
Дополнительные сведения см. в других дополнительных примерах, а также в документации по кодеру HDL и встроенному кодеру.
Xilinx Vivado Design Suite с поддерживаемой версией, указанной в документации HDL Coder
Оценочный комплект Xilinx Zynq-7000 SoC ZC702
Пакет поддержки кодера HDL для платформы Xilinx Zynq
Пакет поддержки встроенного кодера для платформы Xilinx Zynq
1. Настройте оценочный комплект Xilinx Zynq ZC702, как показано на рисунке ниже. Дополнительные сведения о настройке ZC702 оборудования см. в документации Xilinx.

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

1.2. Убедитесь, что SW10 Переключатель (вход цепи JTAG выбирает двухпозиционный DIP-переключатель) установлен, как показано на рисунке ниже, поэтому можно использовать интерфейс Digilent USB-to-JTAG (U23). Положение 1: Выкл.; Позиция 2: Вкл.

1.3 Подключите компьютер к разъему USB UART с помощью кабеля Micro-USB. Убедитесь, что драйверы USB-устройств, например, Silicon Labs CP210x USB - UART Bridge, установлены правильно. Если нет, найдите драйверы в Интернете и установите их.
1.4 Подключите компьютер и плату Zynq с помощью кабеля Ethernet.
2. Установите пакеты поддержки кодера HDL и встроенного кодера для платформы Xilinx Zynq, если это еще не сделано. Чтобы запустить программу установки, перейдите на панель инструментов MATLAB и выберите Add-On > Get Hardware Support Packages. Дополнительные сведения см. в документации по установке пакета поддержки.
3. Убедитесь, что вы используете образ SD-карты, предоставленный пакетом поддержки встроенного кодера для платформы Xilinx Zynq. При необходимости обновления образа SD-карты см. раздел «Аппаратная настройка» данного документа.
4. Установите аппаратное соединение Zynq путем ввода следующей команды в окне команд MATLAB:
h = zynq
zynq регистрируется на аппаратном обеспечении через COM-порт и запускает ifconfig для получения IP-адреса платы. Эта функция также проверяет соединение Ethernet.
5. При необходимости можно протестировать последовательное соединение с помощью следующей конфигурации с помощью такой программы, как PuTTY™. Скорость передачи в бодах: 115200; Биты данных: 8; Стоп-биты: 1; Четность: None; Управление потоком: None. При включении/выключении платы Zynq можно наблюдать журнал загрузки Linux на последовательной консоли. Вы должны закрыть эту последовательную связь перед использованием zynq снова функция.
6. Настройте траекторию инструмента синтеза 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_counter подсистемы предназначены для реализации программного обеспечения.
В Simulink можно использовать блок усиления ползунка или ручного переключателя для настройки входных значений аппаратной подсистемы. Во встроенном ПО это означает, что процессор ARM управляет сформированным ядром IP путем записи в регистры, доступные для интерфейса AXI. Выходной порт аппаратной подсистемы (LED) подключается к аппаратным средствам LED. Выходной порт, Read_Back, может использоваться для считывания данных обратно в процессор.
open_system('hdlcoder_led_blinking');

Использование рабочего процесса создания IP-ядра в помощнике по рабочим процессам HDL позволяет автоматически создавать совместно используемый и многократно используемый модуль IP-ядра из модели Simulink. Сформированное ядро IP предназначено для подключения к встроенному процессору на устройстве FPGA. Кодер HDL генерирует код HDL из блоков Simulink, а также генерирует код HDL для логики интерфейса AXI, соединяющей ядро IP со встроенным процессором. Кодер HDL упаковывает все сгенерированные файлы в основную папку IP. Затем созданное ядро IP можно интегрировать с более масштабным встроенным дизайном FPGA в среде Xilinx Vivado.
1. Запустите рабочий процесс создания ядра IP.
1.1. Откройте помощник по рабочим процессам HDL из hdlcoder_led_blinking/led_counter путем щелчка правой кнопкой мыши по led_counter и выберите «Код HDL» > «Помощник по рабочим процессам HDL».
1.2. В задании Set Target > Set Target Device and Synthesis Tool в поле Target workflow выберите IP Core Generation.
1.3. В поле Целевая платформа выберите оценочный комплект Xilinx Zynq ZC702. Если у вас нет этого параметра, выберите Получить дополнительные сведения, чтобы открыть программу установки пакета поддержки. В установщике пакета поддержки выберите платформу Xilinx Zynq и следуйте инструкциям установщика пакета поддержки для завершения установки.
1.4. Щелкните Запустить эту задачу, чтобы запустить задачу Задать целевое устройство и средство синтеза.

1.5 В задании Set Target > Set Target Reference Design выберите Система по умолчанию.

1.6. Нажмите кнопку «» Выполнить эту задачу «», чтобы запустить задачу «» Задать целевое ссылочное проектирование «».
2. Сконфигурируйте целевой интерфейс.
Сопоставьте каждый порт в DUT с одним из основных IP-интерфейсов. В этом примере входные порты Blink_frequency и Blink_direction сопоставляются с интерфейсом AXI4-Lite, поэтому кодер HDL генерирует для них регистры, доступные интерфейсу AXI. Выходной порт светодиодного индикатора отображается на внешний интерфейс, светодиодные индикаторы общего назначения [0:7], который подключается к аппаратным средствам светодиодного индикатора на плате Zynq.
2.1 В задании Set Target > Set Target Interface выберите AXI4-Lite для Blink_frequency, Blink_direction и Read_back.
2.2 Выберите светодиодные индикаторы общего назначения [0:7] для светодиодных индикаторов.

2.3 В задании Set Target > Set Target Frequency выберите Target Frequency as 50 MHz.

3. Создайте ядро IP.
Чтобы создать ядро IP, щелкните правой кнопкой мыши задачу Создать код RTL и ядро IP и выберите Выполнить до выбранной задачи.

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

В этой части рабочего процесса генерируемое ядро IP вставляется в эталонную конструкцию встраиваемой системы, генерируется битовый поток FPGA и загружается на оборудование Zynq.
Эталонный дизайн является предопределённым проектом Xilinx Vivado. Он содержит все элементы, необходимые программному обеспечению Xilinx для развертывания проекта на платформе Zynq, за исключением генерируемого пользовательского IP-ядра и встроенного программного обеспечения.
1. Для интеграции с средой Xilinx Vivado выберите задачу «Создать проект» в разделе «Интеграция встраиваемых систем» и нажмите кнопку «Запустить эту задачу». Создается проект Xilinx Vivado со встроенным дизайном IP Integrator, а в диалоговом окне предоставляется ссылка на проект. При необходимости можно открыть проект для просмотра.

2. При наличии лицензии Embedded Coder можно создать модель интерфейса программного обеспечения в следующей задаче «Создать модель интерфейса программного обеспечения». Подробности модели интерфейса программного обеспечения поясняются в следующем разделе этого примера «Создание модели интерфейса программного обеспечения».
3. Создайте битовый поток FPGA в задаче создания битового потока FPGA. Убедитесь, что установлен флажок Выполнить процесс сборки извне, поэтому средство синтеза Xilinx будет работать в отдельном процессе от MATLAB. Дождитесь завершения процесса средства синтеза во внешнем окне команд.

4. После создания битового потока выберите задачу Program Target Device. Выберите Download for Programming method для загрузки битового потока FPGA на SD-карту на плате Zynq, поэтому при включении/выключении платы Zynq конструкция будет автоматически перезагружена. нажмите кнопку Run This Task для программирования оборудования Zynq.

После программирования аппаратных средств FPGA на плате Zynq начинает мигать светодиодный индикатор.

Затем вы создадите код C для запуска на ARM-процессоре для управления частотой и направлением мигания светодиода.
После создания IP-ядра и его вставки в эталонный проект Vivado в помощнике по рабочим процессам HDL можно дополнительно создать модель интерфейса программного обеспечения в задаче Интеграция встраиваемых систем > Создание модели интерфейса программного обеспечения.
Модель интерфейса программного обеспечения содержит ту часть конструкции, которая выполняется в программном обеспечении. Он включает все блоки вне подсистемы HDL и заменяет подсистему HDL блоками драйверов AXI. Если у вас есть лицензия Embedded Coder, вы можете автоматически генерировать встроенный код из модели программного интерфейса, создавать его и запускать исполняемый файл в Linux на процессоре ARM. Созданное встроенное программное обеспечение включает в себя код драйвера AXI, генерируемый из блоков драйвера AXI, который управляет ядром IP HDL.
Запустите задачу «Создать модель интерфейса программного обеспечения» и убедитесь, что создана новая модель. В диалоговом окне задачи отображается ссылка на модель.

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

В этой части рабочего процесса выполняется настройка созданной модели программного интерфейса, автоматическое создание встроенного кода C и запуск модели на процессоре ARM в аппаратном обеспечении Zynq во внешнем режиме.
При создании прототипа и разработке алгоритма полезно отслеживать и настраивать алгоритм во время его работы на оборудовании. Функция внешнего режима в Simulink позволяет использовать эту возможность. В этом режиме алгоритм сначала развертывается на ARM-процессоре в аппаратном обеспечении Zynq, а затем связывается с моделью Simulink на хост-компьютере через Ethernet-соединение.
Главная роль модели Simulink - настройка и мониторинг алгоритма, работающего на аппаратном обеспечении. Поскольку процессор ARM подключен к IP-ядру HDL через интерфейс AXI, для настройки параметров и сбора данных из FPGA можно использовать внешний режим.

В созданной модели щелкните панель Оборудование (Hardware) и перейдите в раздел Параметры оборудования (Hardware settings), чтобы открыть диалоговое окно Параметр конфигурации (Configuration Parameter).
Выберите Решатель и установите для параметра «Stop Time» значение «inf».
На панели HARDWARE нажмите кнопку Monitor & Tune на панели инструментов модели, чтобы запустить модель на процессоре ARM в аппаратном обеспечении Zynq ZC702 во внешнем режиме. Embedded Coder строит модель, загружает исполняемый файл ARM на оборудование Zynq ZC702, выполняет его и подключает модель к исполняемому файлу, работающему на оборудовании Zynq ZC702.
Дважды щелкните на блоке «Усиление ползунка». Измените значение коэффициента усиления ползунка и проверьте изменение частоты мигания светодиодной матрицы на оборудовании Zynq ZC702. Дважды щелкните блок ручного переключения, чтобы переключить направление мигающих светодиодов.
Дважды щелкните область, подключенную к порту вывода Read_back, и убедитесь, что выходные данные ядра IP FPGA захватываются и отправляются обратно в область Simulink.
После изменения параметров модели нажмите кнопку Остановить (Stop) на модели. Обратите внимание, что окно системных команд, открытое на предыдущем шаге, указывает на остановку модели. На этом этапе можно закрыть окно системных команд.

Эти шоу в качестве примера, как технологический процесс соразработки аппаратного и программного обеспечения помогает автоматизировать развертывание Вашего дизайна MATLAB и Simulink к Zynq-7000 Весь Программируемый SoC. Можно изучить наилучшие способы секционирования и развертывания конструкции, выполнив итерацию в рабочем процессе.
На следующей диаграмме показано высокоуровневое изображение рабочего процесса, через который вы прошли в этом примере. Дополнительные сведения о процессе совместного проектирования аппаратного и программного обеспечения см. в документации по кодеру HDL.
