Начало работы с AXI4-Stream Video Interface в рабочем процессе Zynq

В этом примере показано, как использовать AXI4-Stream Video интерфейс для обеспечения высокоскоростной потоковой передачи видео на сгенерированном IP-ядре HDL.

Прежде чем вы начнете

Чтобы запустить этот пример, вы должны установить и настроить следующее программное и оборудование:

Для настройки платы ZedBoard см. раздел Set up Zynq hardware and tools в этом примере.

Введение

В этом примере показано, как:

  1. Моделируйте алгоритм потоковой передачи видео с помощью протокола потокового пикселя.

  2. Сгенерируйте IP-ядро HDL с AXI4-Stream интерфейса Video.

  3. Интеграция сгенерированного IP-ядра с видео- исходным проектом ZedBoard с доступом к интерфейсам HDMI.

  4. Используйте процессор ARM ®, чтобы настроить параметры на ткани FPGA, чтобы изменить вывод видео в реальном времени.

  5. Создайте свои собственные пользовательские исходные проекты видео.

Рисунок выше представляет собой схему архитектуры высокого уровня, которая показывает, как сгенерированное ядро HDL DUT IP работает в предопределенном видео исходного проекта. В этой схеме блок HDL DUT IP является IP-ядром, которое генерируется из рабочего процесса генерации ядра IP. Остальная часть схемы представляет предварительно определенные видеоданные исходные проекты, которые содержат другие IP для обработки входа и выходных интерфейсов HDMI.

HDL DUT IP обрабатывает видеопоток, поступающий от HDMI входа IP, генерирует выход видеопоток и отправляет его в HDMI выхода IP. Все эти видеопотоки передаются в интерфейсе AXI4-Stream Video ".

HDL DUT IP может также включать в себя AXI4-Lite интерфейс для настройки параметров. По сравнению с AXI4-Lite интерфейсом интерфейс AXI4-Stream Video передает данные гораздо быстрее, делая его более подходящим для пути данных алгоритма видео.

Настройка оборудования и инструментов Zynq

1. Настройте плату ZedBoard и плату ввода-вывода FMC HDMI, как показано на рисунке ниже. Для получения дополнительной информации о настройке оборудования ZedBoard см. документацию по системной плате.

1.1. Подключите кабель USB UART, кабель Ethernet и кабель степени как показано на рисунке выше (маркер 1 к 3).

1.2. Убедитесь, что JP7 на JP11 перемычки установлены как показано на рисунке выше (маркер 4), так что вы можете загрузить Linux с SD-карты. JP7: вниз; JP8: вниз; JP9вверх; JP10вверх; JP11: вниз.

1.3. Убедитесь, что J18 перемычки установлены на 2V5, как показано на рисунке выше (маркер 5).

1.4. Подключите источник видео HDMI к плате ввода-вывода FMC HDMI, как показано на рисунке выше (маркер 6). Источник видео должен быть в состоянии обеспечить вывод видео 1080p, например, это может быть видеокамера, смартфон, планшет или HDMI выход вашего компьютера.

1.5. Подключите монитор к плате ввода-вывода FMC HDMI, как показано на рисунке выше (маркер 7). Монитор должен быть в состоянии поддерживать отображение 1080p.

2. Если вы еще не установили пакеты поддержки HDL Coder и Embedded Coder для платформы Xilinx Zynq и пакет поддержки Computer Vision System Toolbox для оборудования на базе Xilinx Zynq. Чтобы установить пакет поддержки, перейдите на панель инструментов MATLAB ® и нажмите Add-Ons > Get Hardware Support Packages.

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

targetupdater

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

h = zynq

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

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

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

Моделируйте алгоритм потоковой передачи видео с помощью протокола потокового пикселя

Чтобы развернуть простой алгоритм обнаружения ребер Собеля на Zynq, первым шагом является определение, какая часть проекта будет запускаться на FPGA, и какая часть проекта будет запускаться на процессоре ARM. В этом примере мы хотим реализовать детектор ребра на FPGA, чтобы обработать входящий видеопоток в AXI4-Stream Video. И мы хотим использовать ARM процессор, чтобы настроить параметры на FPGA, чтобы изменить live видео выхода.

В модели примера подсистема DUT, Sobel_HW, использует блок детектора ребер, чтобы реализовать алгоритм обнаружения ребер Собеля. Видеосигналы данных и управления моделируются в протоколе пикселя видеопотока, который используется всеми блоками Vision HDL Toolbox. pixelIn и pixelOut являются портами данных для видеопотоков. ctrlIn и ctrlOut являются портами управления для видеопотоков. Они моделируются с использованием типа данных шины (Pixel Control Bus), которая содержит следующие сигналы: hStart, hEnd, vStart, vEnd, valid.

Четыре входных порта, порог, Sobel_Enable, Background_Color и Show_Gradient, являются портами управления, чтобы настроить параметры алгоритмов обнаружения ребер Собеля. Можно использовать блоки Slider Gain или Manual Switch, чтобы настроить входные значения этих портов. После отображения этих портов на AXI4-Lite интерфейс, процессор ARM может управлять сгенерированным IP-ядром, записывая в сгенерированные доступные регистры интерфейса AXI.

modelname = 'hdlcoder_sobel_video_stream';
open_system(modelname);
sim(modelname);

Сгенерируйте IP-ядро HDL с AXI4-Stream Video Interface

Затем мы запускаем HDL Workflow Advisor и используем рабочий процесс совместного проектирования аппаратного и программного обеспечения Zynq, чтобы развернуть этот проект на оборудовании Zynq. Более подробное пошаговое руководство можно найти в примере Начало работы с Targeting Xilinx Zynq Platform.

1. Запустите HDL Workflow Advisor из подсистемы DUT, hdlcoder_sobel_video_stream/Sobel_HW. Настройки целевого интерфейса уже сохранены в этой модели примера, поэтому настройки в Задании с 1.1 по 1.3 загружаются автоматически. Чтобы узнать больше о сохранении настроек целевого интерфейса в модели, можно обратиться к примеру Save Target Hardware Settings in Model.

В Задаче 1.1 для Целевого рабочего процесса выбрана Генерация ядра IP, а для Целевой платформы - ZedBoard.

В Задаче 1.2 для Исходного проекта выбрана видеосистема по умолчанию (требует модуля HDMI FMC).

В Задаче 1.3 таблица интерфейсов целевой платформы загружается как показано на следующем рисунке. Порты видео данных потока, pixelIn, ctrlIn, pixelOut и ctrlOut сопоставлены с интерфейсами AXI4-Stream Video, а порты параметров управления, такие как Пороги, сопоставлены с интерфейсом AXI4-Lite.

Интерфейс AXI4-Stream Video сообщается в режиме master/slave, где ведущее устройство отправляет данные в ведомое устройство. Поэтому, если порт данных является входом портом, присвойте его интерфейсу AXI4-Stream Video Slave, а если порт данных является выходом портом, присвойте его интерфейсу AXI4-Stream Video Master.

2. Щелкните правой кнопкой мыши Задачу 3.2, Сгенерируйте код RTL и IP Core и выберите Выполнить до выбранной задачи, чтобы сгенерировать ядро IP. В сгенерированном отчете IP Core Report можно найти отображение адресов регистров и другую документацию для ядра IP.

Интеграция IP-адресов с AXI4-Stream Video Compatible Исходный Проект

Далее в HDL Workflow Advisor запускаем задачи Встраиваемая Система Integration для развертывания сгенерированного IP-ядра HDL на оборудовании Zynq.

1. Запуск задачи 4.1, создание проекта. Эта задача вставляет сгенерированное IP-ядро в исходный проект видеосистемы по умолчанию. Как показано на первой схеме, этот исходный проект содержит IP-адреса для обработки входных и выходных интерфейсов HDMI. Он также содержит IP-адреса для преобразования цветового пространства из YCbCr в RGB. Сгенерированный проект является полным проектом Zynq, включая часть алгоритма (сгенерированный алгоритм DUT IP) и часть платформы ( исходного проекта).

2. Щелкните ссылку на панели результатов, чтобы открыть сгенерированный проект Vivado. В инструменте Vivado нажмите Open Блока Проекта, чтобы просмотреть схему Zynq проекта, которая включает сгенерированное IP-ядро HDL, другие IP-адреса конвейеризации видео и процессор Zynq.

3. В HDL Workflow Advisor запустите остальные задачи, чтобы сгенерировать модель интерфейса программного обеспечения, и создайте и загрузите битовый поток FPGA. Выберите Download programming method в задаче Program Target Device, чтобы загрузить поток битов FPGA на карту SD на ZedBoard, поэтому ваш проект будет автоматически перезагружен при цикле включения ZedBoard.

Сгенерируйте исполняемый файл ARM для настройки параметров на FPGA Fabric

Модель интерфейса программного обеспечения сгенерирована в Задаче 4.2, Generate Software Interface Model.

1. Прежде чем вы сгенерируете код из модели интерфейса программного обеспечения, закомментируйте Video Source и Video Viewer в сгенерированной модели, как показано на следующем рисунке. Эти блоки не нужно запускать на процессоре ARM. Процессор ARM использует AXI4-Lite интерфейс для управления тканью FPGA. Фактический источник видео и интерфейс отображения работают на фабрике FPGA. Источник видео исходит из входа HDMI, а выход видео будет отправляться на монитор, подключенный к выходу HDMI.

2. Сконфигурируйте и создайте модель программного интерфейса для режима external mode:

  1. В сгенерированной модели откройте диалоговое окно Параметры конфигурации (Configuration Parameters).

  2. Выберите решатель и установите «Stop Time» на «inf».

  3. В меню модели выберите симуляция > Mode > External.

  4. Нажмите кнопку Run на панели инструментов модели. Embedded Coder строит модель, загружает исполняемый файл ARM на оборудование ZedBoard, выполняет его и соединяет модель с исполняемым файлом, работающим на оборудовании ZedBoard.

3. Теперь и аппаратные, и программные части проекта работают на оборудовании Zynq. Используйте переключатель Sobel_Enable, чтобы заметить, что выход живого видео переключается между выходом детектора ребра и исходным видео. Используйте Порог или Background_Color switch, чтобы увидеть эффекты обнаружения другого края на выходе видео в прямом эфире. Эти значения параметров передаются на оборудование Zynq через режим external mode и AXI4-Lite интерфейс.

Настройте видео исходного проекта

Вы можете захотеть расширить существующий исходный проект на видеосистему по умолчанию, чтобы добавить дополнительные IP-адреса для предварительной обработки или постобработки камеры, или вы можете использовать другое оборудование SoC или интерфейс видеокамеры. Видеосистема по умолчанию исходного проекта является примером или начальной точкой, чтобы создать свой собственный пользовательский исходный проект.

Для примера видеосистема по умолчанию исходного проекта содержит два IP-ядра для преобразования цветового пространства из YCbCr в RGB, как показано на следующем рисунке. Эти два ядра IP генерируются HDL Coder, а также с помощью рабочего процесса генерации ядер IP. Вы можете опционально сгенерировать другие предварительно обработанные или постобработанные камеры, конвейерные IP-ядра, и добавить их в пользовательский исходный проект, чтобы расширить вашу видеоплатформу.

Для получения дополнительной информации о создании собственных пользовательских исходных проектов см. Описание пользовательской платы и Исходного проекта для Рабочего процесса Zynq.