Стандарты VESA: как сгенерировать изображение для монитора?

Автор Slabovik, 14 Дек., 2020, 21:35

« предыдущая - следующая »

Slabovik

Это наверное одна из списка сложных частей, которые делают любители.
Вопрос стоит так: имея вычислительную микросистему, уметь генерировать при её помощи изображение, пригодное для подачи на типовой монитор.

Всё бы ничего, строки, кадры, гашение, синхроимпульсы. Это можно делать на микросхемах. Вызывают вопросы тайминги всего этого и как это можно соотнести с имеющимися ресурсами. Причём в последнем главный камень преткновения у меня вызывает "раскладка" всего хозяйства на частоты распространённых кварцевых резонаторов и генераторов. Ведь кварц на редкую частоту ещё и фиг достанешь, а городить цифровую PLL тоже как-то неохота.

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

Современные цифровые LCD телевизоры по этой причине изображение показывают "как бы" неверно. Например, у Орион-128 оно поднято вверх настолько, что не видно первой строки. Смотришь схему, времянки, и понимаешь - так оно и есть на самом деле.

r1.gif

А как оно должно быть?

Нашёлся в сети документ VESA Coordinated Video Timings (CVT) Standard (пришпилен ниже), в котором разложены по полочкам принципы расчёта таймингов и ещё один документ, в котором описаны все общеупотребительные тайминги развёрток.

И что получается. VESA в общем-то декларирует весьма вольное обращение с количеством строк и пикселей на экране (документ CVT), но довольно жёстко привязывает их отношения и частоты кадров.

Там же нашёлся и файлик CVT Generator - довольно занятная табличка в excel для расчёта. Из него получается, что в принципе, для монитора стандарта VESA нет необходимости выдерживать высокие частоты горизонтальной развёртки с сумасшедшими (минимум мегагерц так 28~30) частотами пикселей. Конечно, при условии, что нам выводить нужно немного. Например, для получения изображения 480x270 нужно всего лишь 10 МГц "пиксельной" частоты, а это умеет мой лично собранный Орион

Так вот вопрос: кто-то ковырялся уже на предмет "а как оно там, у современных мониторов"?
Безусловно, я сам тоже буду пробовать с целью хотя бы получить представление, насколько мониторы способны показывать "нестандарт".
С другой стороны, в сети можно найти интересные проекты, в котором на AVR, STM, PIC генерируются вполне годные изображения, например вот http://wiki.pic24.ru/doku.php/osa/articles/vga_terminal и обязательно посмотрите другие варианты - ссылки на них внизу статьи.

И вот ещё ссылка на Video Timing Calculator: https://tomverbeure.github.io/video_timings_calculator
Ещё один терминал на AVR http://www.vga-avr.narod.ru/main_rus.html
И ещё примеры по ссылке к аналогичной статье https://habr.com/ru/post/495542/#comment_21460356
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

Slabovik

Не получается у меня отредактировать ссылку выше - оставлю здесь.
Нашлась ссылка на BOX с открытыми VESA стандартами
https://app.box.com/s/vcocw3z73ta09txiskj7cnk6289j356b/folder/11133487793
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

Slabovik

За прошедший год нарисовал аж два взможных варианта "видеоадаптеров" для бытового ностальжи-ПК. Один простой, на замену Орион-128, второй сложный, более универсальный под проц i8086. Но в силу стеснённости ресурсами не реализовал ни один. Второй получился интересным, настраиваемым по всем параметрам вплоть до посадки адресов видеопамяти и полностью прозрачный для основного ЦП. Но сложный... Первый же проще, но с жёсткой логикой работы. И я бы его уже сделал, но боюсь ошибиться с таймингами, из-за которых вся работа по схеме может превратиться в тыкву...

Нашёл интересный файлик уже цифрового стандарта.  Если с VESA калькуляторов всё просто, то со стандартами какая-то довольно толстенькая непонятка. Стандарты говорят, что произвольно никто ничего поддерживать не желает. Тем не менее, вот в этом файле из приложения, есть очень неплохой вариант - режим 24, пригодный для подачи на цифровой интерфейс, а если внимательно присмотреться, то разделив частоту (и количество горизонтальных пикселей) на три получим знакомый нам 480x288, который легко адаптируется в 480x256 путём отсекания. Однако что меня смущает? Смущает тактовая частота пикселей 9 МГц. Потому что в исходном варианте CVT-RB частота 10 МГц. При этом общая длина строки 640 пикселей при 480 активных. Здесь же 576 пикселей.

В общем, пока в замешательстве, какой режим брать за основу, если целью пока является подача сигнала через аналоговый VGA-разъём, но с целью сохранить совместимость с древним уполовиненным TV (312 строк), но в перспективе вдруг получится зацепить HDMI
Что выбрать?
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

Shaman

ИМХО стоит смотреть всё-таки в сторону цифрового интерфейса, с заделом на будуще, для VGA интерфейсов хватает, но вот что с ними делать? Мониторов конечно осталось ещё уйма (более 30 лет существования стандарта  сделали своё дело), но он уже отмирает и почти не поддерживается. А с захватом вообще труба.
Вот для примера интересное решение для захвата сигнала со старых ПК с нестандартными сигналами.

Slabovik

Да я бы и рад сразу на цифру перелезть, да не могу. Скилл надо прокачивать. Ибо, как я вычитал, в цифровых интерфейсах минимальная пиксельная частота 25 МГц. Это довольно много для рассыпных микросхем, с которыми обычно имеем дело. Обычно для таких частот хардверную логику перекладывают уже на ПЛМ, а вот с ними я не умею работать, несмотря на наличие желания.
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

Slabovik

К сожалению, мои потуги в ПЛИС оканчиваются пока ничем. Грешным делом хотел даже курсы, но... подходящих дистанционных не нашёл.

Но попалась ссылка на интересный с данной точки зрения девайс: Видеокарта VGA для микроконтроллера и вторая часть статьи. Пусть будут здесь.
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.