3. 反射与端接:信号完整性的基本功

反射这东西,说白了就是信号在传输路径上遇到了“阻抗突变”,一部分能量弹了回来。我刚开始做硬件那会儿,总觉得反射是理论派才操心的事——直到有一次调试一块高速板,时钟线上出现了莫名其妙的过冲,直接把接收端的IO口打坏了。嗯,从那以后我再也不敢小看反射了。

这一节咱们就把反射的机理和几种常见的端接方案掰开揉碎讲清楚。你想想看,搞懂了反射怎么来的,端接怎么选的,很多SI问题其实就能在原理图阶段提前规避掉。

3.1 反射产生的机理

信号在传输线上传播时,每时每刻都在“看”前方的阻抗。如果阻抗连续,信号就乖乖往前走;如果阻抗突然变了,一部分能量继续前进,另一部分就反射回来。

反射系数Γ(Gamma)就是用来量化这个比例的:

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

其中Z0是传输线的特性阻抗,Z_load是负载端的阻抗。Γ的范围在-1到1之间:

  • Γ = 0:完美匹配,无反射(理想情况)
  • Γ = 1:开路,全反射(信号翻倍)
  • Γ = -1:短路,全反射(信号反相)
  • 0 < |Γ| < 1:部分反射

关键点:反射不仅发生在接收端,驱动端、过孔、连接器、分支线——任何阻抗不连续的地方都会产生反射。多个反射叠加起来,就会形成振铃、过冲、下冲这些我们最头疼的SI问题。

我在项目中遇到过一块DDR3的板子,地址线在末端测出了超过VDD 40%的过冲。查了半天,发现是走线经过一个过孔时阻抗从50Ω跳到了75Ω。就这一个不连续点,反射来回弹了三次才稳定下来。

3.2 源端端接(串联端接)

源端端接是最常用、也最省事的方案。做法很简单:在驱动端串一个电阻,让驱动器的输出阻抗加上这个电阻等于传输线的特性阻抗。

比如驱动器的输出阻抗是10Ω,传输线特性阻抗是50Ω,那就串一个33Ω或39Ω的电阻(留点余量)。

我的习惯:源端端接的电阻尽量靠近驱动器的输出引脚放,走线越短越好。我曾经见过有人把电阻放在走线中间,结果反射照样严重——因为不连续点还是在驱动端和电阻之间。

源端端接的优缺点:

优点 缺点
只用一个电阻,成本低 信号幅度减半,对接收端灵敏度要求高
不增加直流功耗 只适用于点对点拓扑
抑制过冲效果好 对走线长度敏感,长线效果变差
不影响信号上升时间 多负载时匹配困难

3.3 并联端接

并联端接是在接收端把信号拉到地或电源,通过一个电阻来匹配传输线的特性阻抗。最常见的做法是下拉到地:

R_term = Z0  // 比如50Ω走线就接50Ω到地

并联端接的好处是信号幅度不会衰减,适合长距离传输。但代价也很明显——直流功耗大。50Ω拉到地,3.3V的信号就有66mA的静态电流,这在低功耗设计中根本扛不住。

避坑指南:我曾经在一个多负载的时钟树上用了并联端接,结果每个接收端都接了一个50Ω下拉电阻,总功耗直接飙到了1W以上。后来改成了AC端接才解决问题。所以并联端接一定要算功耗,别等到板子发热了才后悔。

3.4 AC端接

AC端接是并联端接的改良版——在电阻后面串一个电容,阻断直流路径,只对交流信号起作用。

典型电路:

信号线 —— R_term(=Z0) —— C_term(0.1μF左右) —— GND

电容的取值要保证时间常数远大于信号的周期:

R_term × C_term > 10 × T_signal

比如信号频率100MHz(周期10ns),R_term=50Ω,那么C_term至少要2nF。我一般取0.1μF,留足余量。

AC端接的适用场景:

  • 需要匹配但功耗受限的设计
  • 差分信号(每根线各接一个RC到地)
  • 时钟信号(对直流偏置敏感)

小技巧:AC端接的电容要用高频特性好的MLCC,别用普通电解电容。我习惯用0402或0603封装的X7R或C0G材质,ESR低、自谐振频率高。

3.5 戴维南端接

戴维南端接是用两个电阻组成分压器,一个上拉到电源,一个下拉到地,等效阻抗等于传输线的特性阻抗。

计算公式:

R1 || R2 = Z0
V_term = VDD × R2 / (R1 + R2)  // 通常设为VDD/2左右

比如Z0=50Ω,VDD=3.3V,想让等效阻抗50Ω、偏置电压1.65V:

R1 = R2 = 100Ω  // 100Ω || 100Ω = 50Ω,分压1.65V

戴维南端接的优点:

  • 同时提供匹配和直流偏置
  • 适合HSTL、SSTL等需要参考电压的接口
  • 对信号幅度影响小

缺点也很明显:两个电阻始终有直流电流流过,功耗比并联端接还大。还是上面的例子,3.3V下两个100Ω电阻的静态电流是33mA,功耗约109mW——这还只是一个信号线。

端接类型 匹配位置 直流功耗 信号幅度 适用拓扑
源端串联 驱动端 低 减半 点对点
并联 接收端 高 不变 点对点/多负载
AC 接收端 极低 不变 点对点/多负载
戴维南 接收端 高 不变 点对点/多负载

3.6 端接方案的选择思路

说实话,没有一种端接方案是万能的。我个人的选择逻辑是这样的:

  1. 点对点、低速(<50MHz):源端串联,简单可靠
  2. 点对点、高速(>50MHz):并联或AC端接,看功耗预算
  3. 多负载、同相:AC端接优先,功耗可控
  4. 多负载、需要参考电压:戴维南端接,比如DDR的地址/控制线
  5. 差分信号:在接收端跨接一个电阻(等于差分阻抗),或者用AC端接

核心原则:端接的目的是消除反射,不是“加个电阻就完事”。选方案之前,先搞清楚你的拓扑结构、信号速率、功耗预算和接口标准。我见过太多人随便加个端接,结果反射没消除,反而引入了新的问题。

下面这张图把反射和端接的整个知识体系串起来了,你可以对照着看:

反射与端接知识体系 反射与端接 反射产生机理 反射系数 Γ 阻抗不连续点 源端串联端接 并联端接 AC端接 戴维南端接 R_ser + R_drv = Z0 R_term = Z0 RC时间常数 > 10T R1||R2 = Z0 点对点低速 点对点高速 多负载/低功耗 需参考电压 选择端接方案的核心思路 先看拓扑(点对点 vs 多负载)→ 再看速率 → 算功耗预算 → 最后看接口标准 没有万能方案,每个设计都要单独评估

反射和端接这部分内容,说白了就是信号完整性最基础也最实用的功夫。你把这些机理和方案吃透了,调试时看到波形异常,脑子里就能快速定位——是阻抗不匹配?还是端接选错了?还是布局有问题?