3. eDP链路层:主链路、辅助通道、热插拔检测
说到eDP的链路层,很多人第一反应就是那几对高速差分线。其实链路层的核心就三个东西:主链路(Main Link)、辅助通道(AUX CH)、热插拔检测(HPD)。这三个玩意儿配合好了,屏幕才能正常点亮。
我刚开始做eDP调试时,总觉得主链路最重要,其他两个可有可无。后来被一块屏硬生生折腾了三天,才发现问题出在辅助通道的时序上。嗯,从那以后我再也不敢轻视这三个部分的协同了。
3.1 主链路:高速数据的“高速公路”
主链路说白了就是传送显示数据用的。它由一组或多组差分对(Lane)组成,每组差分对负责传输一路串行数据。
eDP的Lane数可以是1、2、4,具体用几条,由Source和Sink在链路训练时协商决定。
Lane的本质
每条Lane其实是一对差分信号(D+和D-)。数据在发送端被串行化,接收端再恢复出时钟和数据。eDP不需要单独的时钟通道,这就是它比LVDS先进的地方——少一对线,BOM成本也降下来了。
但是,麻烦也来了。多Lane之间需要做Lane-to-Lane对齐(Skew Calibration)。我记得有一次项目上,Source端4条Lane的PCB走线长度差了8mm,结果链路训练时怎么都过不了Skew Calibration。最后在Layout上做了等长处理,问题才解决。
链路训练中的主链路
链路训练时,Source会按固定的Pattern向Sink发送测试数据。Sink收到后要解析这些Pattern,判断链路质量。常见的Pattern有:
| Pattern编号 | 描述 | 用途 |
|---|---|---|
| Pattern 1 | D10.2 连续发送 | 符号锁定时使用 |
| Pattern 2 | PRBS7 伪随机序列 | 通道锁定和误码率检测 |
| Pattern 3 | 34.5MHz 时钟图案 | Symbol Lock稳定性检查 |
我建议大家在实际量产测试时,一定要测一下Pattern 2下的误码率。很多屏在Pattern 1下能锁定,但Pattern 2就跑不动了——这种屏量产之后大概率会出花屏问题。
3.2 辅助通道:双向沟通的“小秘书”
辅助通道(AUX CH)是一对差分信号,但速率比主链路慢得多——只有1MHz。它的角色很关键:链路训练的指挥官。
你想想看,主链路上跑的是高速数据,但双方怎么握手、怎么协商参数、怎么读EDID,都得靠AUX CH来传达。它就像一个项目经理,在两边来回跑着发指令。
AUX CH的三个角色
- 链路训练控制: Source通过AUX CH向Sink发送训练请求,Sink返回训练状态。
- EDID读取: Source通过AUX CH读Sink的EDID ROM,获取屏的物理参数。
- I2C旁路: AUX CH可以模拟I2C总线,用来读写Sink侧的寄存器。
AUX CH的通信细节
AUX CH用的是半双工通信,一次事务包含一个Request和一个Reply。Source发请求,Sink必须在100μs内回复。超时就算失败。
// AUX CH 写事务举例
// 写 DPCD 地址 0x00100 的寄存器
// Source 发送: 写请求 + 地址 + 数据
// Sink 回复: ACK + 状态
// 实际工程师要关心的两个关键参数:
// 1. AUX 最大时延:100μs
// 2. AUX 最大重试次数:通常 3 次
我曾经遇到过一块屏,在低温环境下AUX CH回包时间会飙到150μs。量产测试时室温下都正常,一到冬天就偶发黑屏。后来在测试用例里加了AUX超时容忍测试,才把这个坑填上。
AUX CH的常见故障代码
AUX CH通信失败时,Sink会返回一些状态码。量产测试时一定要把这些状态码打出来分析:
- Sink端AUX_CH电压太低或抖动太大
- Source端AUX驱动能力不足
- 线缆过长导致信号衰减
3.3 热插拔检测:屏的“门铃”
热插拔检测(HPD)是一根单独的信号线。它的作用很简单:通知Source有屏插上了或者拔掉了。
HPD信号在Sink端是输出,在Source端是输入。平时HPD是低电平,屏插上后Sink会把HPD拉高,告诉Source可以开始链路训练了。
HPD的时序要求
HPD不能乱拉。Sink必须先完成自身的初始化(比如电力稳定、EDID准备好),然后才能拉高HPD。这个过程:
- HPD拉高等待时间: 通常不超过20ms,从Sink上电开始算。
- HPD脉冲检测: 如果Sink在训练过程中需要重训,会拉低HPD 100μs以上再拉高,Source收到这个脉冲就重新训练。
我遇到过一种情况:Sink硬件设计有缺陷,HPD拉高之后会瞬间低一下再拉高。Source端有些芯片会把这种“毛刺”当成热插拔事件,导致链路反复训练。解决方案就是在Source端加一个去抖延时,低于2ms的HPD脉冲忽略掉。
HPD与链路训练的关系
HPD是链路训练的“起跑枪”。只有HPD拉高后,Source才能开始链路训练。如果HPD一直低,Source就认为没有屏,不会做任何动作。
3.4 链路层三者协作示意图
下面这张图展示了主链路、辅助通道、HPD在链路训练中的协作关系。说白了就是:HPD先敲门,AUX CH谈条件,主链路跑数据。
3.5 量产测试中的链路层检查清单
我把今年做过的项目中遇到的链路层问题总结成了一张表。量产测试时照着这个清单过一遍,基本能覆盖绝大多数坑:
| 检测项 | 检测方法 | 常见问题 |
|---|---|---|
| HPD电平 | 示波器测量HPD上升沿 | 毛刺、上升沿过慢 |
| HPD时序 | 从Sink上电到HPD拉高的时间 | 超时(>20ms) |
| AUX CH通信 | 发送已知寄存器读请求,验证回复 | NACK、超时、CRC错误 |
| AUX CH电压 | 差分幅度测量 | 电压不足(< 200mV) |
| 主链路Lane锁定 | 链路训练中Pattern 1/2/3全流程 | Symbol Lock失败、通道对齐失败 |
| 多Lane等长 | 测量各Lane到Sink的延迟差 | Skew Calibration失败 |
链路层是整个eDP系统的地基。地基没打牢,上层的数据传输必然是空中楼阁。每一条Lane、每一根AUX CH、每一次HPD脉冲,都可能成为量产的瓶颈。