Начало работы с AXI4-потоковым видеоинтерфейсом в рабочем процессе Zynq

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

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

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

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

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

  • Пакет поддержки Computer Vision System Toolbox для Xilinx находящееся в Zynq оборудование

  • Vision HDL Toolbox

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

  • ZedBoard

  • Плата ввода-вывода FMC HDMI (FMC-HDMI-CAM или FMC-IMAGEON)

Чтобы установить ZedBoard, обратитесь к разделу "Set up Zynq hardware and tools" в этом примере.

Введение

Этот пример показывает как:

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

  2. Сгенерируйте ядро IP HDL с AXI4-потоковым Видеоинтерфейсом.

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

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

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

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

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

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

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

1. Создайте ZedBoard и плату ввода-вывода FMC HDMI как показано в фигуре ниже. Чтобы узнать больше о настройке оборудования ZedBoard, обратитесь к документации платы.

1.1. Соедините кабель UART USB, кабель 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-карты, запустить Встроенное программное обеспечение Пакета Поддержки Updater путем выполнения следующей команды в посдказке MATLAB:

targetupdater

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

h = zynq

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

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

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

Образцовый Алгоритм Потоковой передачи видео с помощью Пиксельного Протокола Потоковой передачи

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

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

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

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

Сгенерируйте ядро IP HDL с AXI4-потоковым Видеоинтерфейсом

Затем, мы запускаем HDL Workflow Advisor и используем рабочий процесс элемента кода аппаратного программного обеспечения Zynq, чтобы развернуть этот проект на оборудовании Zynq. Для более подробного пошагового руководства можно обратиться к Началу работы с Рабочим процессом Элемента кода HW/SW для примера Платформы Xilinx Zynq.

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

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

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

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

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

2. Щелкните правой кнопкой по Task 3.2, Сгенерируйте Код RTL и Ядро IP, и выберите Run to Selected Task, чтобы сгенерировать ядро IP. Можно найти отображение адресов регистра и другую документацию для ядра IP в сгенерированном Отчете Ядра IP.

Интегрируйте IP в AXI4-потоковое видео совместимый исходный проект

Затем, в HDL Workflow Advisor, мы запускаем задачи Интегрирования Встраиваемой системы развернуть сгенерированное ядро IP HDL на оборудовании Zynq.

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

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

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

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

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

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

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

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

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

  3. Из образцового меню выберите Simulation> Mode> External.

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

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

Настройте свой проект ссылки на видеоролик

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

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

Для получения дополнительной информации при создании вашего собственного исходного проекта, можно отослать к Задаванию и Регистру Пользовательский Совет и Исходный проект для примера Рабочего процесса SoC.