4、DDC通道(I2C):DDC的作用、EDID数据结构、SCDC在HDMI 2.0中的新特性

好,咱们接着聊。前面几章我们把HDMI的物理层、TMDS通道和热插拔检测都过了一遍。这一章,我们来聊聊DDC通道——也就是那个藏在HDMI接口里的I2C总线。

说实话,DDC这个通道,很多工程师容易忽略它。觉得它不就是读个EDID嘛,能有多复杂?但我告诉你,我遇到过不下十次因为DDC通信问题导致的显示异常。有的是花屏,有的是黑屏,有的干脆就是分辨率上不去。所以,这一章咱们好好掰扯掰扯。

4.1 DDC通道是什么?

DDC,全称是Display Data Channel(显示数据通道)。它本质上是一条I2C总线,运行在100kHz的标准速率下。

在HDMI接口中,DDC通道由两条线组成:

  • SCL(串行时钟线)—— 对应HDMI的15脚
  • SDA(串行数据线)—— 对应HDMI的16脚

这两条线加上一个地(HDMI的17脚),就构成了完整的I2C通信链路。源端(比如你的电脑显卡)作为主设备,显示器作为从设备。

核心作用:源端通过DDC通道读取显示器的EDID数据,从而知道显示器支持哪些分辨率、刷新率、色彩空间等信息。说白了,就是源端问显示器:“你能显示啥?”显示器回答:“我能显示4K@60Hz,支持HDR,色彩深度10bit...”

4.2 EDID数据结构详解

EDID(Extended Display Identification Data)是存储在显示器中的一组数据块。标准EDID大小为128字节,但HDMI的EDID可以扩展到多个128字节块。

我习惯把EDID分成几个关键区域来看:

字节偏移 内容 说明
0-7 头部标识 固定为00 FF FF FF FF FF FF 00
8-17 厂商信息 包含制造商ID、产品代码、序列号
18-19 EDID版本 通常为1.3或1.4
20-24 基本显示参数 模拟/数字接口、屏幕尺寸、伽马值
25-34 色度信息 RGB/YCbCr色度坐标
35-37 时序标准 支持的标准时序
38-53 标准时序列表 8个标准时序描述
54-125 详细时序描述 4个18字节的详细时序块
126-127 扩展标志和校验和 是否有扩展块、校验和

嗯,这里要注意一点:EDID的校验和是强制性的。我曾经遇到一个项目,显示器厂商的EDID校验和算错了,结果显卡死活不认这个显示器。排查了整整两天,最后用I2C抓包工具一看,校验和不对。所以,如果你自己写EDID,一定要算对校验和。

小技巧:EDID校验和的计算方法很简单——把前127个字节加起来,取低8位,然后用256减去这个值,结果就是第128字节的值。公式:checksum = (256 - (sum_of_bytes_0_to_126 % 256)) % 256

4.3 EDID扩展块与HDMI VSDB

标准EDID只能描述基本的显示能力。但HDMI需要传递更多信息,比如是否支持深色、是否支持音频回传通道(ARC)等。这些信息放在哪里呢?

答案就是——EDID扩展块。其中最重要的就是HDMI VSDB(Vendor Specific Data Block)。

VSDB的结构如下:

  • IEEE注册标识符:HDMI LLC的注册ID是0x000C03
  • 物理地址:用于CEC总线寻址
  • 支持能力标志:深色支持、TMDS时钟频率、音频格式等
  • 最大TMDS时钟:以MHz为单位,比如340表示支持340MHz
  • 延迟信息:视频和音频的延迟数据

说白了,VSDB就是HDMI的“身份证”。没有这个块,源端就不知道你是个HDMI设备,只能把你当普通DVI显示器用。

4.4 SCDC:HDMI 2.0的新特性

到了HDMI 2.0,事情变得更有意思了。因为2.0的带宽高达18Gbps,传统的DDC通道已经不够用了。于是,HDMI论坛引入了SCDC(Status and Control Data Channel,状态与数据通道)。

SCDC是什么?我打个比方:DDC是单向的——源端读,显示器答。而SCDC是双向的,源端和显示器可以互相读写状态和控制信息。

SCDC的寄存器映射在I2C地址0xA8(写)和0xA9(读)上。关键寄存器包括:

寄存器地址 名称 功能
0x10 SCDC Capability 标识显示器支持的SCDC功能
0x11 Source Version 源端HDMI版本号
0x12 Sink Version 显示器HDMI版本号
0x20 Update Flags 状态更新标志位
0x30 TMDS Configuration TMDS时钟配置
0x31 Scrambler Status 加扰状态
0x40-0x45 Error Counters 错误计数

SCDC最核心的功能有三个:

  1. TMDS时钟比率配置:HDMI 2.0支持两种TMDS时钟模式——正常模式和1/40比率模式。通过SCDC寄存器0x30,源端可以告诉显示器使用哪种模式。
  2. 加扰控制:为了降低EMI,HDMI 2.0引入了数据加扰。SCDC寄存器0x31用于控制加扰的开启和关闭。
  3. 错误检测与报告:显示器可以通过SCDC的错误计数器,告诉源端接收到了多少错误数据。这对于调试非常有用。

避坑指南:我曾经在一个4K@60Hz的项目中,显示器始终无法锁定信号。排查了三天,最后发现是SCDC的TMDS配置寄存器没有正确写入。源端默认使用正常模式,但显示器只支持1/40比率模式。所以,HDMI 2.0的源端一定要在初始化时正确配置SCDC,否则高分辨率下很容易出问题。

4.5 DDC通道的电气特性

最后,聊点硬件工程师最关心的——电气特性。

DDC通道的I2C总线需要上拉电阻。标准规定:

  • 上拉电阻值:1.5kΩ到2.2kΩ(5V供电时)
  • 总线电容:不超过400pF
  • 上升时间:不超过300ns

我个人的习惯是,在源端使用2.2kΩ上拉电阻,在显示器端使用1.5kΩ上拉电阻。这样即使线缆较长,信号质量也有保障。

另外,DDC通道的ESD保护非常重要。因为HDMI接口经常被插拔,静电很容易通过DDC线进入芯片。我建议在SCL和SDA线上各加一个5V的TVS管,钳位电压要低于芯片的耐压值。

4.6 知识体系总览

为了让你更直观地理解DDC通道在整个HDMI系统中的位置和作用,我画了一张图:

DDC通道知识体系 HDMI源端 (显卡/播放器) HDMI显示器 (电视/投影仪) DDC通道(I2C) SCL(15脚) + SDA(16脚) 双向通信 EDID数据结构 • 128字节基础块 • 扩展块(VSDB等) • 校验和验证 • 时序描述符 SCDC(HDMI 2.0) • TMDS时钟配置 • 加扰控制 • 错误计数 • 版本协商 电气特性 • 上拉电阻:1.5kΩ ~ 2.2kΩ • 总线电容:≤400pF • ESD保护:TVS管(5V钳位) DDC通道是HDMI通信的“控制中枢”,负责源端与显示器之间的信息交换

这张图把DDC通道的核心要素都串起来了。左边是源端,右边是显示器,中间是DDC通道。上面是SCDC(HDMI 2.0新增),下面是EDID。最底下是电气特性——这些是硬件工程师必须关注的点。

好了,这一章的内容就到这里。DDC通道虽然看起来简单,但它是整个HDMI通信的基础。没有它,源端连显示器支持什么都不知道,更别提正确输出信号了。

核心要点回顾:

  • DDC通道是I2C总线,用于源端读取显示器的EDID
  • EDID包含128字节基础块和多个扩展块,HDMI VSDB是关键
  • SCDC是HDMI 2.0的新特性,支持双向状态和控制
  • SCDC的核心功能:TMDS配置、加扰控制、错误检测
  • 电气设计上注意上拉电阻和ESD保护

可可精品资料库