3. 反射与端接:反射的形成机制、源端端接、末端端接、AC端接、戴维南端接
反射,说白了就是信号在传输线上跑的时候,遇到了阻抗不连续的地方,一部分能量被弹了回来。你想想看,信号就像一列火车,轨道(传输线)的宽度突然变了,火车能不颠簸吗?
我刚开始做SI的时候,有一次调试一块高速板,眼图总是张不开。折腾了好几天,最后发现就是一个过孔的阻抗突变引起的反射。从那以后,我对反射这玩意儿就特别上心。
3.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.2 端接策略:让信号“安静”下来
既然反射是因为阻抗不匹配,那解决办法就是让阻抗匹配。端接,就是在传输线的某个位置加上电阻,把反射吃掉。
我个人习惯把端接分成两大类:源端端接和末端端接。下面一个个说。
3.2.1 源端端接(串联端接)
源端端接,就是在驱动器的输出端串一个电阻。这个电阻加上驱动器的输出阻抗,要等于传输线的特性阻抗。
公式很简单:R_s + R_driver = Z_0
比如,驱动器的输出阻抗是 10Ω,传输线特性阻抗是 50Ω,那串联电阻就是 40Ω。
源端端接的原理是:让驱动端输出的信号幅度减半(因为电阻分压),这个半幅信号跑到末端,遇到开路(或高阻)反射回来,幅度加倍,正好恢复到满幅。反射回来的信号到了源端,又被匹配的阻抗吸收掉,不再产生二次反射。
我的经验:源端端接在点对点拓扑中特别好用。我曾经在一个DDR3地址线项目里用过,效果不错。但要注意,串联电阻要尽量靠近驱动端放置,越近越好。
优点:功耗低,不增加直流负载,适合点对点。
缺点:信号幅度减半,对接收端灵敏度有要求;不适合多负载拓扑。
3.2.2 末端端接(并联端接)
末端端接,就是在传输线的末端,对地(或对电源)并联一个电阻,让末端阻抗等于 Z_0。
最简单的形式:R_p = Z_0,一端接信号线,一端接地。
这样,信号跑到末端,直接“看到”匹配的阻抗,没有反射。
末端端接又分几种:
| 类型 | 接法 | 特点 |
|---|---|---|
| 并联到地 | R = Z_0,一端接信号,一端接地 | 简单,但增加直流功耗,低电平会被拉高 |
| 并联到电源 | R = Z_0,一端接信号,一端接Vcc | 适合TTL电平,高电平会被拉低 |
| 戴维南端接 | 两个电阻,一个到Vcc,一个到地 | 等效阻抗匹配,同时提供直流偏置 |
| AC端接 | 电阻串联电容到地 | 只吸收高频反射,不消耗直流 |
注意:末端端接会持续消耗直流电流。在低功耗设计中要慎重。我曾经在一个电池供电的项目里用了并联端接,结果静态功耗超标,后来换成了AC端接才解决问题。
3.2.3 戴维南端接
戴维南端接,就是用两个电阻组成分压器,一个接到Vcc,一个接到地。两个电阻的并联值等于Z_0,同时分压点提供合适的直流偏置电平。
计算公式:
R1 || R2 = Z_0
V_bias = Vcc * R2 / (R1 + R2)
比如,对于3.3V的CMOS电平,希望偏置在1.65V,Z_0=50Ω:
R1 = R2 = 100Ω
并联值 = 50Ω ✓
偏置电压 = 1.65V ✓
戴维南端接的好处是:既匹配了阻抗,又提供了稳定的直流电平,适合总线型拓扑。但缺点也很明显——两个电阻一直有电流流过,功耗比单电阻并联端接还大。
3.2.4 AC端接
AC端接,就是在末端串联一个电容再接地。电容的作用是隔断直流,只让高频信号“看到”匹配的电阻。
典型接法:R = Z_0,C 的选择要满足时间常数远大于信号上升时间。
C > 10 * t_r / R
比如,上升时间 t_r = 1ns,R = 50Ω,那么 C > 200pF。实际中常用 100pF ~ 1nF。
AC端接最大的优势:不消耗直流功耗。适合高频、低功耗设计。但要注意,电容会引入额外的延迟,而且电容的寄生参数在高频下会影响效果。
我的建议:如果你在做DDR4或更高频率的设计,AC端接是个不错的选择。但电容的选型要小心,我一般用NP0/C0G材质的MLCC,温度稳定性好,寄生电感小。
3.3 端接策略对比与选择
这么多端接方式,到底选哪个?我整理了一个对比表,方便你快速决策:
| 端接类型 | 功耗 | 拓扑适用性 | 信号幅度 | 复杂度 | 推荐场景 |
|---|---|---|---|---|---|
| 源端串联 | 低 | 点对点 | 减半 | 低 | 时钟、单点信号 |
| 末端并联 | 高 | 点对点、总线 | 正常 | 低 | 高速总线末端 |
| 戴维南 | 很高 | 总线 | 正常 | 中 | 多负载总线 |
| AC端接 | 极低 | 点对点 | 正常 | 中 | 低功耗高频 |
选型时,我一般按这个思路来:
- 先看拓扑:点对点?还是多点总线?
- 再看功耗:电池供电?还是插电设备?
- 最后看频率:1GHz以下?还是更高?
点对点、低频、低功耗 → 源端串联
点对点、高频、功耗不敏感 → 末端并联
多点总线、需要稳定偏置 → 戴维南
高频、低功耗、点对点 → AC端接
3.4 反射与端接知识体系
下面这张图,把反射和端接的核心逻辑串起来了:
3.5 避坑指南
做反射和端接设计,有几个坑我踩过,分享给你:
- 电阻位置不对:我曾经把串联端接电阻放在了走线中间,结果反射没消除,反而多了一个反射点。记住,源端串联电阻要贴着驱动器的输出引脚放。
- 电容选型不当:AC端接的电容,如果用X7R或者Y5V材质,在高频下容值会大幅下降。我吃过这个亏,后来一律用NP0/C0G。
- 忽略封装寄生:端接电阻的封装寄生电感在高频下会“失效”。0402封装的电阻,寄生电感约0.5nH,在5GHz时感抗约15Ω,已经不能忽略了。
- 戴维南端接功耗估算:两个电阻一直通电,功耗是持续的。我曾经算漏了,导致电源余量不足。公式很简单:P = Vcc² / (R1 + R2),别忘了乘以电阻数量。
重要提醒:端接不是万能的。如果拓扑本身有问题(比如过长的stub、过多的分支),端接只能缓解,不能根治。先优化拓扑,再考虑端接——这个顺序不能乱。