|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Как работает VGA интерфейс
Время создания: 19.01.2024 10:04
Текстовые метки: VGA, стандарт, интерфейс, сигнал, распиновка, подключение, документация
Раздел: Компьютер - Аппаратное обеспечение
Запись: xintrea/mytetra_syncro/master/base/17056478784y6ct25p4a/text.html на raw.github.com
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В этой статье я расскажу принцип работы VGA интерфейса. С помощью временных диаграмм и распиновки коннектора / разъёма можно выводить изображения на монитор. Рис.1 VGA коннектор "папа" Рис.2 VGA коннектор "мама" Вначале, неплохо бы узнать распиновку коннектора:
Таблица 1 Обозначение выводов VGA разьёма
Отбросим I2C и остаётся всего несколько выводов. Все земли можно соединить вместе, в итоге будет 3 цвета RGB, на эти выводы подаётся аналоговое напряжение от 0 до 0.7 В, чем больше напряжение на цветовом входе тем "насыщеннее" данный цвет. 0.7 В на всех 3 выводах дадут самый яркий белый цвет на который способен монитор. Таким образом можно получить практически любой цвет смешиванием 3-ёх составляющих. Для простоты я буду подавать на каждый из выводов либо 0 либо 0.7 В. Если хочется большого разнообразия цветов, нужно использовать преобразователи из цифрового кода в аналоговое напряжение ЦАП. Его можно составить самому с помощью резисторной матрицы. Либо достать специальную микросхему, к примеру: AD664 На выводах вертикальной и горизонтальной синхронизации действуют уровни ТТЛ сигналов. - Уровень логического нуля, не более +0,8 В - Уровень логической единицы, не менее +2,4 В Вообщем они стабильно работают с МК при 3.3 В и 5 В. При питании от 3.3 В (стандартное напряжение ПЛИС) (логическая 1 ≈ 3.3 В) на цветовые входы сигнал подаётся через резисторы 270 Ом. Рис.5 Подключение VGA к цифровому устройству с питанием 3.3 В Как мы помним входное сопротивление цветовых VGA входов 75 Ом. Рассчитаем максимальное напряжение: 3.3 * 75 / (75 + 270) = 0.717 В Немного превышает, но работает без проблем. При питании от 5 В, потребуется резисторы номиналом: R = 3.3 * 75 / 0.7 - 75 = 460 ≈ 470 Ом Остаётся узнать в какие моменты подавать единички и нолики на эти выводы. Разрешение изображения и частота обновления определяется интервалами импульсов синхронизации. Во время синхроимпульсов на RGB выводах, должно быть 0 В. Рис. 6.1 Временные диаграммы сигналов Один кадр в VGA-стандарте, по сути, состоит из следующих сигналов:
Рис. 6.2 Временные диаграммы сигналов Рис.7 Отображение синхроимпульсов Рассмотрим параметры для разрешения 640 x 480 @ 60 Гц Таблица 2 частотные параметры VGA интерфейса
Таблица 3 временные параметры для горизонтальной линии
Таблица 4 временные параметры для 1 кадра
Не обязательно использовать точно такие же значения как в таблице, лишь бы они были достаточно близкими. Для данного разрешения используются отрицательные вертикальный и горизонтальный синхроимпульсы, для других разрешений это может не совпадать. Можно заметить что частота вертикальной синхронизации иногда не совпадает с частотой обоновления экрана. LCD моинторы пришли на смену ЭЛТ мониторов, которые заменили большие телевизоры с электронно-лучевой трубкой. Когда появилась возможность выводить цветное изображение на экран у американских инженеров возникла проблема, тот стандарт частоты передачи звука который они выбрали "не согласуется" (вызывает помехи) с 60 Гц. Стандарт для частоты был 44.056 кГц. Но они выяснили что изменение частоты на 0.1 % позволит это исправить и т.к. стандарт передачи звука был уже общепринятым, они уменьшили частоту обновления экрана. 60 * 0.999 = 59.94 Т.к. многие значения были приняты ещё тогда, производели к ним привыкли и продолжают использовать, если сейчас изменить стандарт то придётся проделать слишком большую работу, не считая того что многие устройства могут просто перестать работать с новыми стандартами. Подробней про это можно прочитать здесь и здесь Я не знаю причину отличий другиих значений и почему нельзя было сделать временные интервалы кратные 10, 5 или хотя бы 2. Из таблиц видно что есть время когда на экран ничего не выводится, это сделано для синхронизации, это можно представить будто наш рисующий луч (раньше изображение отобрадалось электронным лучём) уходит за вертикальные границы экрана. Также нужно подождать несколько пустых горизонтальных линий, которые уходят под видимый экран. Рис. 8 Экран с зонами синхронизации (Blanking Time) Легче рассчитать и реализовать время 1 пикселя и затем всё подстраивать под него, иногда указывается просто частота пикселей и остальные значения в пикселях. В принципе это всё что ннеобходимо знать чтобы рисовать на VGA мониторе, осталось запрограммировать (или любым другим способом) цифровое устройство и попытаться вывести изображение. Телевизор работает почти также, но там только "1 провод", значит все сигналы соединены вместе, если цвет не так важен, то принцип тот же. Попробуем вывести изображение и посмотреть на осцилограмму сигнала. У меня есть готовая тестовая программа для ПЛИС отсюда которая выводит данное изображение: Рис.9 Полученное изображение на мониторе Рассмотрим осцилограмму. Сверху вниз по порядку идут: Красный, Зелёный, Синий, Горизонтальная синхронизация, Вертикальная синхронизация. Рис. 10 Осцилограмма сигналов полученного изображения Здесь отображен 1 кадр, можно догадаться как будет выглядеть изображение, т.к. каждая полоса состоит из имульсов (если приблизить там есть зоны где постоянно 1, но не длинной во всю линию), то не будет одноцветных линий. Если разбить сигналы на столбцы, видно что есть линии на которых промежутки только красного либо зелёного цветов. Используемые мной значения:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|