3. HDMI 协议基础:TMDS 编码、视频数据包结构、EDID 与 DDC 通道、HDMI 1.4/2.0 特性对比

在龙芯平台调试 Gamma 曲线时,HDMI 传输链路的底层协议决定了色彩数据能否无损地从 GPU 到达显示器。本章聚焦 HDMI 协议的核心机制,包括 TMDS 编码、视频数据包结构、EDID/DDC 通道以及 HDMI 1.4 与 2.0 的关键差异,为后续 Gamma 校正的硬件适配打下基础。

3.1 TMDS 编码:最小化传输差分信号

TMDS(Transition Minimized Differential Signaling)是 HDMI 物理层的核心编码方式,负责将 8-bit 像素数据转换为 10-bit 串行信号。其设计目标有两个:减少电磁干扰(EMI) 和 保证时钟恢复的可靠性。

TMDS 编码流程(每通道):
1. 输入 8-bit 并行像素数据(R/G/B 或 Cb/Cr/Y)
2. 通过 XOR/XNOR 逻辑将数据转换为 9-bit,最小化跳变次数
3. 第 10 位用于 DC 平衡(控制信号极性,使长期平均电平接近 0V)
4. 串行化后以 10×像素时钟频率发送(如 148.5 MHz 像素时钟 → 1.485 Gbps 每通道)

HDMI 使用 3 个 TMDS 数据通道(Channel 0/1/2)和 1 个 TMDS 时钟通道。在 HDMI 1.4 中,最大 TMDS 时钟为 340 MHz,对应 10.2 Gbps 总带宽;HDMI 2.0 将时钟提升至 600 MHz,总带宽达到 18 Gbps。

TMDS 编码与串行化流程 8-bit 像素 R/G/B 或 Y/Cb/Cr XOR/XNOR 编码 最小化跳变 → 9-bit DC 平衡 第 10 位极性控制 10-bit 并行 准备串行化 TMDS 编码关键指标 跳变次数从平均 4.4 次/8-bit 降至 2.8 次/10-bit | DC 平衡保证信号完整性

3.2 视频数据包结构

HDMI 在 TMDS 通道上传输的数据分为 视频数据 和 数据包(Data Island) 两种模式。视频消隐期间(HBlank/VBlank),TMDS 通道切换为数据包模式,传输音频、辅助信息(如色彩元数据、Gamma 系数)。

数据包类型 用途 与 Gamma 调试的关联
AVI InfoFrame 视频格式、色彩空间、量化范围 标识 RGB 或 YCbCr,影响 Gamma 应用方式
Source Product Descriptor 源设备信息 用于 EDID 匹配
Audio Sample Packet 音频数据 无直接关联
Dynamic Range and Mastering InfoFrame HDR 元数据(亮度、色域、Gamma) 直接传递 Gamma 曲线参数(如 PQ、HLG)
Vendor-Specific InfoFrame 厂商自定义数据 可用于传递自定义 Gamma LUT
Gamma 调试提示: 在 HDMI 2.0 中,Dynamic Range and Mastering InfoFrame 可以携带 MaxFALL、MaxCLL 以及 Gamma 曲线类型(SDR Gamma、PQ、HLG)。龙芯平台在输出 HDR 信号时,必须正确填充此数据包,否则显示器可能错误映射亮度。
HDMI 视频数据包结构(一行扫描线) 一行水平扫描线(HActive + HBlank) 视频数据区(HActive) 消隐区(HBlank) 前肩 数据包 后肩 数据包(Data Island)传输时机 消隐期间 TMDS 通道切换为数据包模式,传输 AVI InfoFrame、音频、HDR 元数据等 Gamma 曲线参数通过 Dynamic Range and Mastering InfoFrame 在消隐期发送

3.3 EDID 与 DDC 通道

EDID(Extended Display Identification Data)是显示器内部的 128 字节(或扩展至 256/512 字节)数据结构,存储显示器的 物理参数、支持的分辨率/刷新率、色彩特性(包括 Gamma 曲线)。DDC(Display Data Channel)是 I²C 总线,用于源设备(龙芯主板)读取 EDID。

EDID 中与 Gamma 相关的关键字段:
  • Byte 23 (Display Gamma): 存储显示器的 Gamma 值(范围 1.00–3.54,步长 0.01),例如 0x78 表示 Gamma = 2.20
  • Byte 25 (Features): Bit 3 表示 sRGB 支持,Bit 2 表示 Gamma 是否可调
  • CEA-861 扩展块: 包含色彩元数据(Colorimetry Data Block),支持 BT.2020、DCI-P3 色域及对应的 Gamma 曲线
  • DisplayID 扩展: 更精细的 Gamma 分段描述(用于 HDR 显示器)
龙芯调试常见问题: 部分国产显示器 EDID 中的 Gamma 字段填写不准确(如标称 2.2 但实际响应为 2.0)。建议在调试 Gamma 曲线前,先通过 DDC 读取 EDID 原始数据,并与实测亮度响应对比,避免基于错误 EDID 做校正。
EDID 读取流程与 DDC 通道 龙芯主板 (源设备) DDC 通道 显示器 (EDID 存储) EDID 数据结构(128 字节基础块 + 扩展块) Byte 23: Gamma=2.20 | Byte 25: sRGB 支持 | CEA-861: BT.2020 Gamma | DisplayID: HDR 分段 Gamma DDC 使用 I²C 地址 0x50(主块)和 0x51(扩展块)

3.4 HDMI 1.4 与 2.0 特性对比

HDMI 2.0 是 1.4 的带宽升级版,对 Gamma 调试的影响主要体现在 色彩深度、HDR 支持 和 元数据传递 三个方面。

特性 HDMI 1.4 HDMI 2.0 Gamma 调试影响
最大 TMDS 时钟 340 MHz 600 MHz 2.0 支持更高分辨率/刷新率下的 Gamma 校正
总带宽 10.2 Gbps 18 Gbps 2.0 可传输 4K@60Hz 10-bit 色彩,Gamma 精度更高
色彩深度 8-bit / 10-bit(有限) 8-bit / 10-bit / 12-bit / 16-bit 2.0 支持 12-bit 深色,Gamma LUT 可达到 4096 级
HDR 元数据 不支持(仅 SDR) 支持 Static HDR(PQ/HLG) 2.0 可通过 InfoFrame 传递 HDR Gamma 曲线
色彩空间 BT.601 / BT.709 / sRGB BT.2020 / DCI-P3 / Adobe RGB 2.0 支持广色域 Gamma 校正
音频回传通道 ARC(支持) eARC(增强型) 无直接关联
龙芯平台适配建议: 若目标显示器支持 HDMI 2.0,优先使用 10-bit 或 12-bit 色彩深度进行 Gamma 校正,可减少量化误差。对于仅支持 HDMI 1.4 的显示器,需注意 8-bit 下的 色带(Banding) 问题,建议在 Gamma LUT 中引入抖动(Dithering)算法。
HDMI 1.4 与 2.0 带宽与色彩深度对比 HDMI 1.4 vs 2.0:带宽与色彩深度 HDMI 1.4 10.2 Gbps 8-bit / 10-bit HDMI 2.0 18 Gbps 8/10/12/16-bit Gamma 调试优势 2.0 支持 12-bit 4096 级 Gamma LUT 减少量化误差 HDR 元数据传递

3.5 本章小结

  • TMDS 编码 将 8-bit 像素转换为 10-bit 串行信号,通过最小化跳变和 DC 平衡保证信号完整性。
  • 视频数据包 在消隐期传输,AVI InfoFrame 和 Dynamic Range InfoFrame 是 Gamma 参数传递的关键载体。
  • EDID/DDC 提供显示器的 Gamma 标称值、色彩空间和 HDR 能力,是 Gamma 校正的输入依据。
  • HDMI 2.0 相比 1.4 在带宽、色彩深度和 HDR 元数据支持上显著提升,为高精度 Gamma 调试提供了硬件基础。