Display Data Channel ( DDC ) — это набор протоколов для цифровой связи между дисплеем компьютера и графическим адаптером , которые позволяют дисплею сообщать адаптеру о поддерживаемых им режимах отображения и позволяют хосту компьютера настраивать параметры монитора, такие как яркость и контрастность.
Как и современные аналоговые разъемы VGA, разъемы DVI и DisplayPort включают контакты для DDC, но DisplayPort поддерживает DDC только в рамках своей дополнительной функции Dual-Mode DP ( DP++ ) в режиме DVI/HDMI.
Стандарт был создан Ассоциацией по стандартам видеоэлектроники (VESA).
Пакет стандартов DDC направлен на обеспечение возможностей управления питанием Plug and Play и DPMS для компьютерных дисплеев.
Протоколы DDC1 и DDC2B/Ab/B+/Bi представляют собой физическую связь между монитором и видеокартой, которая изначально осуществлялась на двух или трех контактах 15-контактного аналогового разъема VGA .
Расширенные данные идентификации дисплея (EDID) — это сопутствующий стандарт; он определяет компактный двоичный формат файла, описывающий возможности монитора и поддерживаемые графические режимы, хранящиеся в чипе постоянной памяти ( EEPROM ), запрограммированном производителем монитора. Формат использует блок описания, содержащий 128 байт данных, с дополнительными блоками расширения для предоставления дополнительной информации. Самая последняя версия — Enhanced EDID (E-EDID) Release A, v2.0 . DisplayID призван заменить EDID, который поддерживает множество функций, таких как HDR и управление цветом .
Первая версия стандарта DDC была принята в августе 1994 года. Она включала формат EDID 1.0 и определяла физические каналы DDC1, DDC2B и DDC2Ab.
Версия 2 DDC , представленная в апреле 1996 года, разделила EDID на отдельный стандарт и представила протокол DDC2B+.
В версии DDC 3 , выпущенной в декабре 1997 года, был представлен протокол DDC2Bi и поддержка VESA Plug and Display и Flat Panel Display Interface на отдельных адресах устройств, требующих от них соответствия EDID 2.0.
Стандарт DDC был заменен стандартом E-DDC в 1999 году.
DDC также используется в качестве канала связи для реализации защиты широкополосного цифрового контента (HDCP).
До DDC стандарт VGA зарезервировал четыре контакта в аналоговом разъеме VGA , известных как ID0, ID1, ID2 и ID3 (контакты 11, 12, 4 и 15) для идентификации типа монитора. Эти идентификационные контакты, присоединенные к резисторам для подтягивания одного или нескольких из них к земле (GND), позволяли определять тип монитора, причем все открытые (n/c, не подключенные) означали «нет монитора».
В наиболее часто документированной схеме вывод ID3 не использовался, и были определены только 3 оставшихся вывода. Цветные мониторы подтягивали вывод ID0 к GND, в то время как монохромные мониторы подтягивали вывод ID1 к GND. Наконец, вывод ID2, подтянутый к GND, сигнализировал о мониторе, поддерживающем разрешение 1024×768, таком как IBM 8514. В этой схеме входные состояния выводов ID кодировали бы тип монитора следующим образом: [1] [2] [3]
Существовали также более сложные схемы, которые использовали все 4 контакта ID при манипулировании сигналами HSync и VSync для извлечения 16 бит (4 значения контактов ID для каждой из 4 комбинаций состояний HSync и VSync) идентификации монитора. [4]
DDC изменила назначение контактов ID, включив последовательный интерфейс связи . Однако во время перехода изменение не было обратно совместимым, и видеокарты, использующие старую схему, могли иметь проблемы, если был подключен монитор с поддержкой DDC. [5] [6] Сигнал DDC может быть отправлен на или с монитора видеографической матрицы (VGA) с помощью протокола I 2 C, используя последовательные тактовые импульсы и последовательные контакты данных ведущего устройства.
DDC1 — это простой, низкоскоростной, однонаправленный последовательный протокол связи . Контакт 12, ID1 функционирует как линия данных, которая непрерывно передает 128-байтовый блок EDID, а тактовая частота данных синхронизирована с вертикальной синхронизацией , обеспечивая типичную тактовую частоту от 60 до 100 Гц.
Очень немногие устройства отображения реализовали этот протокол.
Самая распространенная версия, называемая DDC2B , основана на I²C , последовательной шине . Контакт 12, ID1, разъема VGA используется в качестве контакта данных шины I²C, а ранее неиспользуемый контакт 15 — это тактовый сигнал I²C. Контакт 9, ранее использовавшийся в качестве механического ключа, подает питание +5 В постоянного тока (до 50 мА) для питания EEPROM. Благодаря этому хост может считывать EDID, даже если монитор выключен. Хотя I²C полностью двунаправленный и поддерживает несколько мастеров шины , DDC2B однонаправленный и допускает только одного мастера шины — графический адаптер. Монитор действует как подчиненное устройство по 7-битному адресу I²C 50h и предоставляет 128–256 байт EDID только для чтения. Поскольку этот доступ всегда является чтением, первый октет I²C всегда будет A1h.
DDC2Ab — это реализация интерфейса ACCESS.bus на базе I²C со скоростью 100 кбит/с , что позволило производителям мониторов поддерживать внешние периферийные устройства ACCESS.bus, такие как мышь или клавиатура, практически без дополнительных усилий. Такие устройства и мониторы были недолго доступны в середине 1990-х годов, но они исчезли с появлением USB .
DDC2B+ и DDC2Bi — это урезанные версии DDC2Ab, которые поддерживают только устройства монитора и видеокарты, но при этом допускают двунаправленную связь между ними.
DDC2 не является эксклюзивным для интерфейса VGA. И DVI , и HDMI имеют выделенные провода DDC2B.
Стандарт DDC/CI ( Command Interface ) был представлен в августе 1998 года. Он определяет средства для компьютера, чтобы отправлять команды на монитор, а также получать данные датчиков от монитора по двунаправленной связи. Конкретные команды для управления мониторами определены в отдельном стандарте Monitor Control Command Set (MCCS) версии 1.0, выпущенном в сентябре 1998 года.
Мониторы DDC/CI иногда поставляются с внешним цветовым датчиком, позволяющим выполнять автоматическую калибровку цветового баланса монитора. Некоторые наклонные мониторы DDC/CI поддерживают функцию автоматического поворота, когда датчик вращения в мониторе позволяет операционной системе удерживать дисплей в вертикальном положении при перемещении монитора между портретным и альбомным положениями.
Большинство мониторов DDC/CI поддерживают только небольшое подмножество команд MCCS, а некоторые имеют недокументированные команды. Многие производители не обращали внимания на DDC/CI в прошлом, но теперь почти все мониторы поддерживают такие общие команды MCCS, как управление яркостью и контрастностью. [a]
Стандарт DDC/CI описывает полный набор двунаправленных протоколов управления — DDC2Ab, DDC2Bi и DDC2B+ — в едином стандарте и предоставляет средства для упаковки команд набора команд управления монитором.
Версия DDC/CI 1.1 была принята в октябре 2004 года. [9]
Monitor Control Command Set версии 2.0 был принят в октябре 2003 года. Новый MCCS V3 был представлен в июле 2006 года, хотя пока не получил достаточного внимания отрасли. Последняя версия стандарта V2 — версия 2.2a, принятая в январе 2011 года.
Несмотря на повсеместное распространение в дисплеях после 2016 года, DDC/CI обычно не используется операционной системой по умолчанию для управления яркостью на внешних дисплеях. [10] Для отправки команд на дисплей может использоваться дополнительное программное обеспечение, но степень системной интеграции может различаться.
Windows представляет DDC/CI как серию API Win32 Monitor Configuration . [11]
Enhanced Display Data Channel ( E-DDC ) — это последняя версия стандарта DDC. Версия 1 была представлена в сентябре 1999 года и включала добавление указателя сегмента, что позволяло использовать до 32 Кбайт информации об отображении для использования стандартом Enhanced EDID (E-EDID).
Более ранние реализации DDC использовали простое 8-битное смещение данных при взаимодействии с памятью EDID в мониторе, ограничивая размер хранилища до 2 8 байт = 256 байт, но позволяя использовать дешевые 2-Кбит EEPROM. В E-DDC была введена специальная схема адресации I²C, в которой можно было выбрать несколько 256-байтовых сегментов. Для этого один 8-битовый индекс сегмента передается на дисплей через адрес I²C 30h. (Поскольку этот доступ всегда является записью, первый октет I²C всегда будет 60h.) Затем данные из выбранного сегмента немедленно считываются через обычный адрес DDC2 с использованием повторяющегося сигнала I²C 'START'. Однако спецификация VESA определяет диапазон значений индекса сегмента как 00h до 7Fh, поэтому это позволяет адресовать только 128 сегментов × 256 байт =32 KiB . Регистр индекса сегмента является изменчивым, по умолчанию он равен нулю и автоматически сбрасывается на ноль после каждого NACK или STOP. Поэтому его необходимо устанавливать каждый раз, когда выполняется доступ к данным выше первого 256-байтового сегмента. Механизм автоматического сброса должен обеспечивать обратную совместимость, например, с хостами DDC2B, в противном случае они могут застрять на сегменте, отличном от 00h, в некоторых редких случаях.
Другими важными изменениями стали удаление протоколов DDC1 и DDC2Ab, прекращение использования отдельных адресов устройств VESA P&D и FPDI, а также уточнение требований к питанию DDC.
Версия E-DDC 1.1 , утвержденная в марте 2004 года, поддерживала HDMI и бытовую электронику.
Версия E-DDC 1.2 , утвержденная в декабре 2007 года, ввела поддержку стандартов DisplayPort (который не имеет выделенных соединений DDC2B и использует свой двунаправленный вспомогательный канал для связи EDID и MCCS) и DisplayID .
Версия E-DDC 1.3 от сентября 2017 года содержит исправления опечаток и незначительные уточнения.
Некоторые переключатели KVM (клавиатура-видео-мышь) и видеоудлинители неправильно обрабатывают трафик DDC, из-за чего приходится отключать функции plug and play монитора в операционной системе и, возможно, даже физически удалять контакт 12 (последовательный контакт данных) из аналоговых кабелей VGA [12], которые подключают такое устройство к нескольким ПК.
Microsoft Windows имеет стандартный драйвер "Plug and Play Monitor", который использует информацию EDID дисплея для создания списка поддерживаемых режимов монитора. Апплет панели управления Display Resolution может быть использован для отключения функций Plug and Play этого драйвера и ручного выбора любого разрешения или частоты обновления, поддерживаемых видеокартой. [13] Многие производители видеокарт и сторонние компании предоставляют приложения управления, которые могут быть использованы для выбора пользовательского режима отображения, который не соответствует информации EDID или файлу .INF монитора.
Я выполнил этот мод на старом 6-дюймовом патч-кабеле, который раньше использовался для подключения 3D-ускорителя. Я называю его своим "кабелем свободы", так как его можно подключить к любому монитору, чтобы временно отключить его EDID :D