3. 传输线理论(下)
上一讲我们把传输线的频域特性聊透了。这一讲换个视角——从时域看信号在传输线上怎么跑、遇到阻抗变化会怎样。说白了,就是给信号拍个“心电图”。
我个人习惯,做高速设计时,TDR 和眼图是必看的两个东西。一个帮你定位物理结构的问题,一个帮你评估系统整体的信号质量。今天咱们就把这两样工具的原理和用法讲清楚。
3.1 时域反射计(TDR)原理
TDR 的原理其实很简单:往传输线里发射一个快速上升沿的阶跃信号,然后观察反射回来的波形。反射波的大小和极性,直接反映了传输线上阻抗的变化情况。
我记得刚入行时,师傅跟我说:“TDR 就是给传输线拍 X 光片。”后来做多了,发现这个比喻真的很贴切。
3.1.1 反射系数与阻抗的关系
反射系数 Γ 的定义是反射电压与入射电压的比值:
Γ = (Z_load - Z_0) / (Z_load + Z_0)
其中 Z_0 是传输线的特性阻抗,Z_load 是负载阻抗或某点的瞬时阻抗。
从这个公式能看出几个关键点:
- 匹配时:Z_load = Z_0,Γ = 0,没有反射
- 开路时:Z_load = ∞,Γ = +1,反射波与入射波同极性
- 短路时:Z_load = 0,Γ = -1,反射波与入射波反极性
- 阻抗偏高时:Z_load > Z_0,Γ > 0,正反射
- 阻抗偏低时:Z_load < Z_0,Γ < 0,负反射
关键理解:TDR 波形上升表示阻抗变大,下降表示阻抗变小。这个对应关系要刻在脑子里。
3.1.2 TDR 的测量原理
TDR 仪器内部有一个快速阶跃发生器(上升时间通常在 20-50ps)和一个高速采样示波器。它发射一个阶跃信号,同时采样反射回来的波形。
反射波回到采样点的时间 t,对应着阻抗不连续点的位置:
距离 d = (v × t) / 2
其中 v 是信号在介质中的传播速度,除以 2 是因为信号走了个来回。
我曾经调试一块 10Gbps 的背板,发现眼图总是闭合。用 TDR 一测,在距离连接器约 3 英寸的地方有个明显的阻抗凹陷。拆开一看,是过孔的反焊盘挖得太大了。嗯,这种问题,光看频域 S 参数很难定位,但 TDR 一眼就能看出来。
3.2 阻抗不连续点的时域分析
实际 PCB 上,阻抗不连续点无处不在:过孔、连接器、焊盘、拐角、分支线……每个不连续点都会产生反射,多个反射叠加起来,信号质量就恶化了。
3.2.1 常见不连续点的 TDR 特征
| 不连续类型 | TDR 波形特征 | 典型原因 |
|---|---|---|
| 容性负载 | 先下降后上升(凹陷) | 过孔、焊盘、分支线 |
| 感性负载 | 先上升后下降(凸起) | 连接器引脚、细颈线 |
| 阻抗偏低 | 持续下降 | 线宽过宽、介质厚度偏小 |
| 阻抗偏高 | 持续上升 | 线宽过窄、介质厚度偏大 |
| 开路 | 急剧上升至 +1 | 断线、未连接 |
| 短路 | 急剧下降至 -1 | 桥接、锡珠 |
实用技巧:看 TDR 波形时,先看整体阻抗水平是否在目标范围内(比如 50Ω ± 10%),再看局部波动。局部波动幅度超过 5Ω 就要警惕了。
3.2.2 多级不连续点的叠加效应
当传输线上有多个不连续点时,反射会相互叠加。距离较近的不连续点,它们的反射在时域上会部分重叠,难以区分。
举个例子:两个过孔相距很近,它们的容性反射会叠加成一个更深的凹陷。你想想看,如果只看 TDR 波形,你可能以为只有一个严重的阻抗不连续点,但实际上可能是两个中等程度的问题叠加了。
我遇到过最头疼的一次,是一条 DDR4 的数据线,TDR 波形看起来只有一个凹陷,但怎么调整过孔参数都改善不了。后来用仿真软件把 TDR 波形分解开,才发现是过孔和焊盘两个不连续点靠得太近,反射叠加了。分开优化后才搞定。
3.2.3 时域反射的仿真方法
在仿真工具里做 TDR 分析,通常有两种方法:
- 阶跃响应法:用理想阶跃源激励传输线,观察反射电压波形
- 阻抗提取法:从 S 参数反推出时域阻抗分布
下面是一个简单的 TDR 仿真脚本(Python 风格,用于理解原理):
# 简化的 TDR 仿真逻辑
import numpy as np
def tdr_sim(z_profile, z0=50, t_step=10e-12):
"""
z_profile: 沿传输线的阻抗分布数组
z0: 参考阻抗
t_step: 时间步长
"""
v_inc = 1.0 # 入射阶跃幅度
v_ref = np.zeros_like(z_profile)
for i in range(1, len(z_profile)):
# 计算当前点的反射系数
gamma = (z_profile[i] - z0) / (z_profile[i] + z0)
# 反射波叠加
v_ref[i] = v_ref[i-1] + gamma * v_inc
return v_ref
注意:实际 TDR 仿真要考虑上升时间、损耗、色散等因素。上面的代码只是帮你理解基本原理,不能直接用于工程分析。
3.3 眼图基础
眼图是评估数字信号质量最直观的工具。把多个比特周期的波形叠加在一起,就形成了像眼睛一样的图案。
说白了,眼图就是把信号的历史轨迹叠在一起看。眼睛睁得越大、越清晰,信号质量越好。
3.3.1 眼图的形成原理
眼图的形成需要两个条件:
- 一个重复的码型(比如 PRBS 伪随机码)
- 用时钟信号触发示波器,把波形按比特周期对齐叠加
叠加之后,你会看到:
- 眼高:信号幅度的裕量,反映噪声和衰减
- 眼宽:信号时序的裕量,反映抖动和码间干扰
- 眼交叉点:差分信号的交叉电平,反映共模偏移
- 眼图轮廓:轨迹的粗细,反映噪声和抖动的分布
3.3.2 眼图的关键指标
| 指标 | 定义 | 典型要求 |
|---|---|---|
| 眼高 | 眼图垂直开口的高度 | > 200mV(视标准而定) |
| 眼宽 | 眼图水平开口的宽度 | > 0.6 UI(单位间隔) |
| 抖动 | 信号边沿的时间偏移 | < 0.2 UI |
| 信噪比 | 眼高与噪声幅度的比值 | > 6:1 |
| 交叉点 | 差分信号交叉电平百分比 | 45% - 55% |
3.3.3 眼图与传输线参数的关系
传输线的损耗、反射、串扰都会在眼图上留下痕迹:
- 损耗大:眼高变小,眼图变“瘦”
- 反射大:眼图内部出现“鬼影”或台阶
- 串扰大:眼图轮廓变粗,眼高降低
- 抖动大:眼宽变小,边沿模糊
我习惯的做法是:先看眼图有没有闭合,如果闭合了,再看是垂直方向的问题(眼高不够)还是水平方向的问题(眼宽不够)。垂直问题多半跟损耗和反射有关,水平问题多半跟抖动和时序有关。这样能快速定位方向。
3.4 本章知识体系
下面这张图把本章的核心逻辑串起来了:
3.5 工程实践中的注意事项
最后分享几个我在项目中踩过的坑:
避坑 1:TDR 的上升时间决定了分辨率。上升时间越短,能分辨的不连续点间距越小。20ps 的上升时间大约能分辨 2-3mm 的间距。如果两个不连续点比这个距离还近,TDR 波形就会把它们“糊”在一起。
避坑 2:眼图测试时,码型选择很重要。PRBS7 和 PRBS31 测出来的眼图差异很大。PRBS31 包含更长的连续相同比特,对低频损耗更敏感。我一般两种都测,对比着看。
避坑 3:TDR 校准不能省。每次测量前都要做开路/短路/负载校准,否则测量结果会包含电缆和夹具的反射。我曾经因为没校准,把一个好端端的板子测出“严重阻抗不匹配”,折腾了两天才发现是校准的问题。