3、信号完整性基础:反射、串扰、地弹、时序余量、眼图测试入门

信号完整性,简称 SI。说白了,就是保证信号从芯片 A 的管脚,跑到芯片 B 的管脚时,还是那个信号,没变形、没迟到、没串到隔壁去。

我刚入行那会儿,觉得数字电路嘛,0 和 1 而已,能有多复杂?直到第一次调一块 100MHz 的板子,示波器一夹上去,波形抖得像心电图。嗯,从那以后,我再也不敢小看 SI 了。

这一章,我们把 SI 里最核心的几个概念过一遍。反射、串扰、地弹、时序余量、眼图。每个都是实战中绕不开的坑。

3.1 反射——信号的回声

反射是什么?信号在传输线上跑,遇到阻抗突变,一部分能量弹回来。就像你对着山谷喊话,撞到山壁弹回回声。

为什么会反射?因为阻抗不连续。驱动端输出阻抗、走线特性阻抗、接收端输入阻抗,这三者不一致,反射就来了。

反射系数公式:

Γ = (ZL - Z0) / (ZL + Z0)

ZL 是负载阻抗,Z0 是传输线特性阻抗。Γ 越接近 0,反射越小。

我在项目中遇到过一块 DDR 板子,时钟信号过冲严重,直接烧了 DIMM 槽的端接电阻。查了半天,发现走线阻抗设计成 50Ω,但端接电阻焊了 33Ω。阻抗不匹配,反射叠加,电压直接飙到 3.6V。

我的习惯:做阻抗仿真时,至少留 10% 的裕量。PCB 加工有公差,标称 50Ω 的线,实际可能只有 47Ω 或 53Ω。

反射的三种常见场景

  • 过冲/下冲:反射波与入射波叠加,电压超过或低于目标电平。轻则误触发,重则烧器件。
  • 振铃:信号在驱动端和接收端之间来回反射,形成衰减振荡。常见于长走线且未端接的情况。
  • 台阶/回沟:反射波到达时间不同步,波形中间出现平台或凹陷。多发生在分支走线或桩线过长的拓扑中。

反射的解决手段

方法 原理 适用场景
串联端接 在驱动端串电阻,使输出阻抗匹配走线阻抗 点对点,驱动端靠近源端
并联端接 在接收端对地或对电源接电阻 点对点,接收端靠近负载
AC 端接 串联电容+电阻到地 需要降低直流功耗的场景
戴维南端接 上拉+下拉电阻分压 多负载总线,如 DDR 地址线

注意:端接不是万能的。端接电阻的位置、阻值、封装寄生参数都会影响效果。我曾经在一块板上用了 0402 封装的端接电阻,结果寄生电容太大,高频信号反而被衰减了。后来换成 0201,问题解决。

3.2 串扰——隔壁邻居的干扰

串扰,就是一根线上的信号,通过电磁场耦合到旁边的线上。你想想看,两条走线挨得那么近,就像两个人挤在电梯里,对方说什么你都能听见。

串扰分两种:

  • 容性串扰:通过寄生电容耦合。频率越高,容抗越低,串扰越严重。
  • 感性串扰:通过互感耦合。电流变化越快,感应电压越大。

我记得有一次调试一块 8 层板的 PCIe 接口,链路训练死活过不去。用示波器量差分对,发现一对线的共模噪声高达 200mV。查 layout,发现这对差分线旁边走了一根 3.3V 的电源线,间距只有 5mil。电源线上的纹波直接串到了差分对上。

串扰的量化指标

近端串扰(NEXT)和远端串扰(FEXT)。近端串扰是干扰源近端的耦合量,远端串扰是远端的耦合量。一般用 dB 表示,绝对值越大越好。

指标 典型要求 说明
NEXT < -40dB 近端串扰,影响发送端
FEXT < -35dB 远端串扰,影响接收端

降低串扰的实战技巧

  • 拉开间距:3W 原则——走线间距至少是线宽的 3 倍。高频信号建议 5W。
  • 加地线隔离:在敏感信号两侧加地线,地线上打满过孔。
  • 减少平行长度:两条线平行越长,耦合越严重。能垂直走就垂直走。
  • 层间隔离:高速信号层之间夹一层完整的地平面。

避坑指南:我曾经以为只要间距够大就没事,结果忽略了参考平面的回流路径。信号的回流电流如果被迫绕大圈,反而会通过共阻抗耦合到其他信号。所以,保证参考平面完整,比单纯拉大间距更重要。

3.3 地弹——地平面的波动

地弹,全称地电位反弹。当多个输出同时翻转时,瞬间大电流流过地回路,在地平面或地线上产生电压降。这个电压降会导致芯片内部的地电位和系统地的电位不一致。

为什么会这样?因为地回路有寄生电感。电流变化率 di/dt 越大,感应电压 L·di/dt 就越大。你想想看,32 位数据总线同时从 0 翻到 1,瞬间电流可能高达几安培,地弹电压轻松超过 1V。

我在项目中遇到过一块 FPGA 板子,DDR 接口读写数据偶尔出错。用示波器量 FPGA 的地管脚和板子地之间的电压,发现每次数据翻转时,地弹尖峰达到 800mV。这个电压直接叠加到了信号电平上,导致接收端误判。

地弹的典型表现

  • 输出波形出现毛刺或台阶:地弹导致输出驱动器的参考地偏移。
  • 误触发:接收端的地电位波动,导致输入阈值偏移。
  • EMI 超标:地弹产生的噪声通过地回路辐射出去。

地弹的抑制方法

方法 原理 效果
增加地管脚 降低地回路总电感 显著
使用去耦电容 提供局部电荷存储,降低 di/dt 中等
控制同时翻转数量 分时翻转,降低峰值电流 有效
优化封装 使用低电感封装(如 BGA) 显著

注意:去耦电容不是越多越好。电容的 ESL(等效串联电感)和 ESR(等效串联电阻)决定了它的高频性能。我习惯在每对电源/地管脚旁边放一个 100nF 的 MLCC,再在芯片周围均匀分布几个 10μF 的钽电容。高频去耦靠小电容,低频储能靠大电容。

3.4 时序余量——快一点还是慢一点

时序余量,就是信号实际到达时间与要求到达时间之间的差值。说白了,就是给信号留的缓冲时间。

数字电路能正常工作,靠的是所有信号在时钟边沿附近稳定下来。如果信号到得太早或太晚,建立时间或保持时间不满足,寄存器就会采到错误数据。

我调试过一块 SoC 板子,跑 Linux 时偶尔死机。用逻辑分析仪抓 DDR 总线,发现数据信号在时钟上升沿附近抖动,建立时间余量只有 50ps。手册要求至少 200ps。后来调整了 PCB 走线长度,把时钟走线比数据走线延长了 500mil,时序余量才拉回来。

时序余量的计算公式

  • 建立时间余量:Tsetup_margin = Tperiod - Tclk_skew - Tco - Tflight - Tsetup
  • 保持时间余量:Thold_margin = Tco + Tflight - Thold - Tclk_skew

其中 Tco 是时钟到输出延迟,Tflight 是走线传输延迟,Tclk_skew 是时钟偏斜。

我的经验:时序余量至少留 20% 的裕量。温度、电压、工艺角的变化都会影响延迟。常温下余量 100ps,到了高温 85°C 可能只剩 30ps。

时序问题的排查步骤

  1. 用示波器或逻辑分析仪抓取时钟和数据波形。
  2. 测量时钟边沿与数据跳变沿之间的时间差。
  3. 对比芯片手册的建立时间和保持时间要求。
  4. 如果余量不足,调整走线长度或驱动强度。
  5. 如果调整后仍不满足,检查电源噪声和串扰。

3.5 眼图测试——信号质量的体检报告

眼图,就是把数字信号的所有比特周期叠加在一起,显示在示波器上。因为形状像人的眼睛,所以叫眼图。

眼图能告诉你什么?信号质量好不好。眼睛睁得越大,信号质量越好。眼睛眯成一条缝,那就有问题了。

我每次做高速信号测试,第一件事就是看眼图。眼图不过关,后面的误码率测试基本不用做。

眼图的关键参数

参数 含义 典型要求
眼高 眼睛垂直方向的开度 > 200mV
眼宽 眼睛水平方向的开度 > 0.6 UI
抖动 信号边沿的时间偏差 < 0.2 UI
占空比失真 高电平与低电平宽度不一致 < 5%

避坑指南:眼图测试时,示波器的采样率要足够高。我见过有人用 2GSa/s 的示波器测 1Gbps 的信号,结果眼图全是锯齿。采样率至少是信号速率的 5 倍,最好 10 倍以上。

眼图测试的步骤

  1. 连接示波器到被测信号,使用差分探头或单端探头。
  2. 设置示波器的时钟恢复为 PLL 模式,锁定数据速率。
  3. 调整垂直刻度和水平时基,使眼图完整显示。
  4. 打开眼图测量功能,读取眼高、眼宽、抖动等参数。
  5. 对比规范要求,判断是否通过。

3.6 信号完整性知识体系

下面这张图,把本章的核心知识点串起来了。反射、串扰、地弹是三大信号完整性问题,时序余量是它们的综合体现,眼图则是最终的检验手段。

信号完整性知识体系 信号完整性 反射 串扰 地弹 过冲 / 振铃 / 台阶 阻抗不匹配导致 NEXT / FEXT 电磁场耦合导致 地电位波动 L·di/dt 导致 时序余量 眼图测试 可靠的数据传输 反射 + 串扰 + 地弹 共同影响时序和眼图

这张图你看懂了吗?反射、串扰、地弹是根因,它们导致信号变形和噪声,进而影响时序余量。眼图测试就是把这些影响全部暴露出来。所以,做硬件测试时,不要只看眼图好不好看,要追根溯源,找到是哪个问题导致的。

总结一下:信号完整性不是玄学,是物理。阻抗、耦合、电感、电容,这些基础参数决定了信号的质量。掌握反射、串扰、地弹的原理,学会用时序分析和眼图测试去验证,你就能在硬件测试中少走很多弯路。