Видео обработка на Spartan-6 FPGA

Начало истории в первой части. Вторая часть этой объемной задачи - попробовать разбирать видео поток 1920 на 1080 при 60 Герцах.

На той же плате разработчика Digilent Atlys есть два HDMI видео входа. По документации у Spartan-6 максимальная частота дифференциальной входящей линии 1080 МГц. Почти в полтора раза меньше требуемой (148.5 МГц). Из аппнота xapp495 беру референсную реализацию парсера DVI потока и оказалось что аппнот только очень поверхностный концепт. Видеокарта компьютера просто не видит монитор по протоколу EDID. Теоретически, правильным было бы направить сигналы SDA и SCL из монитора в видеокарту и наоборот (аппаратно или программно). Однако у меня этот метод быстро заработать не захотел. Поэтому я нашел реализацию EDID протокола и внес в проект. Плата стал определяться как монитор, но без подходящих разрешений. В итоге я просто переписал содержимое реального EDID файла в дизайн и теперь плата стала опознаваться идентично монитору.

Итого, что получается на сегодня. Работает генерация FullHD и работает разбор FullHD, и все это на частоте 60 Герц. Очевидны два направления использовать этот сетап.

Из первого я сразу поигрался с заменой цвета, черно белым режимом и наложением телеметрии (Телеметрия - отдельная большая тема, которую надо будет поднять для квадрокоптера). Черно белый режим успокаивает и очень приятно смотреть фильмы. Цветная подсветка монитора - в планах. Из второго - целью всего мероприятия было создание концепта извлечения из HDMI потока 3D сигнала который туда будет зашит на уровне драйвера по принципу стеганографии. Если обычные видеокарты Nvidia GeForce не поддерживаю стерео режимы без специального оборудования - то можно вообще обойти этот запрет и рендерить стереоизображения с запрятанными в него метками и выделять метки уже на момент отображения видеопотока. Это мне видится куда эффективнее использования Quadro видеокарт.

Весь проект выложил в репозиторий. Этот дизайн просто разбирает HDMI поток с разъема J3 и снова собирает его обратно в разъем J2 (перемычки JP6 JP7 должны быть разомкнуты). Поиграться с цветом можно на строке 90-92 модуля main.v


2019-05-23