Распиновка VGA (DE-15)
Назначение всех 15 контактов VGA на розетке и на вилке, уровни сигналов по стандартам VESA, канал DDC, временные параметры режима 640×480 при 60 Гц и расчёт резистивного ЦАП для вывода изображения с микроконтроллера или ПЛИС.
Обновлено Редакция GAW
VGA передаёт изображение тремя аналоговыми сигналами — красным, зелёным и синим — и двумя цифровыми синхроимпульсами, строчным и кадровым. Разъём — трёхрядный D-sub на 15 контактов, DE-15: корпус того же размера E, что у девятиконтактного DE-9 из статьи об RS-232, но контакты стоят в три ряда с шагом 2,29 мм. По каналу DDC в том же разъёме компьютер читает из монитора EDID — описание монитора и список поддерживаемых режимов.
Коротко
- Цвета: 1 — красный, 2 — зелёный, 3 — синий; обратные провода — 6, 7 и 8.
- Синхронизация: 13 — HSync, 14 — VSync, уровни TTL; общий провод — 5 и 10.
- DDC: 12 — SDA, 15 — SCL, шина I²C; 9 — +5 В для DDC от компьютера, не меньше 50 мА.
- R, G, B: от 0 В (чёрный) до 0,7 В (белый) на нагрузке 75 Ом.
- 640×480 при 60 Гц: пиксельная частота 25,175 МГц, 800 пикселей × 525 строк вместе с гашением, оба синхроимпульса отрицательные.
- Резистивный ЦАП: с выхода 3,3 В — 270 Ом последовательно в каждый цвет, с 5 В — 470 Ом.
Распиновка VGA: розетка и вилка
На видеокарте стоит розетка с гнёздами. Если смотреть на неё спереди широкой стороной вверх, контакт 1 — справа в верхнем ряду, контакт 6 — справа в среднем, а сам средний ряд сдвинут на полшага в сторону контакта 1. На вилке кабеля всё наоборот: контакт 1 слева вверху, средний ряд сдвинут влево. VESA требует, чтобы пластик розетки на стороне компьютера с поддержкой DDC был синим (royal blue), — отсюда привычный синий цвет разъёма VGA.
| Контакт | Сигнал | Назначение |
|---|---|---|
| 1 | Red | видеосигнал красного, 0–0,7 В |
| 2 | Green | видеосигнал зелёного; может нести и синхронизацию (sync on green), если её поддерживают обе стороны |
| 3 | Blue | видеосигнал синего |
| 4 | ID2 | бит 2 идентификации монитора; у монитора с DDC — не подключён |
| 5 | GND | общий провод (в исходной VGA обозначен как Test, тоже на земле) |
| 6 | Red return | обратный провод красного |
| 7 | Green return | обратный провод зелёного |
| 8 | Blue return | обратный провод синего |
| 9 | +5 V | питание DDC от компьютера; в исходной VGA контакта не было — на его месте ключ |
| 10 | Sync return | общий провод синхроимпульсов |
| 11 | ID0 | бит 0 идентификации монитора; у монитора с DDC — не подключён |
| 12 | SDA | данные DDC; в исходной VGA — бит ID1 |
| 13 | HSync | строчная синхронизация; может нести смесь строчной и кадровой |
| 14 | VSync | кадровая синхронизация |
| 15 | SCL | такт DDC; в исходной VGA — бит ID3 |
Варианты «синхронизация на зелёном» и «смесь синхроимпульсов на контакте 13» стандарт E-DDC допускает, только если их поддерживают и компьютер, и монитор, — монитор сообщает об этом в EDID. Обычный режим — раздельные HSync и VSync.
Уровни сигналов и 75 Ом
Сигналы R, G и B — аналоговые: от 0 В при нулевом коде (чёрный) до 0,700 В при максимальном (белый), допуск белого уровня — от −0,035 до +0,07 В. Напряжение измеряют относительно обратного провода своего цвета на нагрузке 75 Ом. Выходное сопротивление видеокарты и входное сопротивление монитора — по 75 Ом, у монитора с допуском ±1,5 Ом по постоянному току (VESA VSIS). Тракт согласован с обоих концов, поэтому отражения в кабеле не портят изображение. Классический видео-ЦАП, например ADV7125, так и работает: его токовый выход нагружен на 37,5 Ом — 75 Ом на стороне видеокарты параллельно 75 Ом монитора.
Синхроимпульсы HSync и VSync — цифровые, уровня TTL. По VSIS передатчик выдаёт единицу 2,4–5,5 В и ноль 0–0,5 В и рассчитан на ток 8 мА, а монитор обязан распознавать единицу от 2,0 В и ноль до 0,8 В; в измерительной схеме стандарта вход синхроимпульса монитора нагружен на 2,2 кОм. Выход КМОП на 3,3 В этим требованиям удовлетворяет. Полярность синхроимпульсов зависит от режима: в 640×480 при 60 Гц оба импульса отрицательные.
О своём входе монитор сообщает и в EDID: в байте 14h аналоговый вход описан соотношением уровней видео, синхроимпульса и полного размаха, например 0,700 : 0,300 : 1,000 В. Второе число важно для синхронизации на зелёном: к видеосигналу 0,7 В добавляется импульс 0,3 В.
DDC и EDID в разъёме VGA
Первые видеокарты VGA узнавали монитор по нескольким битам ID на контактах 11, 12, 4 и 15, и такая схема различала лишь несколько типов дисплеев. Стандарт DDC (Display Data Channel) превратил контакты 12 и 15 в линии SDA и SCL, а на контакт 9, где раньше был ключ, вывел +5 В от компьютера. Контакты 4 и 11 у компьютера могут остаться битами ID, а у монитора с DDC их не подключают. Самый первый режим, DDC1, передавал данные только от монитора к компьютеру; VESA его больше не поддерживает, и современный E-DDC — это обычный обмен по I²C.
Компьютер — ведущий, монитор — ведомый. EDID лежит по 7-битному адресу 0x50 (байты A0h и A1h на шине) блоками по 128 байт; первые 8 байт базового блока — заголовок 00 FF FF FF FF FF FF 00, а сумма всех 128 байт по модулю 256 равна нулю. Обычная скорость — 100 кГц (Standard-mode), подробнее о протоколе — в статье о шине I²C. По тому же каналу работает и DDC/CI: команды монитору вроде яркости и контраста по адресу 0x37 (байты 6Eh/6Fh).
Подтяжки SCL и SDA ставят в компьютере — 1,5–2,2 кОм к +5 В или источник тока 3 мА, а у монитора допускается только подтяжка 47 кОм на SCL. Компьютер держит на контакте 9 напряжение 5 В ± 5 %, пока видеовыход активен, и обязан отдавать 50 мА с ограничением тока не выше 1 А. Выключенный монитор может брать от этой линии до 50 мА, чтобы EDID читался без сети, включённый — не больше 1 мА. EDID должен быть доступен не позже чем через 20 мс после появления +5 В. Включённый монитор может использовать это напряжение и как сигнал: есть +5 В — видеовыход компьютера активен. Гнездо 9 в розетке с DDC утоплено на 0,050 дюйма (1,27 мм).
Прочитать EDID можно и без компьютера. Скетч для Arduino Uno: SDA и SCL платы — на контакты 12 и 15 разъёма, общий провод — на контакт 5, +5 В — на контакт 9, а внешние подтяжки около 2 кОм к +5 В сделают фронты как у видеокарты.
#include <Wire.h>
const uint8_t EDID_ADDR = 0x50; // 7-bit address, bytes A0h/A1h on the bus
void setup() {
Serial.begin(115200);
Wire.begin();
uint8_t sum = 0;
for (uint8_t offset = 0; offset < 128; offset += 16) {
Wire.beginTransmission(EDID_ADDR);
Wire.write(offset); // byte address inside the block
if (Wire.endTransmission(false) != 0) { // repeated START, no STOP
Serial.println("no EDID");
return;
}
Wire.requestFrom(EDID_ADDR, (uint8_t)16);
while (Wire.available()) {
uint8_t b = Wire.read();
sum += b;
if (b < 0x10) Serial.print('0');
Serial.print(b, HEX);
Serial.print(' ');
}
Serial.println();
}
Serial.println(sum == 0 ? "checksum OK" : "checksum error"); // 128 bytes must sum to 0
}
void loop() {}
Режим 640×480 при 60 Гц: временные параметры
| Участок | По горизонтали | По вертикали |
|---|---|---|
| Видимая часть | 640 пикселей, 25,42 мкс | 480 строк, 15,25 мс |
| Передняя площадка | 16 пикселей, 0,64 мкс | 10 строк, 0,32 мс |
| Синхроимпульс | 96 пикселей, 3,81 мкс | 2 строки, 0,064 мс |
| Задняя площадка | 48 пикселей, 1,91 мкс | 33 строки, 1,05 мс |
| Всего | 800 пикселей, 31,78 мкс | 525 строк, 16,68 мс |
| Частота | 31,469 кГц | 59,940 Гц |
| Полярность синхроимпульса | отрицательная | отрицательная |
Пиксельная частота — 25,175 МГц ± 0,5 %. В DMT этот режим отмечен как отраслевой (Industry Standard), а не собственный стандарт VESA, и расписан с рамкой: по 8 пикселей справа и слева и по 8 строк сверху и снизу. Рамку обычно считают частью площадок, так сделано и в таблице: передняя площадка — 8 + 8 = 16 пикселей, задняя — 40 + 8 = 48, по вертикали — 2 + 8 = 10 и 25 + 8 = 33 строки. Во время площадок и синхроимпульсов выходы R, G и B держат в нуле — это интервалы гашения.
Нередко этот режим тактируют от 25 МГц — так, например, построены примеры Digilent для платы Basys 3, проверенные, по словам производителя, на реальных мониторах. Это на 0,7 % ниже номинала и за пределами допуска DMT: при тех же 800 × 525 строчная частота получается 31,25 кГц, кадровая — 59,52 Гц. Если монитор не синхронизируется, начните проверку с частоты. Формат 640×480 обязан принимать и любой приёмник HDMI.
Генератор синхроимпульсов на ПЛИС — это два счётчика и сравнения с границами из таблицы:
// 640x480 @ 60 Hz (VESA DMT), pixel clock 25.175 MHz.
// Borders are counted as porches: 640 + 16 + 96 + 48 = 800, 480 + 10 + 2 + 33 = 525.
module vga_sync (
input wire clk_pix,
output reg [9:0] x = 0, // 0..799
output reg [9:0] y = 0, // 0..524
output wire hsync_n, // negative polarity
output wire vsync_n, // negative polarity
output wire visible // drive R, G, B to zero when low
);
always @(posedge clk_pix) begin
if (x == 10'd799) begin
x <= 10'd0;
y <= (y == 10'd524) ? 10'd0 : y + 10'd1;
end else begin
x <= x + 10'd1;
end
end
assign hsync_n = ~(x >= 10'd656 && x < 10'd752); // 640 + 16 ... + 96
assign vsync_n = ~(y >= 10'd490 && y < 10'd492); // 480 + 10 ... + 2
assign visible = (x < 10'd640) && (y < 10'd480);
endmodule
VGA с микроконтроллера или ПЛИС: резистивный ЦАП
Видео-ЦАП не обязателен. Цифровой выход с последовательным резистором вместе с входом монитора 75 Ом образует делитель напряжения, и резистор подбирают так, чтобы при высоком уровне на выходе на мониторе было 0,7 В:
где = 75 Ом — вход монитора, — напряжение высокого уровня на выводе, = 0,7 В. Для 3,3 В получается Ом; ближайший номинал ряда E12 — 270 Ом, и на мониторе будет В. Для 5 В: Ом, берём 470 Ом — 0,69 В. Оба значения укладываются в допуск VSIS: от 0,665 до 0,770 В. Ток вывода при этом — около 9,6 мА при 3,3 В и 9,2 мА при 5 В: сверьте его с допустимым по даташиту микроконтроллера.
Один вывод на цвет даёт 8 цветов. Больше цветов дают несколько выводов на цвет с двоично-взвешенными резисторами R, 2R, 4R…: каждый следующий разряд вдвое слабее предыдущего. Вместе резисторы канала работают как один эквивалентный
где — резистор старшего разряда, — число разрядов, а напряжение на мониторе растёт с кодом линейно. Чтобы при всех единицах на мониторе было 0,7 В, эквивалент должен быть таким же, как одиночный резистор: около 279 Ом при 3,3 В. Для четырёх разрядов Ом.
Так устроен выход VGA платы Digilent Basys 3: 510 Ом, 1, 2 и 4 кОм на каждый цвет, 16 уровней на канал и 4096 цветов. Проверка: параллельно эти резисторы дают 269,5 Ом, и при всех единицах на мониторе В, а один уровень — около 48 мВ.
Строго говоря, выходное сопротивление источника видеосигнала должно быть 75 Ом, а у такого ЦАП оно около 270 Ом. На практике это допустимо: кабель нагружен на согласованные 75 Ом монитора, отражённой волны от дальнего конца почти нет, и рассогласование на стороне источника не мешает. Синхроимпульсы подают через небольшие резисторы — на Basys 3 это 100 Ом; последовательные резисторы на выходах синхроимпульсов ставит и TI в микросхеме защиты порта VGA TPD7S019.
Пиксельная частота 25,175 МГц — это 40 нс на пиксель. Микроконтроллер без видеовыхода, которому такая скорость недоступна, выводит меньше пикселей в строке: каждый растягивают на несколько точек, а синхроимпульсы формирует таймер с временами из таблицы выше — частоты строк и кадров должны остаться прежними.
Типичные ошибки
- Перепутаны вилка и розетка. Нумерация зеркальная: контакт 1 розетки — справа вверху, вилки — слева. При распайке кабеля сверяйтесь с видом той детали, которую держите в руках.
- Логический уровень прямо на R, G или B. Без последовательного резистора 3,3 или 5 В попадает на вход 75 Ом: картинка пересвечена, а вывод микроконтроллера перегружен током 44–67 мА.
- Расчёт делителя без монитора. Резистор считают для нагрузки 75 Ом. Если измерить напряжение на разъёме без монитора, оно будет близко к напряжению питания — это нормально.
- 25 МГц вместо 25,175 МГц. Частота на 0,7 % ниже номинала и выходит за допуск DMT: многие мониторы такой сигнал принимают, но гарантии нет.
- Цвет во время гашения. В площадках и синхроимпульсах выходы R, G и B должны быть в нуле.
- Нет +5 В на контакте 9. Выключенный монитор без этого питания не отдаёт EDID, и компьютер не узнаёт, какие режимы он поддерживает.
- Пассивный переходник HDMI — VGA. В HDMI нет аналоговых сигналов, поэтому нужен активный преобразователь. Подробности — в статье о распиновке HDMI.
Частые вопросы
Какой контакт VGA за какой цвет отвечает?
Контакт 1 — красный, 2 — зелёный, 3 — синий; их обратные провода — 6, 7 и 8. Строчная синхронизация — контакт 13, кадровая — 14, общий провод — 5 и 10. Контакты 12 и 15 — SDA и SCL канала DDC, 9 — +5 В для DDC, 4 и 11 у мониторов с DDC не подключены.
Какое напряжение на контактах RGB у VGA?
От 0 В (чёрный) до 0,7 В (белый) на нагрузке 75 Ом; по стандарту VESA VSIS белый уровень — 0,700 В с допуском +0,07/−0,035 В. Синхроимпульсы цифровые, уровня TTL: передатчик выдаёт единицу 2,4–5,5 В, монитор распознаёт её уже от 2,0 В.
Зачем в разъёме VGA +5 В на контакте 9?
Это питание канала DDC: по нему компьютер читает EDID даже у выключенного монитора, а включённый монитор может по этому напряжению понять, что видеовыход активен. Компьютер обязан держать 5 В ± 5 % и отдавать 50 мА с ограничением тока не выше 1 А; выключенный монитор берёт до 50 мА, включённый — не больше 1 мА. Больше нагружать линию нельзя.
Что такое DDC в VGA и как прочитать EDID?
DDC — это шина I²C на контактах 12 (SDA) и 15 (SCL) с общим проводом на контакте 5. EDID лежит по 7-битному адресу 0x50 блоками по 128 байт; первый блок начинается заголовком 00 FF FF FF FF FF FF 00, а сумма всех его байтов по модулю 256 равна нулю. Прочитать его может любой микроконтроллер с I²C на частоте 100 кГц.
Как подключить VGA к Arduino или ПЛИС?
Каждый цветовой выход подключают через последовательный резистор, который вместе с входом монитора 75 Ом даёт 0,7 В: 470 Ом при логике 5 В и 270 Ом при 3,3 В. Синхроимпульсы подают напрямую или через резисторы около 100 Ом. Для режима 640×480 при 60 Гц нужна пиксельная частота 25,175 МГц и времена из стандарта VESA DMT.
Чем вилка VGA отличается от розетки по нумерации?
Они зеркальны. На розетке видеокарты, если смотреть спереди широкой стороной вверх, контакт 1 — справа в верхнем ряду, на вилке кабеля — слева. Средний ряд на розетке сдвинут на полшага к контакту 1, на вилке — в другую сторону.
Источники
- VESA. Enhanced Display Data Channel (E-DDC) Standard, Version 1.2, 2007 — бесплатный стандарт VESA. Табл. 7-1 — контакты VGA в исходной VGA, у компьютера и у монитора с DDC, рис. 7-1 — вид на розетку, п. 7.1.1 — синий цвет розетки и утопленное гнездо 9, п. 7.1.3 — питание +5 В, п. 4.1 — подтяжки DDC, п. 4.2.2 — EDID через 20 мс, табл. 2-1 — режимы DDC
- VESA. Video Signal Standard (VSIS), Version 1, Rev. 1, 2000 — табл. 1 — уровни синхроимпульсов, табл. 2 — уровни R, G, B, табл. 3 — 75 Ом и нагрузка синхроимпульсов 2,2 кОм. В списке бесплатных стандартов VESA — редакция 1.0 R2, статья сверена по Rev. 1
- VESA. Display Monitor Timing (DMT) Standard, Version 1.0, Rev. 13, 2013 — 640×480 при 60 Гц: 25,175 МГц ± 0,5 %, 800 × 525 с рамкой 8 пикселей и 8 строк, отрицательные синхроимпульсы
- VESA. Enhanced Extended Display Identification Data (E-EDID) Standard, Release A, Rev. 2 (EDID 1.4), 2006 — блок 128 байт, заголовок 00 FF FF FF FF FF FF 00, контрольная сумма, байт 14h — тип входа и уровни аналогового сигнала
- VESA. Display Data Channel Command Interface (DDC/CI) Standard, Version 1.1, 2004 — адрес монитора 6Eh/6Fh, скорость 100 кбит/с
- Würth Elektronik. WR-DSUB Female High Density Angled PCB Connector, 618015330923, rev. 003.001, 2025 — розетка DE-15, вид спереди: контакт 1 справа в верхнем ряду, средний ряд сдвинут к нему; шаг 2,29 мм
- Würth Elektronik. WR-DSUB Male High Density Angled PCB Connector, 618015325323, rev. 001.002, 2025 — вилка DE-15, вид спереди: контакт 1 слева в верхнем ряду
- Digilent. Basys 3 Reference Manual, раздел VGA Port — 4 бита на цвет: 510 Ом, 1, 2 и 4 кОм, 100 Ом на HS и VS, 0–0,7 В на входе монитора 75 Ом, тайминги 640×480 от 25 МГц
- Analog Devices. ADV7125 CMOS, 330 MHz Triple 8-Bit High Speed Video DAC, Rev. D — токовые выходы на нагрузку 37,5 Ом — кабель 75 Ом, нагруженный с двух сторон
- Texas Instruments. TPD7S019 7-Channel Integrated ESD Solution for VGA Port, SLLSE33E, 2016 — защита порта VGA: буферы синхроимпульсов с выходом КМОП 5 В и последовательными резисторами, преобразование уровней DDC, подтяжки DDC 1,5–2 кОм