Выполненные проекты
Специализация
Контрактная разработка электроники / Проекты / Блок обработки видеоданных – техническая проработка

Блок обработки видеоданных – техническая проработка

ImageЗаказчик

Одно из ведущих в России предприятий по разработке и практическому использованию непилотируемых средств для исследования космического пространства.

Задача

Разработать программно-аппаратную платформу для исследования возможностей разработанного заказчиком алгоритма сжатия видеоданных. Проработать два варианта системного окружения для интеграции аппаратной и программной части реализованного алгоритма сжатия видеоданных.

Аппаратное обеспечение

Посредством интерфейса Gigabit Ethernet несжатые данные в формате bmp поступали на обработку. Было реализовано системное окружение кодека для получения данных, их хранения в ОЗУ и передачи для дальнейшей обработки. Были проработаны и проверены два варианта реализации алгоритма сжатия видеоданных: полностью программная реализация и реализация, в которой часть преобразований выполнялась на программируемой логике ПЛИС. На основании полученной информации о производительности по сжатию данных для заказчика были выработаны рекомендации по оптимизации алгоритмов.

Для выполнения задачи была использована демонстрационная платформа Xillinx ML507. Основой системы является ПЛИС XC5VFX70T-1-FF1136, на которой реализованы все основные компоненты и функциональные узлы.

В качестве управляющего процессора используется аппаратный MCU PPC440, работающий на частоте 400 МГц. Частота системной шины PLB составляет 100 МГц.

На ПЛИС реализован (задействован) ряд специализированных модулей из пакета EDK для работы системы. См. рисунок 1.

 Image

Рисунок 1. Структурная схема системы

  • Модуль ppc440_0_apu_fpu_virtex5 используется для вычислений операций с плавающей точкой. Частота работы шины составляет 133 МГц. Он подключен к процессору по специализированной шине FCB.
  • Модуль Hard_Ethernet_MAC используется для реализации LAN 10/100/1000 Мбит. Управление данным модулем осуществляется процессором по шине PLB. Для передачи данных используется специальный порт SDMA-процессора. С данного порта через внутренний арбитр памяти данные поступают на порт контроллера памяти MPCM.
  • Модуль SysACE_CompactFlash подключен к системе для записи или чтения данных с внешней карточки CompactFlash. На данный момент не используется.
  • Модуль FLASH представляет собой контроллер для работы с внешней NOP FLASH. В NOP FLASH находится начальный загрузчик u-boot, Linux и бинарный файл конфигурации ПЛИС. Данное решение позволяет по u-boot по LAN проводить реконфигурацию прошивки ПЛИС и системных файлов Linux.
  • Модуль RS232_Uart_1 предназначен для реализации функций контроля и управление по COM-порту.
  • Модуль xps_timer_1 – это контроллер таймера. Предназначен для формирования временных меток для системы. Управление осуществляется процессором через шину PLB.
  • Модуль xps_timebase_wdt_1 – контроллер сторожевого таймера. Предназначен для сброса процессора при его зависании. На данный момент не задействован.
  • Модуль IIC_EEPROM – контроллер шины I2C. На данный момент используется для записи и чтения системных переменных для u-boot из внешней EEPROM.
  • Модуль LEDs_8Bit – контроллер входа/выхода (GPIO). Используется на выход для управления светодиодной индикацией. На данный момент не задействован. Возможно использования для индикации состояний системы и модулей. Управление осуществляется процессором через шину PLB.
  • Модуль xps_intc_0 – контроллер прерываний.
  • Модуль xps_dvi_in_0 предназначен для преобразования и загрузки видеоданных в память системы. Подробное описание смотрите ниже.

Модуль xps_dvi_in_0 состоит из четырёх основных узлов работающих на разных частотах. См. рисунок 2.

Image

Рисунок 2. Структурная схема блока xps_dvi_in_0

Блок Dvi input получает по параллельной шине видеоданные от TFP403 в формате RGB. Максимальная частота пиксельного клока составляет 100 МГц. Текущая рабочая частота составляет <80 МГц (зависит от режима работы видеокарточки). Используется прогрессивная развёртка.

В функции блока Dvi input входит преобразования видеоданных из формата RGB(4:4:4) в формат YCbCr(4:2:2).

Полученные преобразованные данные затем поступают в блок fifo_bank для последующей загрузки в память системы.

Загрузкой в память занимается блок Control NPI. Загрузка производится отдельно по кадрам и компонентам. 

Блок Slave PLB предназначен для сопряжения с шиной PLB для контроля и управления модулем.

Программная платформа

Для выполнения программной задачи использовался пакет ELDK (Embedded Linux Development Kit) компании Xillinx, он предназначен для сборки ядра Linux под архитектуру PowerPC, Linux-приложений и загрузчика U-Boot.

В качестве ядра Linux использовалась версия 2.6.33 из официального репозитория Xillinx.

Для доступа к видеоданным, получаемым при помощи модуля xps_dvi_in_0, был разработан специальный драйвер, предоставляющий приложениям интерфейс V4L2 (Video for Linux 2).

Также был разработан набор скриптов и утилит для получения кадров видеоизображения и тестирования отдельных элементов алгоритма сжатия.

Разработанная архитектура программного обеспечения представлена на рисунке 3.

Image

Рисунок 3. Архитектура программного обеспечения

Были произведены замеры производительности системы в различных режимах работы процессора.

Для заказчика была составлена документация, описывающая последовательность разработки и сборки программ в среде ELDK.

Средства проектирования
GNU Toolchain (gcc, gdb)
Интерфейсы и технологии
Video for Linux 2, Linux Device Drivers
Языки программирования
C, Bash
Средства управления проектом
Trac, SVN
Трудозатраты
30 человеко-дней
Срок выполнения проекта
1 месяц

Скачать PDF - 259Kb