DDR的拓扑结构选择也是一个老生常谈的话题了,从最初只能采用T拓扑到支持读写平衡的Fly-by拓扑,设计似乎变得越来越简单了。大家来看这样一种情况,一个驱动拖动两片DDR颗粒,芯片支持读写平衡,您一般会选择什么拓扑结构呢?我想,这个应该和个人的设计习惯有关,或者选择T拓扑,或者选择Fly-by,没有标准答案。但是作者最近遇到的一个项目,一个主控拖动两个DDR颗粒,采用Fly-by结构,信号质量就不稳定,小批量量产总有几块板子DDR不能正常工作,仿真发现DDR信号质量并不是很理想,修改拓扑结构后,DDR运行变得稳定,具体什么情况呢?
该主板上有一块FPGA和一块DSP,FPGA驱动的DDR3没有问题,但是DSP驱动的DDR不稳定,我们仔细进行了查板工作,该主板上DSP与FPGA都是采用Fly-by拓扑结构,DDR颗粒也都支持读写平衡,如下图1所示,从布线上来看,设计并无不妥。
FPGA和DSP作为驱动时,仿真发现,两者的波形还是存在较大差异的,如下图所示:
由图2可知,该主板上FPGA的驱动能力明显好于DSP,DSP不仅驱动能力比较弱而且信号的过冲还很严重,信号的裕量非常的小。
怎样去改善信号质量呢?芯片的驱动能力是有限的,没有太大调整空间,但既然选择了这款芯片,也不能轻易的改变,只能从布线上作调整,希望可以提高信号裕量,于是,作者想到了使用T拓扑结构,修改后的拓扑结构如下图3所示:
经过仿真分析,将Fly-by拓扑变成T拓扑之后,信号质量明显好了很多,如下图所示,红色波形代表的是采用Fly-by拓扑时信号的波形,绿色波形代表的是采用T拓扑时,仿真得到的波形。相比于采用Fly-by拓扑,T拓扑得到的波形过冲更小。
修改拓扑结构,实际打板,再次小批量量产,该主板DSP驱动DDR不稳定的现象没有了。
看来在颗粒数目比较小的情况下,T拓扑还是具有一定的优势的,因为T拓扑是完全对称的,在完全等臂分支的情况下,两个接收端感受到的反射也是一样的,可以相互抵消一部分,从而抑制信号过冲。
总结:
(1) DDR的拓扑结构选择还要考虑芯片的驱动能力,同样的拓扑结构,不同的芯片驱动得到不同的信号质量,所以拓扑结构的设计也不是一劳永逸的,最好做一下仿真验证,评估设计风险。
(2) 颗粒比较少情况(少于4片),建议使用T拓扑;相对于Fly-by,T拓扑会使信号的过冲更小,信号质量更稳定。