4. 信号完整性测试:反射、串扰、时序抖动、眼图分析及测试用例设计
信号完整性,圈里人常叫 SI。说白了,就是保证信号从芯片管脚飞出去,经过 PCB 走线,到达另一颗芯片时,还能被正确识别成 0 或 1。
我刚开始做硬件那几年,总觉得只要原理图连对了,板子就能跑。直到有一次调试一块高速背板,DDR 数据线眼图完全闭合,系统跑几分钟就死机。嗯,从那以后,我再也不敢轻视 SI 了。
这一章,我们聚焦四个核心问题:反射、串扰、时序抖动、眼图。每个问题我都会讲清楚原理、测试方法,以及怎么设计测试用例。
4.1 反射:阻抗不连续带来的“回音”
反射的本质,就是信号在传输路径上遇到了阻抗突变。好比声音在峡谷里遇到山壁,会反弹回来。反射回来的信号叠加在原信号上,就会造成过冲、下冲、振铃。
我在项目中遇到过最典型的反射案例,是一块 1Gbps LVDS 时钟板。时钟沿上有个明显的台阶,导致接收端误触发。查了半天,发现是走线从表层换到内层时,过孔的阻抗只有 70Ω,而走线是 100Ω 差分。这就是阻抗不连续。
4.1.1 反射的测试方法
- TDR(时域反射计): 最直接的工具。向走线发射一个快沿脉冲,观察反射波形的位置和幅度,就能定位阻抗突变点。
- VNA(矢量网络分析仪): 测 S11 参数,看回波损耗。S11 越小,反射越少。
- 示波器直接测量: 在接收端测波形,观察过冲百分比和振铃幅度。
| 反射指标 | 合格标准 | 严重告警 |
|---|---|---|
| 过冲幅度 | < 10% 信号摆幅 | > 25% |
| 振铃幅度 | < 5% 信号摆幅 | > 15% |
| 阻抗偏差 | ±10% 目标阻抗 | ±20% |
4.1.2 反射测试用例设计
- 最差拓扑测试: 选择走线最长、过孔最多、分支最多的那条信号。比如 DDR 地址线中的最长一根。
- 端接测试: 分别测试串联端接、并联端接、AC 端接三种方案下的反射波形。对比过冲和振铃。
- 负载变化测试: 在接收端焊上不同容值的负载电容(2pF、5pF、10pF),观察反射变化。我曾经发现某颗 FPGA 的输入电容比手册大了 3pF,导致整批板子眼图不合格。
4.2 串扰:隔壁走线的“悄悄话”
串扰,就是一条走线上的信号,通过电磁耦合,干扰了旁边的走线。你想想看,高速信号在 PCB 上跑,走线间距就那么几 mil,电磁场肯定会互相串门。
串扰分两种:近端串扰(NEXT)和远端串扰(FEXT)。近端串扰在驱动端测,远端串扰在接收端测。一般来说,远端串扰对时序的影响更大。
4.2.1 串扰的测试方法
- 主动线-受害线法: 在主动线上加一个快沿信号(比如 1V/ns 的上升沿),在受害线的两端用示波器测噪声幅度。
- BERT(误码仪)+ 示波器: 让主动线跑 PRBS 码型,受害线跑时钟或数据,观察受害线的抖动增加量。
4.2.2 串扰测试用例设计
- 最差间距测试: 选择 PCB 上间距最小的平行走线对。比如 BGA 扇出区的走线,间距可能只有 3mil。
- 最差码型测试: 主动线跑 1010 交替码(最高频率成分),受害线跑全 0 或全 1。这样串扰噪声最明显。
- 长度扫描测试: 改变平行走线的耦合长度(从 1 英寸到 6 英寸),记录串扰幅度。画出“串扰 vs 长度”曲线,找到饱和点。
4.3 时序抖动:信号边沿的“颤抖”
抖动,就是信号边沿在时间轴上的随机偏移。你想想看,理想时钟的上升沿应该精确地每隔 10ns 出现一次。但实际中,每个沿都会有点偏差,这就是抖动。
抖动分三类:随机抖动(RJ)、确定性抖动(DJ)、总抖动(TJ)。RJ 是热噪声等随机因素引起的,服从高斯分布。DJ 是串扰、电源噪声等确定性因素引起的,有固定的幅度和频率。
4.3.1 抖动的测试方法
- 示波器直测: 用高精度示波器(带宽至少是信号频率的 3 倍)采集大量边沿,用直方图统计 TIE(时间间隔误差)。
- 时钟恢复法: 对于数据信号,需要先做时钟恢复(CDR),再测数据边沿相对于恢复时钟的抖动。
- 频谱分析法: 用频谱仪看时钟信号的相位噪声,再换算成抖动。这个方法对低频抖动特别敏感。
| 抖动类型 | 来源 | 分布特征 | 测试关注点 |
|---|---|---|---|
| 随机抖动 (RJ) | 热噪声、散粒噪声 | 高斯分布 | RMS 值 |
| 确定性抖动 (DJ) | 串扰、电源噪声、ISI | 有界分布 | 峰峰值 |
| 总抖动 (TJ) | RJ + DJ | 混合分布 | BER=1e-12 时的值 |
4.3.2 时序抖动测试用例设计
- 码型依赖性测试: 分别用 PRBS7、PRBS15、PRBS31 码型驱动信号,测 TJ 和 DJ。码型越长,低频成分越多,抖动越大。
- 电源噪声注入测试: 在电源轨上叠加一个正弦波(频率从 1kHz 到 100MHz,幅度 50mVpp),观察抖动随电源噪声的变化。这个用例能帮你找到电源去耦的薄弱点。
- 温度扫描测试: 在 -40°C、25°C、85°C 三个温度点测抖动。RJ 随温度升高而增大,DJ 可能随温度变化而改变(比如串扰耦合系数会变)。
4.4 眼图分析:信号质量的“体检报告”
眼图,就是把很多个数据 bit 的波形叠加在一起。如果信号质量好,眼图就会睁得很大,像一只明亮的眼睛。如果信号有问题,眼睛就会眯起来,甚至闭上。
眼图能直观反映:幅度噪声、时序抖动、过冲、振铃。我习惯把眼图叫做“信号质量的一键体检”。
4.4.1 眼图的关键指标
- 眼高: 眼睛垂直方向的开度。眼高太小,接收端就分不清 0 和 1。
- 眼宽: 眼睛水平方向的开度。眼宽太小,采样时钟稍微偏一点就会误码。
- 抖动: 眼图交叉点的厚度。交叉点越厚,抖动越大。
- 占空比失真: 眼图上下不对称,说明信号的高电平和低电平持续时间不一样。
4.4.2 眼图测试用例设计
- 最差码型测试: 用 PRBS 码型或 K28.5 码型(8b/10b 编码中最差情况)驱动信号。这些码型能激发最大的 ISI(码间干扰)和串扰。
- 接收端均衡测试: 如果接收端有 CTLE(连续时间线性均衡器)或 DFE(判决反馈均衡器),分别测试均衡开启和关闭时的眼图。对比均衡效果。
- 通道损耗扫描测试: 在信号路径中插入不同长度的线缆或不同衰减的 PCB 走线,记录眼高和眼宽随损耗的变化。画出“眼图裕量 vs 通道损耗”曲线,找到设计余量。
4.5 知识体系:信号完整性测试全景图
下面这张图,把反射、串扰、抖动、眼图四个维度的测试方法和关键指标串起来了。你可以把它当作 SI 测试的“作战地图”。
4.6 测试用例设计总结
信号完整性测试,不是把示波器往板子上一搭就完事。你得想清楚:测哪根线?用什么码型?在什么条件下测?
我个人的经验是,测试用例设计要遵循三个原则:
- 最差原则: 永远找最恶劣的拓扑、最恶劣的码型、最恶劣的温度和电压条件。
- 可复现原则: 每个测试用例都要有明确的触发条件和判断标准。不能“这次测过了,下次又不一样”。
- 可追溯原则: 测试结果要能对应到具体的物理原因。比如“眼图闭合是因为过孔阻抗不连续”,而不是笼统地说“信号质量差”。