传输线理论入门
SPI 跑上 10MHz 以后,走线就不再是一根普通导线了。我年轻时第一次调试 24MHz 的 SPI 闪存,示波器上看到的波形全是毛刺 —— 当时不懂,以为是芯片坏了。后来才明白,那是传输线效应在作怪。
说白了,信号在线上传播需要时间,线本身有阻抗,负载跟线不匹配就会反弹。你想想看,就像水在管道里流,管道粗细变化、接口堵塞,都会产生回波。高频数字信号也一样。
4.1 特性阻抗 Z₀
特性阻抗是传输线的固有属性,跟线长没关系。计算公式很简单:
Z₀ = √(L / C)
L 是单位长度电感,C 是单位长度电容。PCB 上走线的 Z₀ 通常设计在 50Ω 或 100Ω 差分。我在一个消费电子项目里,没注意阻抗匹配,结果 SPI 时钟线上反射严重,数据连续出错。后来改板,把线宽从 0.3mm 调整到 0.5mm,阻抗稳在了 50Ω 左右,问题才解决。
影响特性阻抗的主要因素:
| 参数 | 增大 → Z₀ 变化 | 典型范围 |
|---|---|---|
| 线宽(W) | ↓ 减小 | 0.1 – 1.0 mm |
| 介质厚度(H) | ↑ 增大 | 0.1 – 0.5 mm |
| 介电常数(εr) | ↓ 减小 | 3.5 – 4.5(FR4) |
| 铜厚(T) | ↓ 微小减小 | 0.035 mm(1 oz) |
4.2 传播延迟 Tpd
传播延迟就是信号在线上跑单位长度需要的时间。公式:
Tpd = √εr / c
c 是光速(3×10⁸ m/s),εr 是相对介电常数。FR4 板材的 εr 大约 4.2,算一下:
Tpd = √4.2 / 3e8 ≈ 6.8 ns/m
也就是说,信号每跑 10cm 就延迟 0.68ns。我记得在调试一个 50MHz SPI 时,总线长度 15cm,单程延迟就已经 1ns 左右。加上上升沿时间只有 2ns,反射回来的信号刚好在数据采样窗口里捣乱。
常见的 PCB 材料传播延迟参考:
| 材料 | εr | Tpd (ns/m) |
|---|---|---|
| FR4 | 4.2 – 4.6 | 6.8 – 7.1 |
| Rogers 4350B | 3.48 | 6.2 |
| 陶瓷基板 | 9.0 | 10.0 |
4.3 反射现象
当信号到达负载端,如果负载阻抗 ZL 跟传输线特性阻抗 Z₀ 不相等,一部分能量就会反射回来。反射系数 ρ 定义为:
ρ = (ZL − Z₀) / (ZL + Z₀)
ρ 的范围从 -1(短路)到 +1(开路)。0 表示完美匹配,没有反射。
拿 SPI 来说,标准 CMOS 输出内阻约 30–50Ω,输入阻抗很高(几 MΩ 以上)。当信号到达接收端,相当于开路(ρ≈+1),电压几乎翻倍。这就是你看到的波前过冲。反过来,如果驱动端阻抗跟线不匹配,又会形成二次反射。
- 开路端(ZL→∞):ρ≈+1,电压翻倍,产生过冲
- 短路端(ZL→0):ρ≈−1,电压反相,产生下冲
- 纯容性负载(ZL=1/jωC):低频反射,高频吸收,导致上升沿变缓
我也曾犯过这样的错:在设计一个 TFT 显示屏驱动板时,为了节省空间,把 SPI 上拉电阻省掉了。结果接收端开路,反射回来的信号跟主信号叠加,形成振铃,时钟沿抖动超过 3ns。后来加上源端串阻 33Ω,波形才干净。
4.4 负载效应
除了反射,负载本身还会影响信号上升时间。接收端的输入电容、过孔寄生电容、封装电容,都相当于在线末端挂了一个电容 CL。这个电容会跟传输线阻抗形成 RC 低通滤波,降低信号斜率。
经验公式:上升时间退化
tr_degraded = √(tr_initial² + (2.2 × Z₀ × CL)²)
如果 Z₀=50Ω,CL=10pF,额外延迟约 2.2×50×10pF = 1.1ns。我一个同事做过一个验证:SPI 总线上接了 4 个从设备,每个输入电容 5pF,再加上走线寄生,总 CL 突破 25pF。示波器上看到的时钟上升沿从 2ns 变成了 4.5ns,时序裕量瞬间归零。
- 从设备尽量靠近主控,减少 stub 长度
- 每多一个从设备,评估一次总容性负载
- 必要时加缓冲器(如 74LVC1T45)来分路驱动
小结
传输线理论是 SPI 信号完整性的根基。特性阻抗决定反射幅度,传播延迟决定时序错位,负载效应吃掉上升沿。我自己的经验是:在做 PCB 布局前,先用阻抗计算工具(如 Saturn PCB Toolkit)估算一下线宽和介质厚度;仿真时加上端接电阻;量产前务必用示波器查看信号过冲和振荡。这些习惯能帮你避开 80% 的信号完整性问题。