eDP 链路层基本概念:主链路、辅助通道与热插拔检测
链路层的东西,说白了就是信号怎么在芯片之间跑通。eDP 接口有三条核心的物理通路:一条跑高速数据,一条跑管理命令,还有一条用来感知连接状态。这三条路各司其职,缺一不可。
我刚开始接触 eDP 时,总觉得链路层就是打个握手协议,后来被时序问题折磨了几次才发现——这三条通路之间的配合才是整个链路训练的命门。今天就带你把它拆开看透。
主链路(Main Link)结构
主链路是真正干活的那条路。芯片把像素数据、色彩信息、甚至音频包一股脑塞进去,高速送到显示端。
它的核心结构是 Lane(通道)。eDP 支持 1、2、4 通道三种配置。每个 Lane 都是一对差分信号(HBR 或 RBR 速率),独立传输数据。我做过一个 4K 60Hz 的项目,不得不用 4 Lane + HBR2 才撑住带宽。如果你只开 2 Lane,画面就会闪得你眼睛疼。
| 配置 | Lane 数量 | 典型用途 |
|---|---|---|
| 1 Lane | 1 对差分信号 | 低分辨率、低刷新率(如 1080p 30Hz) |
| 2 Lane | 2 对差分信号 | 1080p 60Hz 或 2K 30Hz |
| 4 Lane | 4 对差分信号 | 4K 60Hz 及以上,或 HDR |
主链路的数据不是连续的。它会插入 空白时间(Blank),用于同步或传输辅助数据。你在做时序约束时,一定要知道 Blank 区域的存在——很多时序违规都是在这段“没事干”的时间里冒出来的。
另外,每个 Lane 有独立的 预加重(Pre-emphasis) 和 摆幅(Swing) 配置。我之前调试一块长线驱动的触摸屏,3 条 Lane 正常,唯独第 2 条 Lane 老是丢包。查了半天,居然是那根线的预加重没配够。这种问题在链路训练阶段很难抓,因为它不会报错,只会让你画面偶尔闪一下。
辅助通道(AUX)功能
辅助通道简称 AUX CH,是一条双向低速差分总线。它的速率只有 1 Mbps。为什么这么慢?因为它的职责不是搬数据,而是做管理。
AUX 主要做这三件事:
- 链路训练(Link Training):源端和显示端会通过 AUX 交换训练状态、调整 Lane 数、调预加重、调摆幅。
- EDID 读取:显示端里存着 EDID 表,告诉源端“我能支持什么分辨率、什么色深”。源端就是靠 AUX 把这个表读回来的。
- DPCD 寄存器访问:DPCD 是一块寄存器空间,像个控制面板。我能读它也能写它。
AUX 的事务模型很简单——Request + Response。源端发一个请求,显示端回应一个 ACK 或 NACK。为什么很多人调试链路训练时总卡在第一步?就是因为 AUX 没通。我记得有一次,板子回来后 AUX 就是没反应,查了半天发现是 AUX 信号线上的电容没选对,导致信号畸变。
热插拔检测(HPD)机制
HPD 是一条单线信号。它不像 AUX 那样传数据,它只告诉源端一件事——显示器是不是还插着。
HPD 的物理层很简单:当显示器插好并准备好工作时,它会拉高 HPD 电平。如果拔掉了,HPD 就会拉低。源端检测到下降沿后,就知道链路断了,然后停止发送数据。
但这里有个坑——HPD 的时序要求很苛刻。
| 参数 | 最小值 | 典型值 | 说明 |
|---|---|---|---|
| HPD 保持时间 | 2 ms | — | 拉高后至少维持 2ms 才算有效连接 |
| HPD 去抖时间 | — | 100 μs | 硬件去抖,防止抖动误判 |
| HPD 中断脉冲 | 500 μs | 1 ms | 用于触发链路重训练 |
曾经有一次,我做的设备在客户现场间歇性黑屏。查了两天,发现是 HPD 去抖时间设得太短了——才 50 μs。插拔瞬间有个毛刺,被当成有效插拔信号,结果链路一会连一会断。把去抖时间改到 150 μs 后,问题就消失了。这种时序参数,你设计时必须留出余量。
另外,HPD 还有一个特殊功能——发送中断脉冲。当显示器发现分辨率变了或内容加密了,它会通过 HPD 主动拉低再拉高,通知源端重新训练。这个脉冲长度必须在 500 μs 到 1 ms 之间,太短了源端抓不到,太长了会误判为拔线。
三者之间的交互关系
主链路、AUX、HPD 不是独立工作的。实际上,整个链路训练就是这三条通路协同的过程。下面这张图展示了它们的交互关系:
你看,源端先读 HPD 确认连接,再通过 AUX 读 EDID,最后通过 AUX 完成链路训练,调好主链路参数。这一串流程只要有一个环节出问题,画面就出不来。
而且三者之间还有时序耦合。比如 HPD 拉高后,源端必须在 100ms 内启动 AUX 事务。如果慢了,显示端的 AUX 缓冲区可能会超时关闭,导致训练失败。
1. 主链路负责像素数据,Lane 数和速率决定了你能跑多高的分辨率。
2. AUX 通道负责链路训练、EDID 读取和 DPCD 访问,速率虽慢但很关键。
3. HPD 检测连接状态,去抖时间和中断脉冲长度必须按要求设计。
4. 三条通路必须协调工作,任何一条出问题都会导致链路训练失败。
我自己做链路训练时,最怕的就是 HPD 抖动和 AUX 超时。这两个问题往往不会直接报错,只会在高负载或长线缆时暴露。所以现在每做一个项目,我都会在板子上留出 AUX 和 HPD 的测试点,方便示波器抓波形。算是个笨办法,但真的好用。