4. 反射与端接技术:串联端接、并联端接、AC端接

咱们今天聊聊信号反射。这个问题,说实在的,是高速PCB设计里最容易踩的坑。我最早接触反射这个概念,还是在做一块DDR2内存板的时候。当时信号跑个166MHz,波形就已经惨不忍睹了,眼图基本是闭上的。后来一查,全是反射惹的祸。

核心观点:反射的根本原因是阻抗不连续。信号走在传输线上,每遇到一个阻抗跳变点,就会有一部分能量被反射回来。

4.1 反射形成的原理

反射系数Γ决定了反射电压的大小。它的公式很简单:

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

其中Z_load是负载端的输入阻抗,Z_0是传输线的特性阻抗。

你想想看,如果Z_load等于Z_0,Γ就是0,没有反射。这是最理想的情况。如果负载开路,Z_load无穷大,Γ就是1,信号全部反射回来。如果短路,Z_load为0,Γ是-1,反射信号反相。

我在项目中遇到过一种情况:一个时钟信号线上接了3个负载,每个负载的输入阻抗都不一样。结果波形上出现了明显的台阶和过冲。当时我查了整整两天,最后发现是分支走线太长,导致每个分支点都成了反射源。

经验之谈:反射造成的过冲如果超过器件的耐压值,会直接烧毁IO口。如果低于阈值,会导致逻辑误判。所以反射问题必须解决。

4.2 串联端接

串联端接,顾名思义,是在信号源端串一个电阻。这个电阻和驱动器的输出阻抗加起来,等于传输线的特性阻抗。

为什么有效?因为信号第一次发射出去时,只会有一半的幅度到达负载端。但因为是开路,反射系数接近1,反射回来的信号会叠加在原始信号上,最终达到满幅。这个过程需要一个往返时间,所以适合单点对单点的走线。

// 串联端接电阻计算
R_ser = Z_0 - R_driver
// 例如:Z_0 = 50Ω,R_driver = 10Ω
// R_ser = 40Ω

我个人习惯在时钟信号和低速控制信号上先用串联端接。因为它的功耗很低,不需要额外的直流偏置。但要注意,串联端接只适合驱动单一负载。如果驱动多个负载,反射就会变得复杂。

注意:串联电阻一定要靠近源端放置,越近越好。我曾经见过一个设计,电阻放在走线中间,效果大打折扣。

4.3 并联端接

并联端接是在接收端并联一个电阻到GND或电源。它的原理是直接吸收反射能量,让负载端看起来匹配。

并联端接有两种常见形式:

  • 上拉到电源:适用于需要提升驱动能力的信号,比如时钟和复位。缺点是会增加直流功耗。
  • 下拉到GND:适用于需要低电平驱动的信号,比如一些开漏输出。缺点是同样有功耗问题。
端接类型 优点 缺点 适用场景
串联端接 低功耗、简单 只适合单负载 时钟、低速控制
并联上拉 提升驱动能力 直流功耗大 时钟、复位
并联下拉 适合开漏输出 直流功耗大 I2C、GPIO

我记得有一次做一个DDR3的设计,数据线和地址线都用了并联端接。结果整板功耗多了将近1瓦,散热成了问题。后来赶紧换成了ODT(片上端接),才把功耗降下来。

建议:并联端接的电阻值通常取Z_0的1.5到2倍,这样既能抑制反射,又不会让直流功耗太大。

4.4 AC端接

AC端接是并联端接的升级版。它在并联电阻的基础上串了一个电容,阻隔直流路径,只让交流信号通过。

这样做的好处很明显:

  • 没有直流功耗
  • 只在信号跳变时起作用
  • 能有效抑制高频噪声

但AC端接也有缺点。电容会引入RC时间常数,影响信号的上升时间。如果电容选得太小,信号还没稳定就被衰减了。

// AC端接电容估算
// 要求:时间常数 > 信号上升时间的10倍
τ = R * C
// 例如:R = 50Ω,trise = 1ns
// τ > 10ns,C > 200pF

我在一个SATA 6Gbps的项目中用过AC端接。当时信号速率很高,普通并联端接的功耗根本扛不住。改成AC端接后,眼图干净了很多,功耗也降下来了。

提醒:AC端接的电容要选择低ESR的MLCC,而且尽量靠近接收端放置。电容的谐振频率要远高于信号频率,否则会引入新的问题。

4.5 三种端接方案的对比与选择

到底用哪种端接?我的建议是分三步考虑:

  1. 先看信号速率。低速信号可以不做端接,或者用串联端接。
  2. 再看功耗预算。如果功耗敏感,优先串联端接或AC端接。
  3. 最后看拓扑结构。单负载用串联,多负载用并联或AC端接。

下面这张图可以帮助你快速决策:

端接方案选择流程图 开始选择 信号速率 > 100MHz? 是 否 可不做端接 功耗敏感? 是 否 AC端接 并联端接 单负载? 是 否 串联端接 AC端接 提示:实际项目中需要结合SI仿真验证端接效果,以上流程仅作为初步选型参考

嗯,说到仿真,我建议大家在完成初步选型后,一定要跑一下反射仿真。很多问题在仿真阶段就能暴露出来,比等PCB打样回来再改省事得多。

我的习惯做法:先按经验选一种端接方案,然后在HyperLynx或ADS里建个简单的仿真模型。调一调电阻、电容的值,看看波形是否合格。一般在这个环节就能定下最终方案。

好了,反射和端接的内容基本就这些。每种方案都有它的脾气,关键是要根据实际场景灵活选用。做多了,你自然就有感觉了。