4. 反射与端接:信号完整性的核心战场

大家好,我是你们的SI讲师。今天我们来聊聊反射与端接。说实话,这是信号完整性里最基础、也最容易被忽视的问题。很多工程师觉得反射嘛,不就是阻抗不匹配嘛,加个电阻就完事了。但实际项目中,我见过太多因为端接选择不当导致的“灵异现象”——信号明明仿真没问题,一上板就乱跳。

反射的本质是什么?说白了,就是信号在传输过程中遇到了阻抗突变,一部分能量被弹了回来。你想想看,就像水波撞到石头,会反弹一样。这个反弹的信号会和原始信号叠加,造成过冲、下冲、振铃,严重时直接导致逻辑误判。

核心公式(记牢它):

反射系数 Γ = (ZL - Z0) / (ZL + Z0)

其中 ZL 是负载阻抗,Z0 是传输线特性阻抗。Γ 越接近0,反射越小。

4.1 反射产生的机理:不只是阻抗不匹配

反射的产生,其实有三个层次的原因。我习惯这么跟团队里的新人讲:

  • 第一层:阻抗不连续——这是最常见的。比如走线从50Ω突然变到80Ω,或者过孔、连接器、焊盘这些“不速之客”。
  • 第二层:走线分支与桩线——很多新手喜欢在高速线上加T型分支,结果反射得一塌糊涂。我有个项目,DDR3的地址线加了分支,结果眼图直接闭合。后来改成菊花链,问题才解决。
  • 第三层:返回路径不连续——这个容易被忽略。比如跨分割、参考层挖空,电流回不去,反射就来了。

嗯,这里要注意:反射不是瞬间完成的。信号在传输线上来回反弹,需要时间。如果传输线很短(比如小于信号上升沿的1/6),反射还没形成就被吸收了,这时候可以忽略。但服务器芯片的走线动辄几英寸,反射必须认真对待。

4.2 源端端接 vs 末端端接:位置决定一切

端接放在哪里,效果天差地别。我给大家总结一下:

端接类型 位置 原理 适用场景
源端端接 驱动端(发送端) 串联电阻,吸收驱动器的输出阻抗,使源端阻抗与传输线匹配 点对点、单向信号(如时钟、地址线)
末端端接 接收端(负载端) 并联电阻到GND或VTT,吸收到达终端的能量 多点负载、双向总线(如DDR数据线)

我个人习惯是:能末端端接就末端端接。为什么?因为源端端接虽然省电,但它只解决了驱动端的反射,接收端的反射还是存在。末端端接直接把能量吃掉,干净利落。

但末端端接也有缺点——功耗大。尤其是并联到GND的电阻,一直有直流电流流过。所以服务器芯片里,很多DDR接口用ODT(片上端接),动态开关,既保证信号质量又省电。

4.3 串联端接 vs 并联端接:两种思路

串联端接,就是源端串一个电阻。阻值怎么选?我教大家一个经验公式:

R_series = Z0 - R_driver

其中 R_driver 是驱动器的输出阻抗。比如Z0=50Ω,驱动器输出阻抗20Ω,那串30Ω就差不多了。但注意,这个值不是死的。我在一个PCIe Gen4项目中,仿真发现串22Ω效果最好,比理论值小了8Ω。为什么?因为封装寄生参数和PCB走线损耗改变了等效阻抗。所以,仿真验证不可少

并联端接,常见的有两种:

  • 上拉到VTT:比如DDR的VTT=0.5V,并联49.9Ω到VTT。优点是信号摆幅对称,缺点是VTT电源要稳。
  • 下拉到GND:简单粗暴,但会拉低高电平,噪声容限变差。我一般不推荐。

避坑指南:我曾经在一个项目里,为了省一颗电阻,把并联端接改成了串联端接。结果信号上升沿变缓,时序裕量不够。后来老老实实加回去,眼图才打开。所以,不要为了省成本牺牲信号质量,尤其是服务器芯片这种高可靠性场景。

4.4 AC端接与戴维南端接:进阶玩法

AC端接,说白了就是并联端接加个电容。为什么加电容?为了隔直流。有些信号(比如时钟)是交流耦合的,直流偏置由接收端自己决定。这时候用AC端接,既能吸收反射,又不影响直流电平。

AC端接的典型电路:

信号线 —— 电阻(比如50Ω) —— 电容(比如0.1μF) —— GND

电容的取值有讲究。时间常数 τ = R × C 要远大于信号的周期。比如100MHz时钟,周期10ns,τ至少100ns,那C至少2nF。我一般取0.1μF,留足余量。

戴维南端接,就是两个电阻分压。一个上拉到VTT,一个下拉到GND。等效阻抗是两者的并联值,等效电压是分压值。比如上拉50Ω到1.5V,下拉50Ω到GND,等效阻抗25Ω,等效电压0.75V。

戴维南端接的好处是:不需要额外的VTT电源。但缺点也很明显——功耗大,两个电阻一直有电流。而且等效阻抗低,对驱动器的驱动能力要求高。我在DDR2时代用过,后来DDR3/4都用ODT了,戴维南端接就很少见了。

重要提醒:戴维南端接的两个电阻必须精确匹配。我曾经见过一个案例,上拉电阻47Ω,下拉53Ω,结果等效电压偏了0.1V,接收端的阈值判断出错。所以,电阻精度至少1%,最好0.5%

4.5 实战选择:到底用哪种端接?

我给大家一个决策流程,是我多年总结的:

  1. 先看拓扑:点对点?多点?双向?单向?
  2. 再看频率:低于100MHz?源端端接可能够用。高于1GHz?末端端接是必须的。
  3. 再看功耗:功耗敏感?用串联端接或ODT。功耗不敏感?用并联端接。
  4. 最后看成本:电阻电容都是钱。能集成到芯片里(如ODT)最好,省PCB面积。

举个例子:服务器CPU和内存之间的DDR5数据线。频率高(6400MT/s)、双向传输、多点负载(多个DIMM)。这时候只能用ODT,动态调整端接值。源端端接?不行,因为双向信号,源端和末端随时互换。并联端接?功耗太大,而且每个颗粒都要加电阻,PCB放不下。

好了,反射与端接就讲到这里。记住一句话:端接不是万能的,但没有端接是万万不能的。下一章我们讲串扰,那又是另一个头疼的问题了。