预加重与去加重:概念区别、实现方式、参数设置对眼图的影响
预加重和去加重,这两个词在 eDP 调试中经常被混在一起说,其实它们俩的思路完全相反。我刚开始接触时也傻傻分不清,直到有一次调一块 4K@60Hz 的面板,眼图怎么都睁不开,折腾了两天才发现是预加重和去加重的寄存器配反了。嗯,从那以后我再也不敢把这两个概念搞混了。
概念区别
说白了,信道对信号的高频分量衰减比对低频分量大得多,所以信号跑到接收端时,波形会变“钝”,眼图就合上了。预加重和去加重都是为了补偿这种频率选择性衰减,但手法不同:
- 预加重:在发送端,人为地把高频分量抬起来。就像一个演讲者,知道后排听不清,就特意提高嗓门喊高频词。
- 去加重:在发送端,保持高频不变,把低频分量压下去。相当于演讲者压低平时说话的音量,让关键的高频词相对突出。
我习惯用一个对比表格来记住它们:
| 对比维度 | 预加重(Pre-emphasis) | 去加重(De-emphasis) |
|---|---|---|
| 频域行为 | 提升高频幅度 | 抑制低频幅度 |
| 时域波形 | 跳变沿有过冲 | 跳变沿幅度正常,平顶部分压低 |
| 对功耗的影响 | 增加发送端功耗(信号整体摆幅变大) | 降低平均功耗(低频部分被压低) |
| 典型应用场景 | 长走线、高损耗信道 | 中等损耗信道、低功耗设计 |
| 寄存器设置方向 | 增加预加重幅度(如 +3dB、+6dB) | 增加去加重幅度(如 -3dB、-6dB) |
你想想看,预加重是“加法”,去加重是“减法”,但最终目的都是让接收端看到更均衡的频谱。实际芯片中两种方式都可能提供,有的甚至允许你混合使用。
实现方式
具体怎么做?我拆开来看。
预加重的实现:发送端检测到信号跳变(从 0→1 或 1→0)时,在跳变后的第一个 bit 内,把驱动电流/电压额外增加一个预设值,然后再回落到正常幅度。这样跳变瞬间的幅度更大,高频能量就多了。
去加重的实现:发送端检测到信号连续保持同一电平(比如连续多个 1),在第二个及之后同电平 bit 内,把驱动幅度降低一个预设值。相当于只对非跳变的部分做衰减。这样跳变沿本身没变,但平顶压低,相对突出了高频。
我记得有款主控的寄存器是这样配的(伪代码示意):
// 预加重:幅度 +6dB,持续 1 个 UI
WriteReg(TX_PRE_EMPHASIS, 0x06); // 6dB
WriteReg(TX_EMPHASIS_DURATION, 0x01); // 1 UI
// 去加重:幅度 -3.5dB
WriteReg(TX_DE_EMPHASIS, 0x35); // 3.5dB (通常用补码表示负值)
这里要特别小心:不同芯片厂商对寄存器值的定义完全不同。有的直接用 dB 值,有的用步进 index。我建议你翻 datasheet 时,重点看它的“Output Voltage Swing vs. Pre/De-emphasis”曲线图,先搞清楚 1 step 对应多少 dB。
参数设置对眼图的影响
调这些参数时,眼图的变化非常直观。我用一个 SVG 图把整个链路和关键影响画出来。
你看,这张图把路径画清楚了。原始信号经过预加重/去加重后,波形会出现过冲或下冲,这正是人为注入的高频能量。信道把高频吃掉一部分,到接收端眼图闭合时,如果预加重和去加重的参数恰好补偿了信道损耗,那 CTLE 和 DFE 就能轻松把眼图重新打开。
另外,预加重和去加重不是互相排斥的。有些主控允许同时打开,比如预加重 +3dB、去加重 -1.5dB,等效于把中高频区域整体抬高 1.5dB。但这样做会显著增加功耗,我一般只在 5Gbps 以上的速率才会考虑组合使用。
总结一下参数调节的规律
- 眼图太“平”(眼高不足)→ 增加预加重幅度。
- 眼图有“拖尾”(ISI 严重)→ 增加去加重幅度。
- 眼图抖动变大(预加重可能过冲引起的)→ 减小预加重幅度,或缩短持续时间。
- 信号幅度整体偏低(接收端信号幅度不达标)→ 不要过度使用去加重,考虑提升发送端整体 swing level。
这些规律我每次调试都会在笔记本上列一遍,避免凭感觉瞎调。说到底,eDP 均衡是系统工程,发端的预加重/去加重只是第一关,后面还有 CTLE、DFE 等着你。但只要把这第一关调顺了,后面真的会省很多事。