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的均衡通常分为两级:
- CTLE(连续时间线性均衡):提升信号的高频增益,补偿信道的高频衰减。我调试时常用“扫频法”:从一个极低的CTLE增益开始,逐渐增加,同时看眼图打开度和抖动,找到最佳点。
- DFE(判决反馈均衡):针对前一比特对当前比特的残余干扰,通过反馈调整判决阈值。DFE能消除长尾反射和通路记忆效应。
均衡参数往往与PCB走线长度、板材损耗、连接器质量密切相关。同一个板卡换一个批次PCB,最优均衡值可能就差好几个档位。我的习惯是先跑一遍自适应均衡算法,记录收敛后的参数,然后用固定值替换,再微调。
均衡调试要点:
- CTLE增益过高 → 放大高频噪声,抖动增大
- CTLE增益过低 → 信号眼图闭合,误码率飙升
- DFE抽头过多 → 增加功耗,且可能过度补偿引入新噪声
- DFE抽头过少 → 无法消除长延时回波
我曾经在一块含有10微米长走线的背板上调试SGMII,CTLE增益开到最大值仍无法锁定。分析后发现问题出在走线拐角使用了直角,引入了较大的不连续阻抗。改了圆弧走线后,CTLE只需中等增益就能稳定工作。你看,物理层问题往往不止是芯片配置,板级设计同样关键。
最后补一句:差分信号、摆幅、预加重、均衡这四个特征不是孤立的。摆幅影响预加重的有效范围,均衡又反过来补偿预加重没处理掉的残余。我在实际项目中喜欢做一张“三参数眼图矩阵”——改变预加重、均衡和摆幅,记录每个组合下的眼高、眼宽和抖动,找到最佳工作点。工具好不好用是其次,思路清晰最重要。