Altium/Protel论坛 |  PADS论坛 |  Cadence Allegro论坛 | 

DDR4内存布线规范:为什么Fly-by是标配

年经手过一个DDR4的设计返修。板子用的是4片DDR4颗粒,布线时直接套了DDR3的老方案,走了T型分支拓扑。分支出线长度控制得很仔细,每根都做到了50mil以内。单板调试一切正常。

但一上量就不行了。30%的板子在热机状态(65°C以上)出现偶发性的比特错误,示波器抓到的眼图惨不忍睹——眼高只勉强摸到0.55VDDQ,按JEDEC标准至少要0.7 VDDQ。折腾了两周,最后发现根因就是T型分支在高频下产生的信号反射,把时钟抖动从设计预算的12ps直接干到了60ps以上。

这个案例说明:DDR4时代,T型分支已经跑不动了。Fly-by拓扑才是正确的选择!

 

T型分支为什么不行?

T型拓扑的结构像一棵树:信号从控制器出来,在分支节点一分为二(或一分为四),同时送到各个DDR颗粒。DDR2时代这么用没问题,因为频率低、周期宽。但到了DDR4,时钟周期只有0.625ns。在这个时间尺度上,分支节点就是一个灾难。

问题一:分支节点产生阻抗突变

信号从一根50Ω单端线进入分支节点时,遇到的是并联的两根线。分支节点处的等效阻抗从50Ω骤降到25Ω左右。根据反射系数公式

 

ZL是负载阻抗,Z0是源阻抗。当ZL=25Ω、Z0=50Ω时,Γ=-(25/75)≈-0.33。也就是说33%的信号能量被反射回源端。还有就是——反射波到达控制器后再弹回来,在走线里来回震荡,形成码间干扰(ISI)。实测数据显示,DDR4T型分支引入的额外抖动(Tj)超过1.8UI,足以让眼图直接闭合。

问题二:分支长度差异导致时序偏移

电信号在FR-4板材上的传播速度大约是光速的60%,即18cm/ns。

两条分支线差10mm,信号到达时间就差55ps——这在DDR2的2.5ns周期里只占2%不算什么,但在DDR4-3200的0.625ns周期里就是接近9%的偏移。控制器采样的窗口总共也就0.3UI左右,光这一项就把裕量吃掉一大块。

超过2000MHz之后,分支节点产生的反射波会和原始信号叠加,造成波形畸变。这个问题在设计阶段不好排查——因为信号完整性问题很多时候只在特定温度和电压组合下才暴露,就像我开头那个案例一样。

Fly-by:用物理结构解决物理问题

 

 

Fly-by拓扑的思路是:不搞分叉了,信号沿着一条线依次经过各个DRAM颗粒,在最后一个颗粒的末端接一个终端匹配电阻
       这解决了两个根本性问题。第一个是阻抗连续——整条路径没有分支节点,阻抗从控制器到末端保持40Ω不变(这是DDR4单端线的标准阻抗)。第二个是信号反射——末端端接电阻吸收掉信号能量,反射波基本没了。之所以说"基本",是因为每个DRAM颗粒的焊盘本身就是微小的阻抗不连续点,但Fly-by拓扑要求这些分支线(Stub)长度控制在50mil(1.27mm)以内,对信号完整性的影响可以忽略不计。

当然也是有代价的:信号到达各个颗粒的时间不一样了。Fly-by本质上是一条菊花链,第一个颗粒先收到信号,最后一个颗粒后收到。如果不做处理,时钟和数据错位得一塌糊涂。但DDR3时代引入的Write Leveling(写入均衡)技术解决了这个问题。

Write Leveling的原理不复杂:初始化时,控制器逐个向DRAM颗粒发送DQS信号,各颗粒把DQS到达时间与内部时钟做比较并反馈给控制器。控制器拿到这个偏移量后,在每次写操作时对每个颗粒单独调整DQS的发送时序。这样一来,物理上的到达时间差被逻辑层面的时序补偿消化掉了。

T型分支在DDR2时代是主流方案没错,但频率翻了几倍之后,分支节点的物理缺陷——阻抗突变和信号反射——已经不是靠"精细布线"能弥补的了。Fly-by拓扑配合Write Leveling,把物理层的信号完整性问题和逻辑层的时序问题分开处理,这才是DDR4的正确打开方式。

做设计的时候,别偷懒拿DDR3的老方案直接套。规范变了就是变了,JEDEC标准白纸黑字写在那,FPGA和SoC厂商的应用笔记也给了详细的规则。花点时间建一套DDR4的布线规则模板,以后做项目能省不少返修板费。
 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.dodopcb.com/ziyuan/277.html