四、均衡训练核心概念:Tx EQ、Rx EQ、Preset、Coefficient

这一章,我们来聊聊均衡训练里的四个基本概念。说实话,很多工程师做了好几年PCIe,这四个概念还是混在一起。我刚开始接触Gen3的时候,也踩过不少坑。

你想想看,为什么信号要均衡?说白了,高频信号在PCB上跑,衰减太严重了。就像你在走廊里喊话,距离远了声音就模糊。均衡训练,就是让发送端和接收端一起配合,把这个模糊的信号重新变清晰。

4.1 Tx EQ:发送端的“信号整形师”

Tx EQ,全称是Transmitter Equalization。它工作在发送端,负责在信号出去之前,先做一次“预补偿”。

我的理解是这样的:高频分量衰减大,我就提前把高频分量放大一些。低频分量衰减小,我就维持原样或者稍微压缩。这样一来,信号经过信道衰减之后,到了接收端就能恢复成比较理想的形状。

Tx EQ包含三个核心的Tap系数:

  • Pre-cursor:当前比特的前一个比特对当前比特的影响。主要用来消除“前向串扰”。
  • Main-cursor:当前比特本身的增益。这是信号的主体部分。
  • Post-cursor:当前比特对后一个比特的影响。用来消除“后向串扰”或者说符号间干扰。

我个人习惯:在调试的时候,先固定Main-cursor的系数,再去微调Pre和Post。Main-cursor决定了信号的基本幅度,调得太大容易饱和,调得太小信号又太弱。我曾经在一个Gen4项目中,就是因为Main-cursor设得太高,导致接收端的DFE一直收敛不了。

4.2 Rx EQ:接收端的“信号康复师”

Rx EQ在接收端工作。它不负责发送,只负责“听”。但它不是被动地听,而是主动地处理收到的信号。

Rx EQ主要包括两个部分:

  1. CTLE (Continuous Time Linear Equalizer):连续时间线性均衡器。它是个模拟滤波器,可以提升高频分量,抑制低频噪声。说白了,就是让眼图张开一些。
  2. DFE (Decision Feedback Equalizer):判决反馈均衡器。它是个数字电路,根据前几个比特的判决结果,来修正当前比特的判决阈值。DFE可以消除长尾的符号间干扰。

为什么会需要DFE?因为CTLE只能做线性处理,而信号经过信道之后,有些失真不是线性的。DFE是非线性的,正好能补这个短板。

关键点:Tx EQ和Rx EQ必须协同工作。Tx EQ调得再好,如果Rx EQ的CTLE没有设对,或者DFE没有正确收敛,整个链路还是不行。反过来,如果Tx EQ完全不调,光靠Rx EQ的CTLE和DFE,也救不回来。

4.3 Preset:工程师的“快捷模板”

Preset,就是预定义好的Tx EQ系数组合。PCIe协议定义了多个Preset,每个Preset对应一组固定的Pre-cursor、Main-cursor和Post-cursor值。

为什么要搞Preset?你想想看,如果每次训练都从零开始逐个微调系数,那太慢了。Preset相当于给了你几个“起步模板”,训练可以先从这个模板开始,快速找到最佳点。

Preset编号 Pre-cursor Main-cursor Post-cursor 典型应用场景
P0 0.0 1.0 0.0 最短通道,几乎不需要预加重
P1 -0.1 0.9 0.0 短通道,轻微补偿
P2 -0.1 0.8 0.1 中等长度通道
P3 -0.1 0.7 0.2 长通道,需要较强补偿
P4 0.0 0.7 0.3 极长通道,重点消除后向干扰

我曾经踩过的坑:有一次调试Gen4链路,芯片明明支持P3,但死活训练不过。后来发现是PCB走线的阻抗不连续,导致信号反射严重。Preset不是万能的,它只是帮你从一个合理起点开始搜索。如果物理层的质量太差,靠Preset是救不回来的。

4.4 Coefficient:精细调节的“旋钮”

Coefficient,就是系数。它比Preset的粒度更细。

在均衡训练过程中,双方会先交换支持的Preset列表。选一个大家都支持的Preset作为起点。然后,再在Preset的基础上,对Pre-cursor、Main-cursor和Post-cursor做微调。这个微调的值,就是Coefficient。

每个Coefficient都有一个最小步长,通常是0.01或0.005。调一次,就改变一档。比如Main-cursor从0.8调到0.81,Pre-cursor从-0.1调到-0.09。

我建议你在调试的时候,不要一次性调太多。每次只调一个方向,观察接收端的误码率或者眼图变化。我曾经有一次性把三个Coefficient全改了,结果链路直接断开,连恢复都花了好长时间。

系数调整的通用原则是这样的:

  • 先调Main-cursor,找到信号幅度的基本点。
  • 再调Post-cursor,消除后向干扰。
  • 最后调Pre-cursor,处理前向干扰。
  • 每调一步,都要等接收端确认(通过训练序列里的反馈信息)。

4.5 四个概念的关系

这四个概念,其实是一个层层递进的关系:

  • 按位置分:Tx EQ在发送端,Rx EQ在接收端。
  • 按粒度分:Preset是粗调,Coefficient是细调。
  • 按过程分:训练一开始,先交换Preset。达成一致后,再在Preset的基础上,用Coefficient做精细调节。

一句话总结:Tx EQ负责“发”,Rx EQ负责“收”。Preset给你一个“起步模板”,Coefficient让你“微调细节”。四个概念缺一不可,任何一个出了问题,均衡训练都过不去。

下面这张图,是我自己画的一个关系图。你看懂它,这四个概念就彻底分清楚了。

均衡训练核心概念关系图 发送端(Tx) 接收端(Rx) Tx EQ 发送端均衡器 Preset 粗调起点模板 Coefficient 细调系数(Pre/Main/Post) Rx EQ 接收端均衡器 CTLE DFE 信号 训练序列:先通过Preset达成协议,再用Coefficient逐级微调,最终由Tx EQ和Rx EQ协同完成均衡

4.6 实战中需要注意的几点

四个概念讲完了,但我觉得还得补充几句实战经验:

  • Preset不是固定的:同一个通道,不同的温度、电压下,最佳Preset可能不一样。不要迷信某个Preset。
  • Coefficient的反馈有延时:你调了Tx EQ的系数,接收端要经过几个时钟周期才能反馈结果。调完不要急着看效果,等一等。
  • Rx EQ的训练:CTLE的增益值通常是硬件自动调节的,但DFE的收敛需要时间。如果链路很短,有时候DFE还没来得及收敛,训练就结束了。这会留下隐患。
  • 先看眼图:我每次调均衡,第一件事就是抓眼图。眼图张开的程度,直接告诉你有没有调对。如果你没有眼图可看,那就看误码率。两者都不看,靠猜的话……嗯,我劝你别这么干。

一个小技巧:在Gen3或者Gen4的调试阶段,我习惯先把所有可调系数都暴露出来,然后在调试软件里做一个“扫描”。让软件自动遍历不同的Preset和Coefficient组合,然后挑出误码率最低的那组。这比自己手动一个一个试,快得多。

好了,四个核心概念就讲到这里。下回当你再看到Tx EQ、Rx EQ、Preset、Coefficient这些词的时候,脑子里应该能浮现出这张关系图。记住,它们是一套组合拳,缺一不可。