第1章:TDR基本原理与信号完整性概述
各位做ATE的兄弟,刚开始接触信号完整性时,是不是感觉「玄学」成分很大?我入行那会儿也是。明明PCB走线画得规规矩矩,上测试机就是报错,查了半天发现是走线阻抗不连续引起的反射。说到底,TDR(时域反射计)就是帮我们把这条藏在波形里的「病因」揪出来的工具。
1.1 什么是TDR?
TDR全称Time Domain Reflectometry,中文叫时域反射计。它的原理其实很简单——往传输线里发射一个快速上升的阶跃信号,然后观察反射波。为什么会反射?说白了,就是信号在路上碰到了阻抗变化的地方。阻抗变了,能量不会凭空消失,一部分继续往前走,剩下那部分就被弹回来了。
反射系数Γ就是描述这种「弹回来多少」的参数:
Γ = (ZL - Z0) / (ZL + Z0)
其中Z0是传输线的特性阻抗,ZL是负载或突变点的阻抗。如果Γ=0,那就是完全匹配,没反射——这是我们最希望看到的理想情况。我早期做DDR3走线验证时,就靠这个公式算出了一段过孔的等效阻抗偏差,省了一版PCB。
1.2 TDR测量的核心参数
| 参数 | 含义 | 影响(我踩过的坑) |
|---|---|---|
| 上升时间(tr) | 阶跃信号的10%-90%上升沿 | 太慢,分辨不出短走线的不连续点;太快,激励出非预期的寄生模式。建议选tr≤30ps用于高速数字。 |
| 采样率 | 对反射波形的采样间隔 | 采样率不够,会把尖锐反射峰变平滑,造成误判。我试过用5GSa/s测一段3cm的短线,差点错过阻抗突变。 |
| 阻抗分辨率 | 能区分的微小阻抗变化 | TDR内部混频噪声会限制分辨率,一般1Ω以内的变化才可信。 |
1.3 信号完整性——TDR到底在测什么?
信号完整性(SI)不是单一指标,而是多个现象的综合结果。TDR直接测量的是阻抗,间接反映的是反射、过冲、振铃和串扰等SI问题。
- 反射:阻抗突变处能量回弹,严重时让逻辑电平错误翻转。我调过一块FPGA板,就因为连接器阻抗偏低导致DQS时钟出现二次反射,每次读取都随机错位。
- 过冲/振铃:反射波叠加后超出电压窗口,轻则增加EMI,重则打坏芯片输入级。
- 串扰:相邻走线通过电磁场耦合干扰。TDR虽然不能直接测串扰,但通过TDT(时域传输)配合差分TDR可以定位耦合位置。
关键认知:TDR测的不是「信号质量」,而是「通道的特征阻抗分布」。信号质量是这些阻抗分布的最终表现——你想想看,如果每段走线阻抗都一致且匹配,反射自然小,信号质量自然好。
1.4 一段TDR测量代码(实战版)
这里给一段基于Python + scipy的简单TDR反射系数计算,实际ATE里会用VNA或专用TDR模块,但原理相通:
import numpy as np
import matplotlib.pyplot as plt
# 模拟入射阶跃波(理想50Ω系统,上升时间20ps)
t = np.linspace(0, 5e-9, 1000)
tr = 20e-12
v_in = 0.5 * (1 + np.sign(t - tr)) # 简单阶跃
# 假设一个50Ω→75Ω→50Ω的不连续(长度为200ps电长度)
z0 = 50
zt = 75
idx1 = 200 # 第一个突变点对应时间索引
idx2 = idx1 + 50 # 短桩长度
gamma1 = (zt - z0) / (zt + z0)
gamma2 = (z0 - zt) / (z0 + zt) # 回到50Ω
# 构造反射波(一阶近似,忽略多次反射)
v_ref = np.zeros_like(t)
v_ref[idx1:] = gamma1 * v_in[:len(t)-idx1]
v_ref[idx2:] += gamma2 * v_in[:len(t)-idx2]
# TDR波形 = 入射 + 反射
v_tdr = v_in + v_ref
plt.plot(t*1e9, v_tdr)
plt.xlabel('时间 (ns)')
plt.ylabel('电压 (V)')
plt.title('模拟TDR波形 - 50Ω→75Ω→50Ω')
plt.grid(True)
plt.show()
我在实际项目中用安捷伦86100C的TDR模块,设置是:上升时间25ps,采样点数4096,平均16次。那个手动「去嵌」的步骤很容易被忽略——把夹具和探头的反射先测出来,然后用S参数反卷积。否则你看到的「通道问题」可能是夹具忽悠你的。
1.5 TDR与信号完整性的知识体系
下面这张SVG图总结了TDR测试与SI之间最核心的逻辑——你从TDR波形里看到的所有现象,最后都能映射到SI的不良表现上。
1.6 几个实战中的「坑」
坑1:上升时间选错了等于白测
我曾经帮一个同事复查DDR4的通道,他用50ps上升时间的TDR从头测到尾,说「阻抗都很均匀」。我换了一台25ps的TDR再测,发现两个过孔处有7Ω的凹陷。为什么差这么多?因为上升时间太慢,空间分辨率低——短于0.5×tr的突变会被平滑掉。公式是:ΔL = 0.5 × tr × v,其中v是传播速度。tr=50ps时,能分辨的最小长度约7.5mm;tr=25ps时,可以降到3.8mm。所以,测高速信号,tr一定要足够小。
坑2:校准和去嵌不是可选步骤
很多ATE工程师只做OPEN/SHORT/LOAD校准就开测。但你的夹具、探针、电缆本身就有阻抗不均匀(尤其在高频)。我习惯的做法是:先用标准校准件在测试头端做SOLT校准,然后用已知良品板测一条全程50Ω的走线做「参考基线」,再用TDR测的波形减去这条基线(做时间对齐后除)。这样可以把夹具引入的反射去除掉,看到真正的DUT阻抗。
小技巧:如果ATE平台上没有TDR模块,可以用快沿信号源(比如DDR时钟的输出)配合高速示波器做「穷人的TDR」——把信号注入被测通道,在远端测回波。虽然精度差,但定位大反射点足够了。我在一个临时验证项目里就这么干过,省了一笔仪器采购费用。
1.7 结语
TDR基本原理说到底就是「发一个快沿,看反射回来的家伙长什么样」。但真正用好它,你得理解上升时间、阻抗分辨率、去嵌操作,还得把时域结果和信号完整性现象(过冲、振铃、串扰)对应起来。我见过太多测试报告里只贴一张TDR图,结论写「阻抗OK」,结果上系统就死机。其实看图说话很重要:但凡波形上有台阶、有凹陷、有尖峰,那就是信号完整性的「求救信号」。你学会看这些信号,ATE测试就不再只是「通过/失败」的开关判断,而是有血有肉的通道诊断。