DisplayPort协议详解
1. DisplayPort概述
DisplayPort(简称DP)是由视频电子标准协会(VESA)制定的数字显示接口标准,主要用于连接电脑和显示器,也可用于连接电视、投影仪等设备。
1.1 DP版本演进
| 版本 | 最大带宽 | 最大分辨率@刷新率 | 主要特性 |
|---|---|---|---|
| DP 1.0 | 8.64 Gbps | 2560×1600@60Hz | 初始版本 |
| DP 1.2 | 17.28 Gbps | 3840×2160@60Hz | 多流传输(MST) |
| DP 1.3 | 25.92 Gbps | 5120×2880@60Hz | DSC压缩 |
| DP 1.4 | 32.4 Gbps | 7680×4320@60Hz | HDR、DP IN |
| DP 2.0 | 80 Gbps | 7680×4320@60Hz | 128b/132b编码 |
1.2 DP接口特性
- 主链路(Main Link): 1/2/4条Lane,支持1.62/2.7/5.4/8.1/10 Gbps速率
- AUX通道(AUX CH): 1 Mbps差分双向通信,用于配置和EDID读取
- 热插拔检测(HPD): Sink发出中断信号通知Source
2. DP协议分层
graph TB
subgraph 应用层
A[视频音频数据]
end
subgraph 传输层AS
B[微封包组装]
end
subgraph 数据链路层MPCP
C[多路复用]
D[8b/10b编码]
end
subgraph 物理层
E[串行器]
F[均衡器]
end
A --> B --> C --> D --> E --> F
2.1 物理层(PHY)
物理层负责高速串行数据的发送和接收,包括:
- 串行器/解串器: 并行/串行转换
- 发送端预加重(Pre-emphasis): 补偿信道损耗
- 接收端均衡(EQ): 恢复信号完整性
- 时钟恢复(CDR): 从数据流中提取时钟
2.2 数据链路层(MPCP)
MPCP(MAC/PHY Control Protocol)实现:
- 8b/10b编码: 直流平衡、确保跳变密度
- 通道分配: 多Lane时的数据分发
- 时钟同步: 嵌入时钟恢复
- BCH纠错: 检测和纠正传输错误
2.3 传输层(AS)
AS(Assembly Sub-layer)负责:
- 数据分帧: 定义SA、DA、SPD等字段
- 视频数据封装: CEA-861格式
- 音频数据封装: IEC 60958格式
2.4 应用层
- 视频格式: 支持CEA-861/VESA格式
- 色彩空间: RGB、YCbCr444/422/420
- 位深: 6/8/10/12/16 bit
- 音频: LPCM、Dolby、DTS等
3. Link Training过程
Link Training是DP Source和Sink建立高速链路的关键过程,通过AUX CH交换配置参数,确保信号可靠传输。
3.1 Training准备阶段
Source首先读取Sink的EDID获取支持能力:
DPCD Register 0x000: Max LINK_RATE
DPCD Register 0x001: Max LANE_COUNT
DPCD Register 0x002: Supported power levels
Source设置link rate和lane count后,进入Training状态:
// 设置Link配置
DPCD 0x100 = link_rate; // 0x06=1.62G, 0x0A=2.7G, 0x14=5.4G, 0x1E=8.1G
DPCD 0x101 = lane_count; // 1/2/4 lanes
DPCD 0x102 |= 0x01; // 设置Link Training开始
3.2 通道偏斜校正(Channel EQ)
训练信号Pattern为D10.2(高频时钟序列),用于:
- 信号完整性检测: 验证链路可传输高速数据
- 电压幅度测量: 确定最优驱动强度
- 通道偏斜检测: 测量各Lane延迟差异
3.3 CR阶段(Channel Equalization)
CR阶段调整均衡器参数:
| 参数 | 寄存器 | 说明 |
|---|---|---|
| Voltage Swing | DPCD 0x103-0x106 | 信号幅度(0-3级) |
| Pre-emphasis | DPCD 0x107-0x10A | 预加重电平(0-3级) |
均衡器设置组合:
// Swing/Pre-emphasis组合
{0, 0}, {0, 1}, {0, 2}, {0, 3},
{1, 0}, {1, 1}, {1, 2}, {2, 0},
{2, 1}, {3, 0}, {3, 1}, {3, 2}
3.4 EQ阶段(Emphasis)
EQ阶段使用PRBS7/CR-Pattern验证:
- 眼图质量: 判断信号眼图开度
- 误码率: BER < 10^-9
- FFE设置: 决定最终均衡参数
3.5 完整Link Training流程
sequenceDiagram
participant Source
participant Sink
participant AUX
Source->>Sink: 读取EDID/DPCD能力
Source->>Sink: 设置LANE_COUNT, LINK_RATE
Source->>Sink: 发送D10.2 Pattern
loop CR Phase
Source->>Sink: 调整Swing/Pre-emphasis
Sink-->>Source: 报告Lock状态
end
loop EQ Phase
Source->>Sink: 发送CR Pattern
Sink-->>Source: 报告EQ状态
end
Source->>Sink: 开始视频传输
关键寄存器状态检查:
// CR阶段状态
DPCD 0x202: LANE0_1_STATUS
// bit[1] = lane1_symbol_locked
// bit[0] = lane0_symbol_locked
// EQ阶段状态
DPCD 0x204: LANE0_1_2_3_5_EQUALIZER
// bit[3] = lane3_eq_done
// bit[2] = lane2_eq_done
// bit[1] = lane1_eq_done
// bit[0] = lane0_eq_done
4. AUX CH通信
AUX CH是DP的带外配置通道,支持:
- 地址空间: 16-bit地址,寻址能力寄存器、EDID、HPD
- 传输速率: 1 Mbps
- 协议格式: I2C-like,带握手和重试
// AUX CH读写示例
typedef enum {
AUX_CMD_WRITE = 0x8, // Native Write
AUX_CMD_READ = 0x9, // Native Read
AUX_CMD_I2C_WR = 0x0, // I2C Write
AUX_CMD_I2C_RD = 0x1, // I2C Read
} aux_cmd_t;
常用DPCD地址:
| 地址 | 功能 | 说明 |
|---|---|---|
| 0x000-0x00F | 能力寄存器 | 版本、速率、lane数 |
| 0x100-0x1FF | Link配置 | 训练参数 |
| 0x200-0x2FF | Link状态 | 训练结果 |
| 0x600-0x6FF | HDCP | 内容保护 |
5. RK3588 DP控制器
RK3588集成Synopsys DesignWare DP TX控制器:
- DP版本: DP 1.4a
- 最大带宽: 32.4 Gbps (4 Lane × 8.1 Gbps)
- 分辨率: 最高8K@60Hz (需DSC)
- 视频格式: RGB/YUV444/YUV422/YUV420
// RK3588 DP主要寄存器
struct rockchip_dp {
struct reg_base *regs; // 基址
struct clk *pclk; // APB时钟
struct clk *grf_clk; // GRF时钟
struct reset *rst; //复位
struct phy *phy; // SerDes PHY
enum dp_pixel_encoding encoding; // 像素编码格式
int lane_count; // Lane数量
int link_rate; // 链路速率
};
RK3588 DP软件架构:
graph LR
subgraph DRM Framework
DRM[DRM Driver]
end
subgraph Rockchip Driver
DP[DP Controller Driver]
PHY[DP PHY Driver]
end
subgraph Hardware
CTRL[DP Controller]
SERDES[SerDes PHY]
end
DRM --> DP --> PHY --> CTRL --> SERDES
感谢阅读!
