Описанный в предыдущей статье параллельный интерфейс чаще всего бывает у панелей небольшого размера, до 7-10 дюймов. У панелей большего размера значительное распространение получил другой, более сложный интерфейс, называемый "в народе" - "LVDS". Хочу отметить, что под этим обычно подразумевают не только способ электрического подключения (при помощи дифференциальных сигналов), но и простенький протокол, в совокупности, я бы назвал это "методом". Он называется FPD-Link. Изначально FPD-Link использовался в ноутбуках, а сейчас таким методом подключают панели даже в больших плоских телевизорах.
Подробно о нем, и о подключении TFT-панелей к FPGA, написано вот в этом документе:
А я попробую коротко описать его принципы на картинке из этого документа.
Для связи с панелью используются четыре дифференциальных пары. По одной из них передается тактовая частота (CLOCK), по трем другим, последовательно, и с частотой в 7 раз выше тактовой - данные и управляющие сигналы. Пакет сигналов для одного пикселя начинается с середины положительного импульса клока, заканчивается в середине следующего положительного импульса и содержит 18 бит данных (по 6 на каждый цвет) и 3 управляющих DE, VS и HS.
В среднем , значение тактовой частоты у разных панелей лежит в пределах 50-80 мГц, а скорость передачи данных по одной паре, соответственно, 350-560 Мбит/с.
При подключении панели к FPGA, таких частот можно достичь при помощи PLL. К сожалению, MAX2 не имеет внутреннего PLL, поэтому подключить LVDS-панель к нашей платке (по крайней мере просто и правильно ) - нельзя.
Но, как говорят - "нельзя, но очень хочется ...", и "из любого правила могут быть исключения", мы будем подключать нашу панель "неправильно".
Начну с "исключений". Значительная часть TFT-панелей, в том числе и та, на которой мы будем делать свои эксперименты (
Замечу, что далеко не во всех даташитах это свойство указывается "явно". В некоторых, например, приводятся временные характеристики только для сигнала DE, в некоторых бывает подобная картинка:
"DE mode only" означает, что в паре, содержащей управляющие сигналы (RxIN2), имеет реальное действие только один - DE. Таким образом, если подать на панель необходимую тактовую частоту, а на RxIN2 "не сериализованный" DE, то панель начнет нормально функционировать.
Обратите внимание, что пара RxIN1 содержит, в основном, биты зеленого цвета, а RxIN0 - красного. Поэтому, если подавать на каждый из них одно битный видеосигнал, в итоге можно получить четырехцветное изображение на синем фоне.
В своих экспериментах мы пошли дальше, и подключили RxIN2 через мультиплексор,подавая во время положительного периода клока сигнал DE, а во время отрицательного сигнал управления синим цветом. Описанным методом можно получить палитру из 8 цветов, может не совсем идеальную, но очень близкую к настоящей. Конечно такой метод не подходит для получения картинки "фотографического" качества, но для какого нибудь самодельного осциллографа или
тех-же часиков - вполне.
Для подключения к платке понадобилось 8 пинов, по 2 на каждый из 4-х дифференциальных сигналов:
В самом проекте для платы Марсоход (
) выводить просто цветные полосочки мне показалось как-то скучно,поэтому я добавил вывод картинки из небольшой (на один кадр) ПЗУ (Правда зашивать ее нужно каким-нибудь отдельным программатором. Я сделал несколько "шилдов" с флешками. На этом видео видно, как я, прямо на лету подключаю другую флешку к плате Марсоход - и картинка на экране меняется!
Для того, чтобы наша фоторамка приобрела какую-то законченность, для нее, конечно-же, нужен фреймбуффер. Это будет темой следующей статьи.
Подробнее...