4. PCB走线阻抗控制:特性阻抗对信号反射的影响及抓包波形畸变
做信号完整性这么多年,我遇到最多的坑,其实就是阻抗不匹配。你想想,信号在PCB上跑,就像水在管道里流。管道粗细一变,水就会溅出来。走线阻抗变了,信号就会反射。反射一出来,抓包波形就变形了。
这一章我们重点聊两件事:阻抗为什么会引起反射,以及反射怎么把你的波形搞畸变。
4.1 特性阻抗到底是什么?
很多人觉得特性阻抗是个玄学。说白了,它就是走线对高频信号的瞬时阻抗。并不是你用万用表量出来的直流电阻,而是信号每往前跑一步,看到的那个“阻力”。
这个值由走线的宽度、厚度、介质高度、介电常数共同决定。我习惯用这么一句话记:
「阻抗是走线的几何结构+材料决定的。」
| 参数 | 增大时 | 减小时 |
|---|---|---|
| 线宽 (W) | 阻抗 ↓ | 阻抗 ↑ |
| 介质厚度 (H) | 阻抗 ↑ | 阻抗 ↓ |
| 铜厚 (T) | 阻抗 ↓ | 阻抗 ↑ |
| 介电常数 (εr) | 阻抗 ↓ | 阻抗 ↑ |
微带线和带状线的计算公式不一样。微带线有空气一侧,阻抗通常偏高。带状线上下都是介质,阻抗控制更稳。我建议敏感信号走带状线,串扰和辐射都好很多。
4.2 反射是怎么产生的?
信号从A点跑到B点,如果沿途的阻抗不变,它就一路顺畅。可一旦碰到阻抗突变,比如过孔、拐角、T型分支或连接器,一部分能量就会反弹回来。
反射系数的公式很简单:
Γ = (Z_load - Z0) / (Z_load + Z0)
Z0 = 走线特性阻抗(比如 50Ω)
Z_load = 负载端阻抗(比如接收芯片的输入阻抗)
Γ = 反射系数(-1 到 +1 之间)
一个例子:假设走线是50Ω,接收端输入阻抗是1kΩ。加载进去算:
Γ = (1000 - 50) / (1000 + 50) ≈ 0.905
反射系数接近0.9。这意味着大部分能量都弹回来了,抓包波形会严重过冲,甚至出现振铃。
4.3 反射对抓包波形的具体影响
我在项目中见过太多这种波形了。反射会导致以下三种典型的畸变:
- 过冲(Overshoot):信号电压超过目标电平。轻度过冲会降低噪声裕量,严重的话直接打坏芯片。
- 下冲(Undershoot):信号掉到地平面以下。抓包时容易误判为低电平,导致逻辑错误。
- 振铃(Ringing):信号反复震荡,迟迟稳定不下来。我曾经调试一块DDR3板子,时钟线上振铃幅度达到600mV,抓包数据全是错的。
你想想看,如果示波器抓到的波形本身就歪七扭八,你再怎么分析协议都白搭。所以,阻抗控制是抓包准确性的第一步。
4.4 怎么抑制反射?三种常用端接方式
控制反射,核心思路是让负载阻抗等于源阻抗。常见的端接方式有三种:
| 端接方式 | 接法 | 优点 | 缺点 |
|---|---|---|---|
| 源端串行端接 | 在驱动端串一个电阻 (Rs ≈ Z0 - R_driver) | 功耗低,适合点对点 | 接收端仍会有短暂反射 |
| 末端并联端接 | 在接收端对地拉一个电阻 (R = Z0) | 完全吸收反射 | 功耗大,直流电流大 |
| RC交流端接 | 接收端串RC,R=Z0,C隔直 | 无直流功耗 | 占用面积,电容值需计算 |
我个人的习惯是:低速信号用源端串行端接,简单省事;高速信号比如DDR,用末端并联端接或ODT,反射吸收更彻底。
4.5 防抄板孔(Stub)对阻抗的影响
很多人忽略过孔stub。其实一个长的过孔残留段,相当于在传输线上挂了一截开路线。它会引入容性不连续,严重拉低阻抗。
我记得有一次客户板子上的PCIe Gen3链路一直掉速,我们用TDR一测,发现某个过孔的stub长达40mil。把那根stub背钻掉之后,眼图立刻打开了。
- 高速信号(≥5Gbps)务必做背钻设计。
- 内层走线换层时,尽量选择靠近信号层的过孔,缩短stub。
- 如果必须穿过多层,可以考虑via fencing和回流地过孔来补偿阻抗。
4.6 一个抓包失败的案例
讲一个我几年前做的项目。某通信板卡,FPGA和DDR3之间的数据线,走线很长,约6英寸。我那时偷懒,没做阻抗仿真,直接按经验值走线。结果上电后用逻辑分析仪抓DDR3写入数据,波形混乱不堪。
我拿示波器一测,发现时钟线上的振铃幅度高达1.2V(正常是1.5V逻辑电平)。反射系数一算,根因出在接收端输入阻抗和走线阻抗严重不匹配。后来补上了末端并联电阻(50Ω对地),振铃一下子降到200mV以下,抓包数据全部正确。
4.7 本章知识体系
下面这张图把这一章的核心概念串起来了。从特性阻抗的定义,到反射的产生,再到端接和防stub,最后落到抓包波形畸变。