3. 链路拓扑结构:Source、Sink、Branch Device、Daisy Chain 与 Multi-Stream
DisplayPort 的链路拓扑远比传统的单点视频接口复杂。它支持从单一源设备(Source)到多个显示设备(Sink)的灵活连接,中间可以插入分支设备(Branch Device)进行信号路由与转换。理解这些拓扑角色是配置链路参数和调试 CRC 校验的基础。
3.1 核心角色定义
在一条 DisplayPort 链路中,每个物理设备都承担着特定的逻辑角色。下表总结了四种基本角色的功能与典型实例:
| 角色 | 功能描述 | 典型设备 | 链路方向 |
|---|---|---|---|
| Source | 链路的发起端,生成视频/音频数据流,并负责训练链路(Link Training) | 独立显卡、笔记本、手机 SoC | 发送 Main Link 与 AUX 命令 |
| Sink | 链路的终结端,接收并消费数据流,通常为显示面板 | 显示器、投影仪、VR 头显 | 接收数据,响应 AUX 查询 |
| Branch Device | 位于 Source 与 Sink 之间,对数据流进行转发、转换或复制 | Dock、Repeater、协议转换器 | 双向转发 AUX/Main Link |
| Downstream | Branch Device 的下级端口,连接 Sink 或下一级 Branch | Dock 的输出口、Hub 的下行口 | 向下游转发数据 |
3.2 基本拓扑:Source → Sink
这是最简单的点对点拓扑,也是 DisplayPort 链路训练和 CRC 校验的基础模型。Source 通过 Main Link(4 条 Lane)发送数据,Sink 通过 AUX CH 返回链路状态与 CRC 结果。
3.3 分支设备(Branch Device)与菊花链(Daisy Chain)
当需要连接多个显示器时,DisplayPort 引入了两种扩展拓扑:Branch Device 和 Daisy Chain。两者在物理连接和逻辑处理上有本质区别。
3.3.1 Branch Device 拓扑
Branch Device 是一个主动设备,它接收上游的 DisplayPort 流,然后将其复制或转换为多个下游流。典型的 Branch Device 包括 Dock(扩展坞) 和 MST Hub(多流传输集线器)。Branch Device 内部包含独立的逻辑单元,可以重新训练每条下游链路。
3.3.2 Daisy Chain(菊花链)拓扑
Daisy Chain 利用 DisplayPort 的 Multi-Stream Transport (MST) 特性,允许显示器自身具备转发能力。每个显示器既是 Sink(消费本机画面),又是 Branch Device(将流转发给下一个显示器)。这种拓扑要求显示器硬件支持 MST 功能。
| 对比维度 | Branch Device 拓扑 | Daisy Chain 拓扑 |
|---|---|---|
| 中间设备 | 专用 Dock / Hub | 显示器自身(需支持 MST) |
| 链路数量 | 1 条上游 + N 条下游 | 1 条上游 + 1 条下游(链式) |
| CRC 校验点 | Source→Branch, Branch→Sink 分段校验 | 每段链路独立校验,末端 Sink 汇总 |
| 典型应用 | 笔记本扩展多屏 | 会议室多屏拼接 |
| 带宽限制 | 上游带宽决定总吞吐 | 每段链路带宽独立,但受限于首段 |
3.4 Multi-Stream Transport(MST)原理
MST 是 Daisy Chain 和 Branch Device 能够工作的核心技术。它将一条物理链路(Main Link)的带宽划分为多个 虚拟通道(Virtual Channel),每个通道承载一个独立的视频流。Source 通过 AUX 命令配置 MST 拓扑,每个 Sink 被分配一个唯一的 MST 地址。
MST 地址分配示例
在 Daisy Chain 中,Source 通过 ENUM_PATH_RESOURCES 和 ALLOCATE_STREAM_BANDWIDTH 等 AUX 事务来管理流。每个下游设备的地址格式为:
MST 地址格式:[Source GUID] → [Branch 1 Port] → [Branch 2 Port] → ... → [Sink Port]
示例:0x001A.2F → Port 1 → Port 2 → Port 0 (末端 Sink)
3.5 拓扑对 CRC 校验的影响
不同的拓扑结构决定了 CRC 校验的实施方式。下表总结了三种常见拓扑下的 CRC 校验策略:
| 拓扑类型 | CRC 校验范围 | 校验主体 | 常见错误场景 |
|---|---|---|---|
| 点对点 (Source→Sink) | 整条链路 | Source 发送,Sink 回传 | 线缆过长导致信号衰减 |
| Branch Device | 分段:Source→Branch, Branch→Sink | Branch 设备负责转发并重新计算 | Branch 设备内部时钟抖动 |
| Daisy Chain (MST) | 每段链路独立 | 每个中间显示器既是校验点又是转发点 | 中间显示器 MST 转发逻辑错误 |
3.6 拓扑发现与链路训练流程
Source 在上电后通过 AUX 通道执行拓扑发现,流程如下:
- 读取 DPCD 能力寄存器:确认 Sink 或 Branch Device 支持的最高速率与 Lane 数。
- 执行 Link Training:通过 CR(Clock Recovery)和 EQ(Equalization)阶段锁定链路。
- MST 拓扑枚举(仅 MST 模式):通过 ENUM_PATH_RESOURCES 发现下游设备。
- 分配流带宽:根据每个 Sink 的分辨率与刷新率,分配虚拟通道带宽。
- 启动 CRC 校验:Source 开始发送数据,Sink 返回每帧的 CRC 值。
3.7 拓扑相关的 DPCD 寄存器
调试拓扑问题时,以下 DPCD 寄存器是关键入口:
| 地址 | 名称 | 作用 |
|---|---|---|
| 0x00000 | DPCD_REV | 读取 DPCD 版本,判断是否支持 MST |
| 0x00001 | MAX_LINK_RATE | 读取设备支持的最大链路速率 |
| 0x00005 | MSTM_CAP | 读取 MST 能力(bit 0 表示是否支持 MST) |
| 0x00100~0x001FF | MST 地址空间 | 枚举下游设备拓扑结构 |
| 0x00200~0x00203 | CRC 计数器 | 读取 Sink 端 CRC 错误计数 |