3. 信号完整性基础:反射、串扰、地弹、时序余量
信号完整性,简称 SI。说白了,就是保证信号从芯片 A 的管脚出发,到达芯片 B 的管脚时,波形没变形、电平没跳错、时序没跑偏。
我刚开始做硬件那几年,总觉得 SI 是射频工程师才该操心的。直到有一次,一块 8 层板的 DDR 项目,跑 200MHz 就随机死机。示波器一抓,波形上全是毛刺和台阶。嗯,从那以后,我再也不敢小看 SI 了。
这一章,我们就把 SI 里最容易导致故障的四个家伙拎出来:反射、串扰、地弹、时序余量。搞懂它们,你的故障定位能力能上一个台阶。
3.1 反射:信号在走线上“撞墙”
反射是怎么来的?
信号在传输线上跑,遇到阻抗突变,一部分能量就弹回来。弹回来的波和原来的波叠加,波形就变形了。
核心公式(记住这个):
反射系数 Γ = (Zload - Z0) / (Zload + Z0)
Z0 是传输线特征阻抗,Zload 是负载阻抗。Γ 越接近 0,反射越小。
我在项目中遇到过一块板子,时钟信号上叠加了明显的台阶。查了半天,发现是走线从表层换到内层时,过孔的阻抗没控制好,从 50Ω 跳到了 85Ω。反射系数算下来 0.26,信号质量能好才怪。
反射导致的典型故障:
- 过冲/下冲:信号超过接收端耐压,烧坏 IO 或触发 ESD 保护。
- 振铃:信号在高低电平之间来回震荡,导致逻辑误判。
- 台阶/回勾:上升沿出现平台,建立时间不够,采样出错。
我的排查习惯:
遇到反射问题,先看 TDR(时域反射计)曲线。没有 TDR 就用示波器看波形台阶的位置,反推阻抗突变点在哪。我曾经靠这个办法,在一条 15cm 的走线上找到了一个间距过小的过孔。
3.2 串扰:隔壁走线的“悄悄话”
串扰,就是一条走线上的信号,通过电磁场耦合到旁边的走线上。
你想想看,高速信号在走线上跑,周围会产生变化的电场和磁场。旁边的走线就像一根天线,把这些能量捡了过来。
串扰分两种:
- 容性串扰:通过寄生电容耦合,产生同向噪声。
- 感性串扰:通过互感耦合,产生反向噪声。
实际板子上,两种同时存在。远端串扰(FEXT)和近端串扰(NEXT)的幅度,取决于走线间距、耦合长度、介质高度。
我记得有一次调试一块视频采集卡,ADC 的数据线总是偶尔跳码。示波器触发一看,数据线跳变的时候,旁边的时钟线上会窜过来一个毛刺。这就是典型的串扰——数据线和时钟线平行走了 3cm,间距只有 5mil。
避坑指南:
我曾经以为只要走线不平行就没事。结果发现,在 BGA 扇出区域,走线在过孔层换层时,如果参考平面不连续,回流路径绕远,串扰反而更大。所以,3W 原则(间距是线宽的 3 倍)只是起点,不是终点。
3.3 地弹:参考平面的“晃动”
地弹,全称是“地电位反弹”。
当多个 IO 同时翻转时,瞬间电流很大。这个电流流过电源和地平面的寄生电感,就会在芯片内部的地和板级地之间产生一个电压差。
公式很简单:Vnoise = L * di/dt
L 是寄生电感,di/dt 是电流变化率。IO 越多、速度越快、封装电感越大,地弹就越严重。
地弹导致的故障很隐蔽:
- 同一个芯片的多个输出,同时从 0 变 1 时,其他本该保持 0 的输出被“弹”高了。
- 接收端看到的地电平在跳,导致输入信号误判。
- 严重时,芯片内部逻辑状态翻转,直接死机。
我处理过一个 FPGA 项目,32 位总线同时翻转时,板子就复位。查了电源纹波、时钟抖动都没问题。最后用近场探头扫芯片封装,发现地弹噪声幅度达到了 800mV。解决办法是增加去耦电容、优化电源平面、分时翻转。
我的判断方法:
用示波器探头接芯片的 GND 管脚和板级地,测到的噪声就是地弹。如果幅度超过 300mV,就要小心了。
3.4 时序余量:快一点慢一点都是问题
时序余量,就是信号实际到达时间和要求到达时间之间的富余量。
数字电路里,每个寄存器都有建立时间(tsu)和保持时间(th)要求。数据必须在时钟沿之前稳定,之后也要保持稳定。
时序故障分两类:
| 故障类型 | 原因 | 表现 |
|---|---|---|
| 建立时间违例 | 数据路径太长,时钟偏斜太大 | 频率升高时出错,降频正常 |
| 保持时间违例 | 数据路径太短,时钟偏斜反向 | 频率变化都可能出错,更隐蔽 |
建立时间违例,说白了就是数据跑得太慢。保持时间违例,是数据跑得太快,把上一拍的数据冲掉了。
我遇到过最头疼的一个案例:一块板子在常温下跑 1GHz 完全正常,温度降到 -20°C 就开始报错。查到最后,是 PCB 走线的温度系数导致时钟偏斜变了,保持时间余量变成了负值。
时序余量的工程经验:
我个人习惯,设计时至少留 20% 的时序余量。对于跨时钟域的信号,一定要做同步处理。不要相信仿真给出的“完美”结果——PCB 制造公差、温度变化、老化效应,都会吃掉你的余量。
3.5 知识体系:四者的关系
反射、串扰、地弹、时序余量,不是孤立存在的。它们经常互相影响:
- 反射导致波形畸变,会吃掉时序余量。
- 串扰引入的噪声,可能让接收端误判电平,等效于时序违例。
- 地弹同时影响多个信号,造成批量性的时序问题。
下面这张图,是我自己总结的 SI 故障定位框架,分享给你:
3.6 小结
这一章我们聊了四个核心概念:
- 反射:阻抗不连续导致波形变形,用 TDR 和阻抗控制解决。
- 串扰:相邻走线电磁耦合,靠间距和屏蔽来抑制。
- 地弹:寄生电感导致地电位波动,靠去耦和平面设计缓解。
- 时序余量:信号到达时间的富余量,是前面三个问题的最终体现。
记住一句话:信号完整性的本质,就是控制阻抗、管理噪声、留足余量。 下次遇到板子跑不稳,别急着换芯片,先拿示波器看看波形——很多时候,问题就出在这些基础问题上。