디스플레이 데이터 채널

**디스플레이 데이터 채널**(Display Data Channel, **DDC**)은 디스플레이가 지원되는 디스플레이 모드를 어댑터에 전달할 수 있도록 하고 컴퓨터 호스트가 밝기와 같은 모니터 매개변수를 조정할 수 있도록 하는 컴퓨터 디스플레이와 그래픽 어댑터 간의 디지털 통신을 위한 프로토콜 모음이다.

최신 아날로그 VGA 커넥터와 마찬가지로 DVI 및 디스플레이포트 커넥터에는 DDC용 핀이 포함되어 있지만 DisplayPort는 DVI/HDMI 모드의 옵션인 듀얼 모드 DP(DP++) 기능 내에서 DDC만 지원한다.

이 표준은 VESA(비디오 전자공학 표준위원회)에서 제정되었다.

## 개요
DDC 표준 스위트 목표는 컴퓨터 디스플레이에 대한 플러그 앤 플레이 및 DPMS 전원 관리 경험을 제공하는 것이다.

DDC1 및 DDC2B/Ab/B+/Bi 프로토콜은 모니터와 비디오 카드 간의 물리적 링크이며, 원래는 15핀 아날로그 VGA 단자의 2개 또는 3개의 핀에 연결되었다.

확장된 디스플레이 식별 데이터(EDID)는 동반 표준이다. 제조업체가 프로그래밍한 읽기 전용 메모리(EEPROM) 칩에 저장된 모니터의 기능 및 지원 그래픽 모드를 설명하는 소형 이진 파일 형식을 정의한다. 이 형식은 추가 정보를 제공하기 위한 선택적 확장 블록과 함께 128바이트 데이터가 포함된 설명 블록을 사용한다. 가장 최신 버전은 E-EDID(Enhanced EDID) 릴리스 A, v2.0이다. DisplayID는 HDR 및 색 관리와 같은 많은 기능을 지원하는 EDID를 대체하기 위해 고안되었다.

DDC 표준의 첫 번째 버전은 1994년 8월에 채택되었다. 여기에는 EDID 1.0 형식이 포함되었고 DDC1, DDC2B 및 DDC2Ab 물리적 링크를 지정했다.

1996년 4월에 도입된 DDC 버전 2는 EDID를 별도 표준으로 분리하고 DDC2B+ 프로토콜을 도입했다.

1997년 12월 DDC 버전 3은 DDC2Bi 프로토콜과 별도의 장치 주소에 대한 VESA 플러그 앤 디스플레이 및 평판 디스플레이 인터페이스 지원을 도입하여 EDID 2.0을 준수하도록 요구했다.

DDC 표준은 1999년에 E-DDC로 대체되었다.

DDC는 고대역 디지털 콘텐츠 보호(HDCP)를 구현하기 위한 통신 채널로도 사용된다.

## 물리적 링크
DDC 이전에 VGA 표준은 아날로그 VGA 단자에 4개의 핀(ID0, ID1, ID2, ID3(핀 11, 12, 4, 15))을 모니터 유형 식별용으로 예약했다. 저항기에 연결되어 하나 이상의 핀을 접지(GND)에 연결하는 이 ID 핀을 통해 모니터 유형을 정의할 수 있었으며, 모두 개방(n/c, 연결되지 않음)은 "모니터 없음"을 의미했다.

가장 일반적으로 문서화된 체계에서는 ID3 핀을 사용하지 않고 나머지 3개의 핀만 정의되었다. ID0은 컬러 모니터에서 GND로 풀렸고, 모노크롬 모니터는 ID1을 GND로 풀었다. 마지막으로 ID2는 IBM 8514와 같이 1024×768 해상도를 지원하는 모니터를 신호로 보내기 위해 GND로 풀렸다. 이 체계에서 ID 핀의 입력 상태는 다음과 같이 모니터 유형을 인코딩한다.

HSync 및 VSync 신호를 조작하여 16비트(HSync 및 VSync 상태의 4가지 조합 각각에 대해 4개의 ID 핀 값)의 모니터 식별을 추출하는 4개의 ID 핀을 모두 사용하는 보다 정교한 체계도 존재했다.

DDC는 직렬 링크 인터페이스를 통합하기 위해 ID 핀의 목적을 변경했다. 그러나 전환 중에 변경 사항이 하위 호환되지 않아 DDC 지원 모니터가 연결된 경우 이전 체계를 사용하는 비디오 카드에 문제가 발생할 수 있다. DDC 신호는 마스터의 직렬 클럭 및 직렬 데이터 핀을 사용하여 I2C 프로토콜로 비디오 그래픽 어레이(VGA) 모니터로 보내거나 받을 수 있다.

### DDC1
DDC1은 간단하고 저속의 단방향 직렬 링크 프로토콜이다. 핀 12, ID1은 128바이트 EDID 블록을 지속적으로 전송하는 데이터 라인 역할을 하며, 데이터 클럭은 수직 동기와 동기화되어 일반적으로 60~100&nbsp;Hz의 클럭 속도를 제공한다.

이 프로토콜을 구현한 디스플레이 장치는 거의 없다.

### DDC2
**DDC2B**라고 하는 가장 일반적인 버전은 I²C, 즉 직렬 버스를 기반으로 한다. VGA 단자의 핀 12, ID1은 I²C 버스의 데이터 핀으로 사용되고, 이전에 사용되지 않았던 핀 15는 I²C 클럭이다. 이전에는 기계적 키로 사용되었던 핀 9는 EEPROM에 전원을 공급하기 위해 +5V DC 전원(최대 50mA)을 공급한다. 이렇게 하면 모니터가 꺼져 있어도 호스트가 EDID를 읽을 수 있다. I²C는 완벽하게 양방향이고 여러 버스 마스터를 지원하지만, DDC2B는 단방향이고 하나의 버스 마스터(그래픽 어댑터)만 허용한다. 모니터는 7비트 I²C 주소 50h에서 슬레이브 장치 역할을 하며, 128-256바이트의 읽기 전용 EDID를 제공한다. 이 액세스는 항상 읽기이므로 첫 번째 I²C 옥텟은 항상 A1h이다.

**DDC2Ab**는 I²C 기반 100kbit/s ACCESS.bus 인터페이스의 구현으로, 모니터 제조업체가 최소한의 노력으로 마우스 또는 키보드와 같은 외부 ACCESS.bus 주변 장치를 지원할 수 있게 했다. 이러한 장치 및 모니터는 1990년대 중반에 잠깐 사용 가능했지만 USB가 도입되면서 사라졌다.

**DDC2B+** 및 **DDC2Bi**는 모니터 및 그래픽 카드 장치만 지원하지만 여전히 양방향 통신을 허용하는 DDC2Ab의 축소 버전이다.

DDC2는 VGA 인터페이스에만 국한되지 않는다. DVI 및 HDMI 모두 전용 DDC2B 와이어를 갖추고 있다.

## DDC/CI
**DDC/CI** (명령 인터페이스) 표준은 1998년 8월에 도입되었다. 이 표준은 컴퓨터가 양방향 링크를 통해 모니터에 명령을 보내고 모니터에서 센서 데이터를 수신하는 방법을 지정한다. 모니터를 제어하는 특정 명령은 1998년 9월에 발표된 별도의 모니터 제어 명령 집합(MCCS) 표준 버전 1.0에 정의되어 있다.

DDC/CI 모니터는 때때로 모니터 색상 균형의 자동 보정을 위해 외부 색상 센서와 함께 제공된다. 일부 기울기 DDC/CI 모니터는 자동 회전 기능을 지원하며, 모니터의 회전 센서를 통해 운영 체제가 모니터가 세로 및 가로 위치 사이를 이동할 때 디스플레이를 똑바로 유지할 수 있도록 한다.

대부분의 DDC/CI 모니터는 MCCS 명령의 작은 하위 집합만 지원하며 일부는 문서화되지 않은 명령을 가지고 있다. 많은 제조업체는 과거에 DDC/CI에 주의를 기울이지 않았지만, 이제는 거의 모든 모니터가 밝기 및 대비 관리와 같은 일반적인 MCCS 명령을 지원한다.

DDC/CI 표준은 DDC2Ab, DDC2Bi 및 DDC2B+의 전체 양방향 제어 프로토콜 세트를 단일 표준으로 설명하고 모니터 제어 명령 집합 명령을 패키징하는 수단을 제공한다.

DDC/CI 버전 1.1은 2004년 10월에 채택되었다.

모니터 제어 명령 집합 버전 2.0은 2003년 10월에 채택되었다. 새로운 MCCS V3는 2006년 7월에 도입되었지만 아직 충분한 산업계의 관심을 받지 못했다. V2 표준의 최신 릴리스는 2.2a 버전이며 2011년 1월에 채택되었다.

### DDC/CI에 대한 OS 지원
2016년 이후 디스플레이의 유비쿼터스에도 불구하고 DDC/CI는 일반적으로 외부 디스플레이의 밝기 제어를 위해 기본적으로 운영 체제에서 사용되지 않는다. 추가 소프트웨어를 사용하여 디스플레이에 명령을 보낼 수 있지만 시스템 통합 정도는 다양하다.

Windows는 Monitor Configuration Win32 API 시리즈로 DDC/CI를 노출한다.

## E-DDC
**Enhanced Display Data Channel**(**E-DDC**)는 DDC 표준의 최신 개정판이다. 버전 1은 1999년 9월에 도입되었으며 E-EDID(Enhanced EDID) 표준에서 사용하기 위해 최대 32KB의 디스플레이 정보 저장 공간을 허용하는 세그먼트 포인터가 추가되었다.

초기 DDC 구현은 모니터의 EDID 메모리와 통신할 때 간단한 8비트 데이터 오프셋을 사용하여 스토리지 크기를 28바이트 = 256바이트로 제한했지만 저렴한 2Kbit EEPROM을 사용할 수 있었다. E-DDC에서는 여러 256바이트 세그먼트를 선택할 수 있는 특수 I²C 주소 지정 체계가 도입되었다. 이를 위해 단일 8비트 세그먼트 인덱스가 I²C 주소 30h를 통해 디스플레이로 전달된다. (이 액세스는 항상 쓰기이므로 첫 번째 I²C 옥텟은 항상 60h이다.) 선택된 세그먼트의 데이터는 반복되는 I²C 'START' 신호를 사용하여 일반 DDC2 주소를 통해 즉시 읽힌다. 그러나 VESA 사양은 세그먼트 인덱스 값 범위를 00h에서 7Fh로 정의하므로 이는 128개 세그먼트 × 256바이트 = 만 주소 지정할 수 있다. 세그먼트 인덱스 레지스터는 휘발성이며 기본값은 0이고 각 NACK 또는 STOP 후에 자동으로 0으로 재설정된다. 따라서 첫 번째 256바이트 세그먼트보다 큰 데이터에 액세스할 때마다 설정해야 한다. 자동 재설정 메커니즘은 예를 들어 DDC2B 호스트에 대한 하위 호환성을 제공하기 위한 것으로, 그렇지 않으면 일부 드문 경우에 00h 이외의 세그먼트에 멈출 수 있다.

다른 중요한 변경 사항은 DDC1 및 DDC2Ab 프로토콜 제거, 별도의 VESA P&D 및 FPDI 장치 주소 사용 중단, DDC 전원 요구 사항 명확화였다.

E-DDC 버전 1.1은 2004년 3월에 승인되었으며 HDMI 및 소비자 전자 제품 지원을 특징으로 했다.

E-DDC 버전 1.2는 2007년 12월에 승인되었으며 디스플레이포트(전용 DDC2B 링크가 없고 EDID 및 MCCS 통신을 위해 양방향 보조 채널을 사용한다) 및 DisplayID 표준 지원을 도입했다.

2017년 9월의 E-DDC 버전 1.3은 오류 수정 및 사소한 설명이 포함되어 있다.

## DDC 비활성화
일부 KVM 스위치(키보드-비디오-마우스) 및 비디오 확장기는 DDC 트래픽을 잘못 처리하므로 운영 체제에서 모니터 플러그 앤 플레이 기능을 비활성화하고 심지어 그러한 장치를 여러 PC에 연결하는 아날로그 VGA 케이블에서 핀 12(직렬 데이터 핀)를 물리적으로 제거해야 한다.

Microsoft Windows는 디스플레이의 EDID 정보를 사용하여 지원되는 모니터 모드 목록을 구성하는 표준 "플러그 앤 플레이 모니터" 드라이버를 갖추고 있다. 디스플레이 해상도 제어판 애플릿을 사용하여 이 드라이버의 플러그 앤 플레이 기능을 비활성화하고 비디오 카드가 지원하는 모든 해상도 또는 새로 고침 빈도를 수동으로 선택할 수 있다. 많은 비디오 카드 제조업체 및 타사는 EDID 정보 또는 모니터 .INF 파일과 일치하지 않는 사용자 지정 디스플레이 모드를 선택하는 데 사용할 수 있는 제어 애플리케이션을 제공한다.

## 같이 보기
* 확장된 디스플레이 식별 데이터

## 출처
* *Extended Display Identification Data (EDID) Standard*, Version 3, 1997, VESA
* VESA Standards FAQ 
* *Display interfaces: fundamentals*. Bob Myers, Robert L. Myers, Society for Information Display


## 외부 링크
* Linux
** ddcci-driver-linux: Linux kernel driver supporting backlight control for monitors supporting DDC/CI
** ddccontrol: Linux software which uses DDC/CI to control monitors supporting this protocol (seems to be maintained on github)
** ddcutil: (formerly ddctool) Linux software for querying and changing monitor settings over DDC/CI
** MonitorDarkly: proof of concept for exploiting monitors over vendor-specific DDC/CI extensions
* Windows
** softMCCS: Windows software which uses DDC/CI to control monitors supporting this protocol
** *[http://www.nicomsoft.com/wini2cddc/ Nicomsoft WinI2C/DDC]: Windows Software Development Kit (SDK) which uses I2C and DDC/CI protocols to control monitors* (removed from support, downloadable ZIP files don't contain application)
** Monitorian: Open source application that uses DDC/CI to change brightness from an icon in the Task Bar
** Twinkle Tray: similar to Monitorian
** Win10_BrightnessSlider: similar to Monitorian
** winddcutil: an open source Windows implementation of the ddcutil Linux program for querying and changing monitor settings, such as brightness and colour levels.
* Mac
** DisplayBuddy: a Mac app for control of display functions
** NativeDisplayBrightness: a minimal DDC luminosity app for Mac OS X
** ddcctl: an open source tool for querying and changing monitor settings over DDC/CI
** MonitorControl: an open source tool for mac which uses DDC/CI to control monitors supporting this protocol
** BetterDisplay: a macOS menubar app with custom resolutions, XDR/HDR extra brightness, DCC brightness/contrast/colours/volume adjustments, dummy displays, picture in picture, display overrides.
** Lunar: an open source app that uses DDC to sync a Mac's primary display brightness and contrast with external monitors

분류:VESA