2. 信号完整性问题基础:衰减、串扰、抖动、眼图

做高速数字设计的兄弟都知道——信号完整性(SI)这四个字,几乎是每一个项目的噩梦。我记得刚入行那会儿,总觉得自己layout走线没啥问题,结果一上示波器,眼图直接闭了。嗯,今天就先把这个「噩梦」的根源讲清楚。

高速信号在PCB上跑,就跟人在泥地里跑步一样。你想想看,距离越远、频率越高、路况越差,信号失真就越严重。常见的信号完整性问题就四个:衰减、串扰、抖动、眼图闭合。下面我一个一个拆开讲。

一句话总结:衰减让信号变弱,串扰让信号变脏,抖动让信号对不齐,眼图是上面所有问题的综合体检报告。

2.1 衰减——信号越传越弱

衰减就是信号幅度随传输距离而下降。我做过一个项目,PCIe Gen3的链路走了将近20英寸的PCB走线,结果接收端的信号幅度只剩发送端的一半不到。为什么会这样?

衰减主要有两个来源:

  • 导体损耗(趋肤效应):高频电流只会沿着导体的表面流动。频率越高,有效截面积越小,电阻就越大。说白了就是高频信号「懒得往导体里面跑」,都挤在表面,电阻自然就大了。
  • 介质损耗(介电损耗):PCB板材不是完美的绝缘体。信号电场在被加热的过程中会消耗能量。损耗因子(Df)大的板材,比如FR4,高频衰减特别严重。

我在项目里看过一个典型的衰减曲线:

信号频率FR4损耗(dB/inch)MEGTRON6损耗(dB/inch)
1 GHz-0.3-0.1
5 GHz-1.0-0.4
10 GHz-1.8-0.7
25 GHz-4.2-1.6

注意看,25GHz时FR4的衰减达到每英寸-4.2dB。什么概念?假设走线10英寸,信号幅度就掉了42dB——这已经不是信号了,这是噪声。

我的习惯:做高速链路设计时,我一般先算一下整条链路的预算(Budget)。如果总衰减超过15-20dB,就必须用Repeater或者Retimer来补偿,不然接收端根本认不出来。

2.2 串扰——隔壁邻居在捣乱

串扰,说白了就是一根线上的信号,不想老实待在自己线里,非要爬到隔壁邻居的线上串门。我在调试一个SATA3.0项目时遇到过:明明两个通道的物理隔离已经做到6倍线宽了,结果串扰还是把眼图的高频抖动抬了20ps。

串扰分两种:

  • 容性串扰(近端串扰NEXT):信号跳变的时候,通过互电容把能量耦合到相邻线上。通常近端噪声和信号边沿同向。
  • 感性串扰(远端串扰FEXT):通过互感耦合。注意,远端噪声往往和信号边沿反向,但幅度会随走线长度积累。

怎么压串扰?我列几条实战经验:

  • 增加线间距——至少3倍线宽,最好是5倍以上。
  • 在重要信号旁边放地线(Guard trace),地线记得打过孔接地。
  • 减少平行走线长度——能不平行就不要平行。
  • 用差分信号——差分对天然抗共模串扰。
我曾经踩过的坑:有一次以为差分对之间的间距已经够大了(6mil线宽,12mil间距),结果仿真发现远端串扰比预期大了一倍。后来查出来是中间层的参考平面不连续,电流环路面积太大,互感爆了。所以,串扰不只是线间距的问题,参考平面和返回路径同样重要。

2.3 抖动——信号吃错了药,总跑偏

抖动就是信号边沿在时间上偏离理想位置。你想想看,一个信号本应该在t=0时刻跳变,结果它一会儿早到一会儿晚到,这叫抖动。

抖动的分类:

  • 随机抖动(RJ):热噪声、散粒噪声引起,符合高斯分布,累加不可控。我一般用RMS值估算。
  • 确定性抖动(DJ):又分很多种,常见的包括:
    • 数据相关抖动(DDJ):跟传输的码型有关,比如长串0或长串1后能量积累。
    • 占空比失真(DCD):上升沿和下降沿不对称。
    • 周期抖动(PJ):电源纹波或外部干扰。

抖动单位一般用ps(皮秒),TI(时间间隔误差)或者UI(单位间隔)。对于25Gbps的NRZ信号,1个UI = 40ps。如果抖动超过了0.3UI,接收端基本就废了。

实战判断:如果你在示波器上看到眼图左右「毛边」严重,多半是抖动;如果上下「毛边」严重,多半是噪声或幅度问题。

2.4 眼图——信号质量的照妖镜

眼图就是把很多个比特周期的波形叠加在一起显示的图。好的眼图,开口很大,像一只睁开的眼睛;差的眼图,眼睛闭着,就跟你熬夜加班一样。

眼图的关键参数:

参数含义典型合格值(PCIe Gen4)
眼高(Eye Height)垂直方向开口幅度≥ 80mV
眼宽(Eye Width)水平方向开口时间≥ 0.45 UI
抖动(Jitter)眼图交叉点的离散度≤ 0.2 UI
信噪比(SNR)信号幅度与噪声之比≥ 6

你看,眼图把衰减、串扰、抖动三大问题全部装在一个图里了。眼高不够是衰减的问题,眼宽不够是抖动的问题,眼皮变厚是串扰和噪声的锅。我每次给客户做演示,第一个测的就是眼图——它像一张体检报告,哪有问题一目了然。

我的调节方法:如果眼高不够,先看衰减,考虑加Termination或者用Repeater放大;如果眼宽不够,先查电源噪声和时钟抖动,考虑换Retimer重新生成为干净的信号。

好了,四个基础的信号完整性问题讲完了。你可能会问:这些跟Repeater和Retimer有什么关系?关系太大了。Repeater主要负责补偿衰减,它能把信号放大,但对串扰和抖动没办法;Retimer就不一样了,它能把信号完整恢复并重新生成,把衰减、串扰、抖动一起解决——当然代价也更高。

下面这张图把四个问题的关系和核心修复手段总结了一下,方便你记。

信号完整性问题基础与修复手段 衰减 幅度下降 串扰 耦合干扰 抖动 边沿偏移 眼图 综合成象 核心问题关系: 衰减 + 串扰 + 抖动 = 眼图闭合 → 需要 Repeater(补偿衰减)或 Retimer(全恢复) 诊断方法 • 用TDR看阻抗 & 衰减 • 用BERT测误码率 & 抖动 • 用示波器看眼图 & 串扰 修复手段 • Repeater:补偿衰减,恢复幅度 • Retimer:重新定时,消除抖动 & 串扰 • 优化PCB:加宽线距,加地孔 一句话总结:先看眼图 → 判断是衰减、串扰还是抖动 → 选择合适的Repeater或Retimer

嗯,到这一步你基本掌握了SI的四个核心问题。记住,做高速设计时,不要盲目堆器件。先定位问题是衰减还是抖动,再决定用Repeater还是Retimer,这才是工程师的思维方式。