19 Янв., 2021, 11:19

-- Они, по вашему, жалкие и ничтожные, -- сказал Остап, -- а самого себя вы, очевидно, считаете джентльменом?

"Золотой телёнок"


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

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

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

Slabovik

14 Дек., 2020, 21:35 Последнее редактирование: 14 Дек., 2020, 21:58 от 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
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.