3. 反射与端接:反射产生机理、源端端接、并联端接、AC端接、戴维南端接
信号反射,说白了就是信号在传输线上遇到了阻抗不连续点,一部分能量被弹了回来。我刚开始做高速设计那会儿,总觉得反射是个很玄乎的东西,直到有一次在DDR3的地址线上看到波形上有个大台阶,怎么调驱动强度都消不掉。后来一查,原来是走线经过过孔换层时阻抗突变,反射波叠加在原始信号上,直接把时序裕量吃掉了大半。
反射的根源只有一个:阻抗不匹配。信号在传输线上传播时,每遇到一个阻抗变化点,就会产生反射。反射系数Γ = (Zload - Z0) / (Zload + Z0)。当负载阻抗等于传输线特性阻抗时,反射系数为0,完美匹配;当负载开路(Zload = ∞),Γ = 1,信号全反射;当负载短路(Zload = 0),Γ = -1,信号反相反射。
核心结论:反射会导致过冲、下冲、振铃、台阶畸变。轻则影响时序,重则误触发逻辑,甚至损坏芯片IO。
3.1 反射产生的完整机理
信号在传输线上传播时,可以看作是一个电压波在向前推进。当它遇到阻抗变化点时,一部分能量继续向前(传输),一部分能量向后(反射)。反射波回到源端后,如果源端阻抗也不匹配,又会再次反射,形成来回震荡——这就是振铃的由来。
我记得有一次调试一个PCIe的参考时钟,发现时钟沿上有明显的振铃,幅度超过200mV。用TDR(时域反射计)一测,发现走线在BGA扇出区域有一段阻抗降到了40Ω,而设计目标是50Ω。那段走线只有不到300mil长,但反射叠加的效果已经足够让时钟抖动超标了。
反射的严重程度取决于三个因素:
- 阻抗失配程度:失配越大,反射系数绝对值越大
- 信号上升时间:上升沿越陡,反射的能量越集中
- 传输线长度:长度超过信号上升沿对应的电气长度时,反射问题才明显
这里有个经验法则:当走线长度超过信号上升沿对应的1/6波长时,就必须考虑反射问题。举个例子,一个上升时间为1ns的信号,在FR4板材上对应的波长大约为6英寸(15cm),1/6波长就是1英寸(2.5cm)。也就是说,只要走线超过2.5cm,你就得认真对待反射。
3.2 端接策略:从根源上解决反射
端接的本质,就是在传输线的源端或末端,人为加上一个与传输线特性阻抗匹配的电阻,把反射波吸收掉。常见的端接方式有四种:源端端接、并联端接、AC端接、戴维南端接。每种都有各自的适用场景和优缺点。
下面这张图展示了四种端接方式的结构和信号流向:
3.3 源端端接(串联端接)
源端端接是我个人用得最多的一种方式。它的做法很简单:在驱动器的输出端串联一个电阻Rs,使得Rs加上驱动器的输出阻抗Rout等于传输线的特性阻抗Z₀。这样,从传输线看回源端,阻抗是匹配的,二次反射就被消除了。
为什么只消除二次反射?因为信号从源端发出时,第一次到达负载端时仍然会有反射(如果负载端不匹配)。但这个反射波回到源端时,由于源端已经匹配,就被吸收掉了,不会再反射回去。所以源端端接只消除二次反射,不消除一次反射。
实战经验:源端端接的电阻值通常取10Ω~33Ω。我一般先按Rs = Z₀ - Rout估算,然后在实际板上用示波器观察波形,微调电阻值直到过冲最小。曾经在一个DDR4项目中,源端端接从22Ω换成27Ω后,地址信号的振铃幅度从400mV降到了80mV。
源端端接的优点很明显:功耗低(只有信号跳变时才有电流),只需要一个电阻,适合点到点连接。缺点是信号到达负载端之前只有半幅,需要负载端有反射来抬升到满幅,所以对负载端的输入阈值有要求。
3.4 并联端接
并联端接是在传输线的末端(负载端)对地接一个电阻Rt,Rt等于Z₀。这样负载端的阻抗就匹配了,一次反射直接被消除。信号到达负载端时,全部能量被吸收,没有反射波。
并联端接的效果是最好的——波形干净,没有过冲和振铃。但代价是功耗大:当信号为高电平时,Rt上一直有直流电流流过。比如3.3V的CMOS信号,Z₀=50Ω,Rt=50Ω,高电平时静态电流高达66mA,功耗220mW。这在低功耗设计中是难以接受的。
注意:并联端接会改变信号的直流电平。对于开路漏极/集电极开路的信号,并联端接可以起到上拉作用。但对于推挽输出的信号,并联端接会拉低高电平电压,需要确认是否满足接收端的VIH要求。
并联端接适合总线结构,比如DDR的地址/控制线,或者一些高速背板信号。我曾在SATA接口上用过并联端接,效果很好,但功耗确实让人头疼。
3.5 AC端接
AC端接是并联端接的改进版——在Rt和地之间串联一个电容C。电容隔断了直流路径,所以没有直流功耗。但对于高频信号,电容呈现低阻抗,Rt仍然起到匹配作用。
AC端接的优点是:既消除了反射,又没有直流功耗。缺点是:电容会引入时间常数τ = Rt × C,低频信号会被衰减。所以AC端接只适合高频信号,不适合低频或直流信号。
电容值怎么选?我一般按τ ≥ 10 × 信号周期来算。比如100MHz的时钟,周期10ns,τ ≥ 100ns,Rt=50Ω,则C ≥ 2nF。实际中常用0.1μF的电容,足够覆盖大多数高频信号。
避坑指南:我曾经在一个SGMII接口上用AC端接,结果发现信号眼图闭合严重。查了半天,原来是电容的ESR太大,导致高频时Rt的有效值偏离了50Ω。后来换成低ESR的X7R电容,问题解决。AC端接的电容一定要选高频特性好的。
3.6 戴维南端接
戴维南端接是用两个电阻R1和R2组成分压网络,分别接到VDD和GND。R1和R2的并联值等于Z₀,同时分压点提供偏置电压。这种端接方式既能匹配阻抗,又能设定信号的直流偏置电平。
戴维南端接特别适合那些需要特定共模电压的差分信号,或者一些特殊电平标准。比如LVDS信号,共模电压要求1.2V,就可以用戴维南端接来实现。
电阻值的计算:R1∥R2 = Z₀,同时Vbias = VDD × R2/(R1+R2)。解这两个方程就能得到R1和R2的值。
举个例子:VDD=3.3V,Z₀=50Ω,目标偏置1.5V。则R2/(R1+R2)=1.5/3.3≈0.455,R1∥R2=50Ω。解得R1≈110Ω,R2≈91Ω。
| 端接方式 | 匹配位置 | 功耗 | 适用场景 | 缺点 |
|---|---|---|---|---|
| 源端端接 | 源端 | 低 | 点到点,CMOS | 信号半幅,需负载反射 |
| 并联端接 | 末端 | 高 | 总线,高速信号 | 直流功耗大 |
| AC端接 | 末端 | 无直流 | 高频信号 | 低频衰减,需电容 |
| 戴维南端接 | 末端 | 高 | 差分信号,偏置需求 | 电阻多,功耗大 |
3.7 端接策略的选择原则
选哪种端接,没有标准答案。我一般按以下思路来:
- 先看拓扑:点到点优先源端端接,多负载总线优先末端端接
- 再看功耗:功耗敏感用源端或AC端接,不敏感用并联或戴维南
- 再看电平:需要偏置电压用戴维南,不需要用其他
- 最后看频率:低频信号避免AC端接,高频信号避免源端端接(因为半幅问题)
我的习惯:对于大多数CMOS点到点信号,我首选源端端接,电阻值取22Ω或33Ω。对于DDR总线,我习惯用并联端接(DDR3/DDR4的VTT端接)。对于高速差分信号,比如PCIe、SATA,直接用芯片内部的端接,外部不需要额外处理。
反射和端接是信号完整性的基本功。你想想看,一个简单的电阻就能解决大部分反射问题,但选错了位置或阻值,反而会让问题更糟。我建议你在做板子时,预留端接电阻的焊盘,哪怕仿真说不需要。这样调试时随时可以加上,省得飞线改板。