3、电气特性入门:差分信号与CML、预加重与均衡技术、眼图与误码率

各位同学,欢迎来到第三讲。前两章我们把高速收发器的架构和协议栈聊了一遍,今天咱们要扎进物理层最核心的电气特性里。说白了,信号在PCB上跑,不是你想的那么简单——它有自己的脾气。

我刚开始做高速设计那会儿,总觉得只要把逻辑写对,板子画通,信号就能老老实实传过去。结果第一次调10Gbps的链路,眼图完全闭合,误码率惨不忍睹。后来才明白,不懂电气特性,你连问题出在哪都找不到。

这一章,咱们就聊聊差分信号、CML、预加重、均衡,还有眼图和误码率。这些都是高速收发器的基本功,也是你调试时最常打交道的概念。

3.1 差分信号与CML:为什么高速信号偏爱“成双成对”

先问个问题:为什么高速信号几乎都用差分对,而不是单端?

你想想看,单端信号靠一个信号线和地平面构成回路。地平面上的噪声、电源的波动,都会直接叠加到信号上。频率一高,这种干扰就特别明显。我见过一个项目,10Gbps的SFP+接口用单端走线,结果EMI测试直接超标20dB——根本没法过。

差分信号就不一样了。它用两根线,一根传正相,一根传反相。接收端看的是两者的差值。这样一来,共模噪声(比如地弹、电源纹波)在两根线上同时出现,一减就没了。这就是差分信号的抗干扰能力。

另外,差分对的电磁辐射也小。两根线的电流方向相反,产生的磁场相互抵消。这对EMI控制特别有利。

那CML(Current Mode Logic,电流模式逻辑)又是什么?

CML是高速收发器最常用的输出级结构。它的核心思想很简单:用恒流源驱动,通过切换电流路径来产生差分电压。典型CML输出级的摆幅只有400mV到800mV(峰峰值),但速度可以轻松跑到几十Gbps。

我个人的习惯是,在设计SerDes接口时,优先选CML标准的器件。为什么?因为它的功耗相对可控,而且驱动能力对PCB走线长度不敏感。你想想看,如果信号幅度随走线长度变化,那调试起来得多头疼。

关键参数速查:

  • CML输出摆幅:典型400-800mVpp
  • 共模电压:通常为VCC - 0.2V(比如3.3V供电时,共模约3.1V)
  • 输出阻抗:50Ω单端,100Ω差分
  • 上升时间:通常为UI(单位间隔)的20%-30%

嗯,这里要注意:CML的输出必须端接。如果不接终端电阻到VCC,信号会反射得一塌糊涂。我曾经见过一个新手,把CML输出直接接到FPGA的LVDS输入上,没做端接,结果眼图完全睁不开。

3.2 预加重与均衡技术:信号在PCB上“跑不动”怎么办

信号在PCB上传输,高频分量衰减得比低频快。这就是所谓的“趋肤效应”和“介质损耗”。结果就是,你发出去的方波,到了接收端变成了圆滚滚的波形——上升沿变缓,幅度变小。

怎么办?两个思路:

  • 发送端做预加重:在跳变沿处额外增加幅度,补偿高频衰减
  • 接收端做均衡:对接收到的信号进行滤波,恢复高频分量

预加重说白了就是“先打一针强心剂”。发送器检测到信号要跳变时,瞬间加大驱动电流,让上升沿更陡。跳变完成后,再回到正常幅度。这样,经过PCB衰减后,接收端看到的波形反而更接近理想方波。

均衡技术就更多样了。最常见的是CTLE(连续时间线性均衡)和DFE(判决反馈均衡)。

  • CTLE:一个模拟高通滤波器,放大高频分量。实现简单,功耗低,但对噪声也敏感。
  • DFE:利用前一个比特的信息来消除码间干扰。效果更好,但实现复杂,功耗也高。

我建议你在调试时,先调CTLE,再调DFE。CTLE能把眼图打开到一定程度,DFE再进一步优化。如果一开始就开DFE,你很难判断问题是出在信道还是均衡器本身。

调试小技巧:

我曾经调一个28Gbps的链路,眼图完全闭合。先调CTLE的增益,从0dB逐步加到6dB,眼图慢慢睁开。但到8dB时,噪声也被放大了,眼图反而变差。最后CTLE设在5dB,再配合2阶DFE,误码率从10^-4降到了10^-12以下。

3.3 眼图与误码率:信号质量的“体检报告”

眼图是什么?说白了,就是把接收到的比特波形叠加在一起。如果信号质量好,所有波形重叠得很好,中间会形成一个“眼睛”的形状。眼睛睁得越大,信号质量越好。

眼图能告诉你什么?

  • 眼高:信号的有效幅度。眼高太小,噪声裕量不足。
  • 眼宽:信号的有效时间窗口。眼宽太小,时钟抖动容易导致误码。
  • 抖动:过零点的不确定性。抖动越大,眼宽越小。
  • 上升/下降时间:反映信号的带宽是否足够。

误码率(BER)就更直接了——它告诉你每传输多少比特,会错一个。10^-12意味着每1万亿比特错1个。对于大多数通信系统,10^-12是可接受的门限。

但有个坑:误码率测试需要很长时间。比如你要验证10^-12的误码率,至少需要传输10^12个比特。在10Gbps速率下,这需要100秒。如果链路不稳定,你可能要跑几个小时才能得到可靠结果。

避坑指南:

我曾经在调试时,误码率测试跑了10分钟,显示0错误。我以为链路没问题,就交付了。结果客户在实际环境中,误码率高达10^-8。后来才发现,我的测试码型是PRBS7(伪随机二进制序列,周期127比特),而实际数据流中有更长的连续相同比特,导致CDR(时钟数据恢复)失锁。

所以,测试时一定要用PRBS31(周期约21亿比特)这样的长周期码型,才能暴露真实问题。

3.4 实战:如何快速评估一条高速链路

好了,理论讲完了,咱们说说实战。假设你拿到一块板子,要评估它的高速收发器链路质量,你会怎么做?

我的流程是这样的:

  1. 先看眼图:用示波器抓一下接收端的眼图。如果眼图完全闭合,别急着调均衡,先检查端接和走线阻抗。
  2. 测抖动:用示波器的抖动分析功能,看看总抖动(TJ)和随机抖动(RJ)。如果RJ太大,可能是电源噪声或参考时钟不干净。
  3. 跑误码率:用PRBS31码型,跑至少10^12个比特。如果误码率高于10^-12,开始调均衡参数。
  4. 调CTLE:逐步增加CTLE增益,观察眼图变化。找到眼高最大的点。
  5. 调DFE:如果CTLE调完后误码率还不够,打开DFE。从1阶开始,逐步增加阶数。
  6. 验证裕量:在最佳参数下,再跑一次误码率。同时改变温度和电压,看看链路是否稳定。

嗯,这里有个经验值:对于10Gbps以下的链路,如果眼高能达到300mV以上,眼宽达到0.5UI以上,误码率通常能到10^-12以下。对于25Gbps以上的链路,眼高200mV、眼宽0.3UI就算不错了。

本章要点回顾:

  • 差分信号抗共模噪声,CML是高速收发器的主流输出级
  • 预加重补偿发送端的高频衰减,均衡恢复接收端的高频分量
  • 眼图反映信号质量,误码率是最终评判标准
  • 调试顺序:先看眼图→测抖动→跑误码率→调CTLE→调DFE

下一章,咱们要聊PCS层的具体实现——8B/10B编码、扰码器、弹性缓冲。这些是FPGA逻辑里最烧脑的部分,但也是最有意思的。到时候见。