Главная » Хабрахабр » [Перевод] CSTroN — самодельный монитор на винтажной CSTN-матрице с VGA-входом и платой управления на ПЛИС

[Перевод] CSTroN — самодельный монитор на винтажной CSTN-матрице с VGA-входом и платой управления на ПЛИС

ЖК-монитор с CSTN-матрицей Что если бы TFT никогда не изобрели?

Когда ЭЛТ-мониторы преобладали, в их пользу выдвигали следующий аргумент: несмотря на все усовершенствования, ЖК-дисплеи никогда не превзойдут по качеству изображения трубочные. Они, как и прежде, будут находить применение лишь там, где требуются энергоэффективность и малая толщина [1]. Прошли десятилетия, и теперь мы знаем, правы ли были сторонники этого аргумента. Но сегодня интересно взглянуть на ЖКИ того времени: действительно ли они настолько некачественные? Каково это — смотреть на CSTN-матрицу в 2019 году?

Слева TFT, справа CSTN, оба дисплея из девяностых

До перехода на TFT в портативных компьютерах находили применение самые разные дисплейные технологии. Поначалу применяли такие же ЭЛТ-мониторы, как в настольных компьютерах, только поменьше. Например, в Compaq Portable (1983), IBM 5155 (1984) или Commodore SX-64 (также 1984).

0, отсюда IBM 5155, автор: Soupmeister, лицензия: CC-BY-SA-2.

У этих дисплеев малы контрастность и угол обзора. Таскать такой ПК с собой повсюду было тяжело, совсем другое дело — ноутбук с TN-ЖКИ (twist nematic), например, IBM 5140 (1986), Toshiba T1000 (1987).

Addicks, лицензия: GFDL, отсюда, ссылка битая, в оригинале тоже Toshiba T1100 с монохромным TN-дисплеем, автор: Johann H.

Они обеспечивали высокую контрастность и несколько градаций яркости красно-оранжевого света, но стоили довольно дорого. Некоторые производители экспериментировали с газоразрядными матрицами, так увидели свет ноутбуки Toshiba T3200 (1987) и IBM PS/2 P70 (1991). Контраст получался значительно лучше — от 1:5 до 1:50, а нескольких градаций яркости было достаточно для деловых применений (использовать ноутбук в быту было пока слишком дорого). Наконец, были разработаны STN-ЖКИ (supertwist nematic), как, например, в Электронике МС1504 и его прототипе Toshiba T1100. На этот случай ему предложили две технологии: TFT и CSTN (color supertwist nematic). Но что если пользователь хочет цветное изображение? Ну а CSTN-дисплей — это просто STN-дисплей, на который наложен светофильтр. Первый ноутбук с TFT — NEC PC9801NC — был представлен в 1990 году, качество изображения для тех лет было выше всех похвал, но стоила «такая игрушка» значительно дороже других и так недешёвых портативных компьютеров. А в вагонах нью-йоркского метро CSTN-мониторы работают до сих пор. Довольно долго в ноутбуках применяли матрицы обоих типов.

Один из них, источник: Transit +PLUS

Автору захотелось посмотреть на CSTN-дисплей. Как? Для начала — просто купить старый ноутбук с ним и попользоваться. В нём оказался процессор AMD 5x86-P133. То есть, самое динамичное, что на нём можно запустить — это DOS-игры (да ладно, он и MPEG1 потянет в программе QV — переводчик). Конечно, играть в них здорово, но захотелось посмотреть, как на таком дисплее выглядит, к примеру, YouTube или современная игра — но это невозможно.

Или?

TFT-экраны от ноутбуков так переделывают в мониторы довольно часто. В общем, надо как-нибудь добавить к нему VGA- или HDMI-вход — и можно подавать сигнал с чего-нибудь современного. А можно сделать и свою приставку на ПЛИС, преобразующую VGA- или HDMI-сигнал в поток данных о пикселях. Просто покупают плату, подходящую к матрице — и готово.

Но можно приспособить для этого отладочную плату на ПЛИС ML505. Когда-то выпускались и платы для превращения в VGA-мониторы CSTN-матриц, но такую уже не найти.

Довольно непривычно наблюдать такое на CSTN-дисплее: 16 ГБ ОЗУ. Готовый результат.

Начнём с азов. Подобно любым матричным дисплеям, CSTN-дисплей имеет строки и стобцы. Вы светодиодной матрицей от микроконтроллера когда-нибудь управляли? Здесь то же самое, но напряжения — переменные. Нужно подать определённые сигналы как на выбранные, так и на невыбранные строки и столбцы — и пиксель на пересечении выбранных строки и столбца покажет то, что нужно. Форма сигналов получается весьма сложной, значение имеют и среднеквадратическое значение напряжения, и сдвиг фаз между напряжениями на строке и столбце, и смещение… И вот так, пиксель за пикселем, формируется изображение.

Всё это проделывает модуль, встроенный в дисплей. К счастью, от ПЛИС не требуется вырабатывать все эти сигналы, да ещё и на таком огромном количестве линий. Драйверы строк и столбцов превращают это напряжение в переменное необходимой формы. Там импульсный преобразователь повышает постоянное напряжение, оно проходит через делитель и повторитель, так получается напряжение смещения. Всё, что требуется — подать в дисплейный модуль поток данных о состоянии пикселей.

На линии строчной и кадровой синхронизации поступают импульсы после каждых, соответственно, строки и кадра. На TFT-ЖКИ с интерфейсом DPI (digital parallel interface) за один такт поступают сразу все данные об одном пикселе. Если передача полного кадра занимает 1/60 с, значит, частота обновления составляет 60 Гц. Пиксели просто непрерывно передаются строка за строкой, кадр за кадром. LVDS — это то же самое, только биты передаются не параллельно, а последовательно по дифференциальным парам, ну а в MIPI DSI они ещё и объединяются в пакеты. Разрядность шины данных равна глубине цвета в битах, обычно 16 (5 бит на красный и синий, 6 на зелёный), 18 (по 6 бит на каждый из цветов), or 24 (по 8 бит на каждый из цветов). Который, в свою очередь, чем-то напоминает VGA, только данные о яркости каждого из цветов поступают не в аналоговом, а в цифровом виде. Шина SPI/i80 позволяет передавать контроллеру различные команды, а тот, выполняя их, формирует сигналы для DPI или аналогичного интерфейса. Очень удобны платы, позволяющие получать VGA-сигнал от Raspberry Pi, хотя изначально этот компьютер вырабатывает только HDMI и композитное видео. Существуют преобразователи VGA в DPI и обратно.

В даташите на SX21V001 [2] показано, как управлять CSTN-дисплеем с разрешением в 640х480: На дисплейный модуль CSTN-матрицы надо подавать сигналы, очень похожие на подаваемые на TFT-матрицу с интерфейсом DPI.

На линию CL1 сигнал поступает после каждой строки, на FLM — после каждого кадра. Тут изображена передача целого кадра. Вообще-то, на этом рисунке допущена ошибка: во время передачи первой и второй строк по линиям UD0-UD7 поступают данные Y1 и Y2, а не X1 и X2, а по LD0-LD8 — соответственно, Y241 и Y242. А ещё там шина данных из 16 линий. Вот он, загадочный «dual scan» из старой рекламы ноутбуков, от которого происходит горизонтальная полоса через весь экран. Здесь U и L — это, соответственно, upper и lower, то есть, дисплей состоит из двух матриц разрешением в 640х240, расположенных одна над другой. Но это не единственное, чем они отличаются по способу управления от TFT. У STN- и CSTN-дисплеев контрастность обратно пропорциональна числу строк, поэтому такое разделение позволяет её увеличить.

Но по шинам UD и LD за один такт передаются не данные об одном многобитном пикселе, как в TFT, а данные сразу о нескольких пикселях по три бита на каждый. Непонятно, почему горизонтальную ось здесь назвали Y… Но в любом случае, CL2 здесь — линия для подачи тактовых импульсов, переключающих пиксели. Один бит на цвет, три бита на пиксель — всего восемь цветов.

Понятно, что у CSTN-дисплеев количество цветов мало, например, 4096 или 32768, но ведь не 8 же. Но как же так? Светодиодами же так управляют, значит, и пикселями ЖКИ можно. Оказывается, здесь применяется ШИМ. Этот способ называют FRC (frame rate control), ну а ШИМом в данном контексте называют управление яркостью пикселей тем же способом, но в пределах не двух или более кадров, а одного. Нужна, например, яркость в 50% — включаем пиксель в чётных кадрах и выключаем в нечётных. Автору неизвестны CSTN-дисплеи с ШИМ, но он предполагает, что таковы матрицы HPA-типа. FRC осуществляет внешнее устройство, а ШИМ — микросхемы дисплейного модуля, если там есть поддержка этой функции. В любом случае, раз ШИМ недоступен, необходимую глубину цвета можно получить с помощью FRC.

Например, в этом модуле изначально было 120 Гц, а автор разогнал его до 240. Ценой этого будет мерцание, поэтому в CSTN-дисплеях бывают чудовищные (по сравнению с TFT) частоты кадров.

Перед разработчиком возникло сразу несколько трудностей:

— входной сигнал имеет частоту кадров в 60 Гц, её надо удваивать или даже учетверять

— во входном сигнале кадр не делится на верхнюю и нижнюю половины по 640х240 пикселей каждая, а здесь надо разделить

— а ещё нужно реализовать FRC, иначе глубина цвета будет 3 бита на пиксель

Ну а третья задача решается при помощи GLDP LUT (grayscale-level display pattern lookup table) [3]. Первые два пункта означают, что необходим фреймбуфер, и не простой, а двухпортовый. И один вид выходных данных: те три бита, которые надо подать на субпиксели того или иного пикселя в данный момент. У таблицы поиска два вида входных данных: цвет, который надо отобразить, и состояние счётчика кадров. Значит, потребуются следующие узлы:

На этой стадии необязательно знать, где находится какой пиксель, достаточно убедиться, что дисплейный модуль подаёт на матрицу сигналы необходимой формы. Первым делом надо заполнить весь экран каким-нибудь цветом. Код для заливки в ПЛИС — здесь.

Нужны такие таблицы поиска для FRC, чтобы минимизировать мерцание. Теперь попробуем что-нибудь вывести, и с неполной яркостью в том числе. Поэтому каждые два соседних пикселя мерцают несинхронно. Автор придумал две таблицы, применяемые к пикселям в шахматном порядке. Код — здесь.

При 640х480 и 5 битах на каждый из цветов его объём составит около 600 килобайт. Итак, показывать изображение мы уже плату «научили», следующее, что потребуется — фреймбуфер. Хорошо, на плате есть ОЗУ типа DDR2 и Xilinx MIG для управления им. Немного, но в ПЛИС столько нет. Арбитр решает, будет ли следующий обмен данными с DDR2 чтением или записью. Реализованы два FIFO, один на чтение, другой на запись. Код арбитра — здесь. Буферов два, запись идёт в один, чтение из другого, а при смене кадров они меняются местами.

Осталось реализовать видеозахват, в одном из предыдущих проектов автора уже есть похожая наработка, после доработки код преобразователя из VGA в DPI стал таким.

Смотрите!

Для автора это третий проект на ПЛИС, было интересно поработать с Xilinx MIG и DDR2, а также с несложным конвейером. Запланирован более качественный FRC с дельта-сигма-модуляцией, а также опыты с более поздними CSTN-панелями, использующими технологию HPA (High Performance Addressing) фирмы Sharp.

Спасибо за внимание!

1. Li, W., & Guo, Q. (2000). Liquid Crystal Display Application Technology. Beijing: Electrical Industry Press.

HITACHI (1999). 2. SX21V001-Z4 Customer’s Acceptance Specifications.

Hsueh, Y., & Lee, J. 3. Image improvement method for LCD frame rate controller. (2008). doi:10. 2008 IEEE International Symposium on Consumer Electronics. 2008. 1109/isce. 4559534


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Прыжки китайского «Кузнечика» от LinkSpace

Китайская частная космическая компания LinkSpace построила тестовый ракетный стенд вертикального взлета и посадки, аналогичный «Кузнечику» от SpaceX, и с января этого года проводит все более сложные испытания. После тестов зависания на привязи компания перешла к полноценным подскокам, 27 марта поднявшись ...

Искусственный интеллект улучшает качество графики старых видеоигр и делает это действительно хорошо

Недавно стало известно еще об одной задаче, которую ИИ решает очень хорошо. Технологии искусственного интеллекта постепенно развиваются, помогая решать задачи и проблемы самых разных сфер — от бизнеса до медицины и развлечений. Речь идет об игровых модах — как оказалось, ...