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。
时序问题的排查步骤
- 用示波器或逻辑分析仪抓取时钟和数据波形。
- 测量时钟边沿与数据跳变沿之间的时间差。
- 对比芯片手册的建立时间和保持时间要求。
- 如果余量不足,调整走线长度或驱动强度。
- 如果调整后仍不满足,检查电源噪声和串扰。
3.5 眼图测试——信号质量的体检报告
眼图,就是把数字信号的所有比特周期叠加在一起,显示在示波器上。因为形状像人的眼睛,所以叫眼图。
眼图能告诉你什么?信号质量好不好。眼睛睁得越大,信号质量越好。眼睛眯成一条缝,那就有问题了。
我每次做高速信号测试,第一件事就是看眼图。眼图不过关,后面的误码率测试基本不用做。
眼图的关键参数
| 参数 | 含义 | 典型要求 |
|---|---|---|
| 眼高 | 眼睛垂直方向的开度 | > 200mV |
| 眼宽 | 眼睛水平方向的开度 | > 0.6 UI |
| 抖动 | 信号边沿的时间偏差 | < 0.2 UI |
| 占空比失真 | 高电平与低电平宽度不一致 | < 5% |
避坑指南:眼图测试时,示波器的采样率要足够高。我见过有人用 2GSa/s 的示波器测 1Gbps 的信号,结果眼图全是锯齿。采样率至少是信号速率的 5 倍,最好 10 倍以上。
眼图测试的步骤
- 连接示波器到被测信号,使用差分探头或单端探头。
- 设置示波器的时钟恢复为 PLL 模式,锁定数据速率。
- 调整垂直刻度和水平时基,使眼图完整显示。
- 打开眼图测量功能,读取眼高、眼宽、抖动等参数。
- 对比规范要求,判断是否通过。
3.6 信号完整性知识体系
下面这张图,把本章的核心知识点串起来了。反射、串扰、地弹是三大信号完整性问题,时序余量是它们的综合体现,眼图则是最终的检验手段。
这张图你看懂了吗?反射、串扰、地弹是根因,它们导致信号变形和噪声,进而影响时序余量。眼图测试就是把这些影响全部暴露出来。所以,做硬件测试时,不要只看眼图好不好看,要追根溯源,找到是哪个问题导致的。
总结一下:信号完整性不是玄学,是物理。阻抗、耦合、电感、电容,这些基础参数决定了信号的质量。掌握反射、串扰、地弹的原理,学会用时序分析和眼图测试去验证,你就能在硬件测试中少走很多弯路。