3. SGMII物理层信号特征:差分信号、摆幅、预加重、均衡

做SGMII调试,第一件事就是把物理层的脾气摸透。说白了,时钟恢复能不能锁住,跟信号质量直接挂钩。我见过不少同事一上来就调PLL参数,折腾半天没效果,回头一量眼图,发现摆幅都不对——这就是基本功没打牢。这一章咱们把物理层的几个关键特征掰开聊。

3.1 差分信号:为什么非得用一对线?

SGMII用一对差分线传数据,而不是传统的单端信号。你想想看,高速信号最容易受共模噪声干扰——地弹、电源纹波、串扰,随便来一个就能让接收端误判。差分信号用两根线传互补的电平,接收端只看两根线的差值。这样一来,共模噪声在两根线上几乎一样,一相减就抵消了。

核心优势:

  • 抗共模干扰——不用再为GND噪声头疼
  • 低电磁辐射——两根线电流方向相反,磁场互相抵消
  • 高噪声容限——同样电压摆幅下,信噪比比单端高一倍

实战小技巧:

我曾经在调试一块FPGA的SGMII接口时,发现时钟恢复经常失锁。示波器一测,差分对正负端的走线长度差了将近3mm。别小看这几毫米,在1.25Gbps速率下,延时差会引入共模转差模的噪声,严重恶化眼图。后来我把两根线绕成等长,问题马上解决。记住,差分对一定要等长、紧耦合、远离其他高速信号。

差分信号的电压摆幅通常定义为差分峰值(Vpp-diff)。SGMII标准规定发送端差分摆幅典型值为400~600 mV,接收端要求能容忍200~1200 mV的范围。摆幅太低,接收器可能识别不到有效电平;摆幅太高,又容易产生过冲,加剧EMI问题。

参数差分信号单端信号(对比)
抗共模噪声强(共模抑制CMRR高)弱(依赖参考GND)
电磁辐射低(差模抵消)高(单端电流回路大)
参考电平不需要单独Vref需要Vref或GND做阈值
典型摆幅(SGMII)400~600 mV p-p差分——

3.2 摆幅:不是越大越好

有些工程师觉得信号幅度越大越可靠,其实不然。摆幅太大,会超过接收端输入级的线性范围,产生非线性失真。我碰到过一个案例,发送端输出的差分摆幅达到了900 mV(超过标准上限),结果接收端均衡器饱和,眼图反而关闭。后来我把发送端预加重幅度调低,摆幅降到550 mV,眼图一下就打开了。

SGMII物理层通常允许通过寄存器调节发送摆幅。我个人习惯是先按标准中间值(500 mV)设定,然后通过眼图测试微调。记住一个原则:够用就好,留点裕量给温度和工艺漂移。

注意:

不要盲目追求大摆幅来“压噪声”。过大的摆幅会带来更陡的上升沿,增加信号的高频分量,反而加剧反射和串扰。保持信号完整性才是根本。

3.3 预加重:给高频分量“补一补”

信号经过PCB走线、连接器、电缆,高频分量衰减比低频严重。发一个连续的“1”或“0”,经过信道损耗后,电压幅度会明显降低。但跳变沿的高频能量本来就不够,再衰减就更难被接收端正确采样了。

预加重的思路:在信号翻转的第一拍,额外增加一些幅度。说白了就是“把跳变沿推得更猛一点”,让接收端能检测到清晰的过渡。等信号稳定后,再把幅度降回正常值。

我常用的做法是配合眼图观察:

  • 如果眼图张开度不够,并且上升/下降沿很缓,增加预加重幅度。
  • 如果眼图出现振铃或过冲,说明预加重过强,需要降低。
// 以某款FPGA的SGMII TX预加重寄存器为例
// 寄存器地址 0x10: [3:0] 预加重幅度,[7:4] 预加重持续时间
// 我一般先设置幅度为3(对应200 mV boost),持续时间为1(一个UI)
// 然后根据眼图逐步调整
reg_write(0x10, 0x31);  // 幅度=3,持续时间=1UI

经验之谈:

预加重不是万能的。我记得有一次在长距离背板传输时,预加重加到了最大,眼图还是不好。后来发现是信道回损太大,预加重反而激发了反射。解决办法是在接收端改成更弱预加重+更强的均衡组合。

3.4 均衡:接收端的“眼睛矫正手术”

预加重是在发送端补偿,但信道损耗不可能完全预知,接收端还得自己想办法恢复信号。均衡就是接收端做的信号处理——通过线性滤波器(如CTLE连续时间线性均衡)或非线性判决反馈均衡(DFE)来抵消信道引起的码间干扰。

SGMII的均衡通常分为两级:

  1. CTLE(连续时间线性均衡):提升信号的高频增益,补偿信道的高频衰减。我调试时常用“扫频法”:从一个极低的CTLE增益开始,逐渐增加,同时看眼图打开度和抖动,找到最佳点。
  2. DFE(判决反馈均衡):针对前一比特对当前比特的残余干扰,通过反馈调整判决阈值。DFE能消除长尾反射和通路记忆效应。

均衡参数往往与PCB走线长度、板材损耗、连接器质量密切相关。同一个板卡换一个批次PCB,最优均衡值可能就差好几个档位。我的习惯是先跑一遍自适应均衡算法,记录收敛后的参数,然后用固定值替换,再微调。

均衡调试要点:

  • CTLE增益过高 → 放大高频噪声,抖动增大
  • CTLE增益过低 → 信号眼图闭合,误码率飙升
  • DFE抽头过多 → 增加功耗,且可能过度补偿引入新噪声
  • DFE抽头过少 → 无法消除长延时回波

我曾经在一块含有10微米长走线的背板上调试SGMII,CTLE增益开到最大值仍无法锁定。分析后发现问题出在走线拐角使用了直角,引入了较大的不连续阻抗。改了圆弧走线后,CTLE只需中等增益就能稳定工作。你看,物理层问题往往不止是芯片配置,板级设计同样关键。

SGMII物理层信号链路 —— 从发送到时钟恢复 发送数据 预加重 差分传输
(PCB/电缆) 均衡
(CTLE+DFE)
时钟恢复
CDR
关键说明: • 发送数据经过预加重补偿高频损耗,通过差分对传输至接收端。 • 接收端先由CTLE提升高频增益,再由DFE消除残余码间干扰。 • 均衡后的信号送入CDR恢复时钟和数据,摆幅、预加重、均衡三者需配合调整。

最后补一句:差分信号、摆幅、预加重、均衡这四个特征不是孤立的。摆幅影响预加重的有效范围,均衡又反过来补偿预加重没处理掉的残余。我在实际项目中喜欢做一张“三参数眼图矩阵”——改变预加重、均衡和摆幅,记录每个组合下的眼高、眼宽和抖动,找到最佳工作点。工具好不好用是其次,思路清晰最重要。