信号完整性基础:反射与阻抗匹配

各位硬件工程师,大家好。我是老周,做信号完整性这块差不多十五年了。

今天咱们聊聊最基础、但也最容易被忽略的问题——反射。

说白了,反射就是信号在传输线上碰到“不习惯”的阻抗时,一部分能量弹了回来。你想想看,本来好好的波形,被这么一弹,立马变形、过冲、振铃,严重的时候系统直接罢工。

核心观点:反射的本质是阻抗不连续。阻抗匹配,就是让整个传输路径上的阻抗处处相等。

1. 反射是怎么产生的?

信号在传输线上跑,每到一个点都会“看一眼”它看到的阻抗。如果前一段阻抗是50Ω,后一段突然变100Ω,那信号就懵了——一部分继续往前走,一部分被弹回来。

这个变化量有多大?可以用反射系数Γ来衡量:

Γ = (Z_load - Z0) / (Z_load + Z0)

Z0是传输线的特性阻抗,Z_load是负载端的阻抗。

我刚开始做高频板时,根本不信这个。直到有一次调试DDR3,信号眼图惨不忍睹。拿示波器一测,波形上全是回勾和台阶——嗯,从那以后,老老实实算反射系数。

反射系数的几种典型情况:

  • Z_load = Z0:Γ = 0,完美匹配,没有反射
  • Z_load = 无穷大(开路):Γ = 1,全部反射
  • Z_load = 0(短路):Γ = -1,全部反射并且极性反转

你看,只有匹配状态下,信号才能顺利“上岸”。

2. 传输线的特性阻抗Z0

很多人问:Z0到底由什么决定?我一般这么说——它不是你用万用表能测出来的直流电阻,而是高频下的“瞬间阻抗”。

Z0由四个物理参数决定:

参数 作用方向 项目中常见影响
线宽W 越宽,Z0越小 走线太细容易反射
介质厚度H 越厚,Z0越大 PCB叠层影响关键
介电常数εr 越大,Z0越小 FR4约4.2,高频板材需稳定
铜厚T 越厚,Z0略小 一般1oz或0.5oz

我习惯用SI9000或Polar算一下,但最终要以板厂的实测为准。曾经有个项目,我算出来Z0=50Ω,板厂做出来46Ω——就因为介质厚度没控制住。结果100M的时钟跑上去,振铃高达300mV。

3. 常见的阻抗匹配方案

匹配方案不止一种,关键是看场景。

我整理了几种主流做法:

匹配方式 做法 优缺点
源端匹配 驱动端串电阻,一般22Ω~33Ω 简单、省功耗,但只抑制二次反射
终端匹配 负载端对地/对电源接电阻 效果好,但直流功耗大
AC匹配 电阻串电容后接地 无直流功耗,但占面积
戴维南匹配 上拉和下拉组成等效匹配 适合差分线,但直流功耗双倍

我的习惯:单端信号用源端匹配最省事。差分信号(比如USB、HDMI)优先做终端匹配。

4. 一个实战案例:DDR3的反射调试

上个月有位同事找我,DDR3读操作老是报错。我拿示波器看数据线,过冲都超过VDD的120%了。

他用了源端匹配,串了33Ω电阻。但问题在于——驱动端输出阻抗本身就低,加上PCB走线也不是精确的50Ω。

我让他量一下驱动端的实际输出阻抗,发现只有25Ω。加上33Ω串阻,和50Ω差8Ω。

这8Ω看着不大,但在1.5V的DDR3上,足以让信号反射叠加出超过200mV的振铃。

我建议他把串阻改成22Ω,这样25+22=47Ω,接近50Ω。结果——BER测试直接过了。

曾经踩过的坑:有些人觉得阻抗匹配就是“串个电阻完事”。不测输出阻抗、不算反射系数,等板子回来再痛哭。我建议,每个高速接口都要做SI仿真,跑TDR看阻抗曲线。

5. 反射与信号完整性的关系图

下面这张图是我自己画的,帮大家理清整个知识框架:

反射与阻抗匹配知识体系 反射的本质 阻抗不连续 → 能量回弹 反射系数 Γ = (ZL-Z0)/(ZL+Z0) 特性阻抗Z0:线宽/厚度/εr 源端匹配(串阻) 终端匹配(并阻) AC匹配(阻容) 戴维南匹配 结果:波形过冲 → 振铃 → 时序错误 → 系统不稳定 匹配不当 → 数据眼图变小 → BER上升 核心:匹配 → 无反射 → 好信号

一个小技巧:用TDR(时域反射计)测一下PCB走线的阻抗曲线。一次测试,就能看到哪儿有阻抗跳变,哪儿需要加匹配。

6. 反射、振铃与PHY寄存器

有人可能会问:反射跟PHY寄存器有什么关系?

关系大了。反射造成的振铃,会直接影响接收端的判决电压窗口和采样时序。PHY内部的EQ(均衡)寄存器、Slew Rate(压摆率)寄存器,就是专门用来对抗这些反射效应的。

我见过不少项目,PHY寄存器值全是默认配置,结果板子调不通。后来改一两个EQ档位,问题就解决了。

后面我会专门讲:怎么通过调节PHY寄存器,来“对抗”反射产生的信号完整性问题。

7. 避坑总结

  • 不要迷信仿真:仿真只能给趋势,实际阻抗要看板厂加工结果
  • 不要忽略过孔:过孔的阻抗不连续常常是反射的元凶
  • 多个负载用菊花链:星形拓扑容易导致多重反射

我曾经犯过的错:一个四片DDR3的板子,为了“节省空间”,用了T型分支拓扑。结果每片DDR3的走线长度差0.5英寸。信号到了末端,反射叠加出5ns的振铃。最后改成菊花链,一切正常。匹配不仅是电阻的事,拓扑也是匹配的一部分。

好,反射和阻抗匹配的基础就聊到这儿。记住一句话:匹配做好了,信号完整性就成功了一半。