嵌入式DDR(Double Data Rate,双数据速率)设计是含DDR的嵌入式硬件设计中最重要和最核心的部分。随着嵌入式系统的处理能力越来越强大,实现的功能越来越多,系统的工作频率越来越高,DDR的工作频率也逐渐从最低的133 MHz提高到200 MHz,从而实现了更大的系统带宽和更好的性能。然而,更高的工作频率同时也对系统的稳定性提出了更高的要求,这需要硬件设计者对电路的布局走线有更多的约束和考虑。而影响整个系统能否工作正常且稳定的最重要的部分就是DDR部分的电路设计。
嵌入式系统使用DDR内存,可以在传统的单数据数率内存芯片上实现更好的性能。DDR允许在不增加时钟频率和数据位宽的条件下,一个时钟周期内能够处理两个操作。增加的数据总线性能是由于源同步数据选通允许数据同时在选通脉冲的上升沿和下降沿被获取。
DDR虽然能够给嵌入式设计带来更好的性能,但是设计者必须比以往的SDR设计更小心地处理DDR部分的PCB布线部分,否则不仅不能实现好的性能,整个嵌人式系统的稳定性也会受到影响。DDR比传统的SDR有更短的信号建立保持时间、更干净的参考电压、更紧密的走线匹配和新的I/O口信号,并且需要合适的终端电阻匹配。这些都是要面对的新的挑战。
1 DDR总线结构
对于DDR内存,JEDEC建立和采用了一个低压高速信号标准。这个标准称为“短截线串联终结逻辑(StubSeries Terminated Logic,SSTL)”。SSTL能够改进数据通过总线传输的信号完整性,这种终端设计的目的是防止在高速传输下由于信号反射导致的数据错误。
在一个典型的内存拓扑结构中,如果使用了串联匹配电阻(RS),那么它应该放在远离DDR控制器的位置。这种方法能够节约控制器附近宝贵的电路板空间,避免布线拥塞和繁琐的引脚扇出;而且也优化了从控制器到内存芯片的信号完整性,在这些位置往往有很多地址和命令信号需要可靠地被多个内存接收。
最普通的SSTL终端模型是一种较好的单终端和并联终端方案,如图1所示。这种方案包含使用一个串联终端电阻(Rs)从控制器到内存,以及一个并联终端电阻(RT)上拉到终端电压(VTT)。这种方法常见于商用电脑的主板上,但目前的嵌入式主板上为了获得更好的信号完整性和系统稳定性,也常常使用。RS和RT的值是信赖于具体的系统的,应该由板级仿真确定具体的值。
2 嵌入式DDR布线分析
2.1 DDR的信号完整性问题
高速总线信号的传输往往需要考虑信号完整性问题。DDR的信号线不是普通的信号线而是传输线,因而传输线上的过孔,或者连接器等不连续阻抗因素都会影响接收端的信号完整性。主要有过冲和下冲、振铃及串扰等影响,交流噪声以及直流电压的一些不准确因素也同样影响信号传输的性能。
DDR为了实现更高的信号频率,SSTL高增益差分接收器的接收电平往往是偏置在参考电平(VREF)附近,使用这样的接收器允许更小的电压摆幅、更少的信号反射、更低的电磁干扰和更短的建立时间,比LVTTL能适应更高的时钟频率。图2所示的是SSTL接口电平。交流逻辑电平是在接收器端的接收电平,在接收器处交流逻辑参数(包括建立和保持时间)都必须最佳,而直流逻辑电平则提供一个滞后的接收电平点。当输入电平穿过DC直流参考点时,接收器转变到新的逻辑电平并且保持这个新的状态,只要信号不低于门限电平。因此,SSTL总线不易于受过冲、下冲和振铃的影响。
2.2 基于布线考虑的DDR信号分组
DDR控制器包括超过130个信号,并且提供直接的信号接口连接内存子系统。这些信号根据信号的种类可以分为不同的信号组,如表1所列。
其中,数据组的分组应该以每个字节通道来划分,DM0、DQS0以及DQ0~DQ7为第1字节通道,DM1、DQS1以及DQ8~DQ15为第2字节通道,以此类推。每个字节通道内有严格的长度匹配关系。其他信号走线长度应按照组为单位来进行匹配,每组内信号长度差应该严格控制在一定范围内。不同组的信号间虽然不像组内信号那样要求严格,但不同组长度差同样也有一定要求。具体布线要求见2.4小节。
2.3 信号组布线顺序
为了确保DDR接口最优化,DDR的布线应该按照如下的顺序进行:功率、电阻网络中的pin脚交换、数据信号线布线、地址/命令信号布线、控制信号布线、时钟信号布线、反馈信号布线。
数据信号组的布线优先级是所有信号组中最高的,因为它工作在2倍时钟频率下,它的信号完整性要求是最高的。另外,数据信号组是所有这些信号组中占最大部分内存总线位宽的部分,也是最主要的走线长度匹配有要求的信号组。
地址、命令、控制和数据信号组都与时钟的走线有关。因此,系统中有效的时钟走线长度应该满足多种关系。设计者应该建立系统时序的综合考虑,以确保所有这些关系都能够被满足。
2.4 各组信号布线长度匹配
时钟信号:以地平面为参考,给整个时钟回路的走线提供一个完整的地平面,给回路电流提供一个低阻抗的路径。由于是差分时钟信号,在走线前应预先设计好线宽线距,计算好差分阻抗,再按照这种约束来进行布线。所有的DDR差分时钟信号都必须在关键平面上走线,尽量避免层到层的转换。线宽和差分间距需要参考DDR控制器的实施细则,信号线的单线阻抗应控制在50~60 Ω,差分阻抗控制在100~120 Ω。时钟信号到其他信号应保持在20 mil*以上的距离来防止对其他信号的干扰。蛇形走线的间距不应小于20 mil。串联终端电阻RS值在15~33Ω,可选的并联终端电阻RT值在25~68 Ω,具体设定的阻值还是应该依据信号完整性仿真的结果。
数据信号组:以地平面为参考,给信号回路提供完整的地平面。特征阻抗控制在50~60 Ω。线宽要求参考实施细则。与其他非DDR信号间距至少隔离20 mil。长度匹配按字节通道为单位进行设置,每字节通道内数据信号DQ、数据选通DQS和数据屏蔽信号DM长度差应控制在±25 mil内(非常重要),不同字节通道的信号长度差应控制在1 000 mil内。与相匹配的DM和DQS串联匹配电阻RS值为0~33 Ω,并联匹配终端电阻RT值为25~68Ω。如果使用电阻排的方式匹配,则数据电阻排内不应有其他DDR信号。
地址和命令信号组:保持完整的地和电源平面。特征阻抗控制在50~60 Ω。信号线宽参考具体设计实施细则。信号组与其他非DDR信号间距至少保持在20 mil以上。组内信号应该与DDR时钟线长度匹配,差距至少控制在25 mil内。串联匹配电阻RS值为O~33 Ω,并联匹配电阻RT值应该在25~68 Ω。本组内的信号不要和数据信号组在同一个电阻排内。
控制信号组:控制信号组的信号最少,只有时钟使能和片选两种信号。仍需要有一个完整的地平面和电源平面作参考。串联匹配电阻RS值为O~33 Ω,并联匹配终端电阻RT值为25~68 Ω。为了防止串扰,本组内信号同样也不能和数据信号在同一个电阻排内。
2.5 电源部分的设计分析
通常情况下,DDR供电电压是2.3~2.7 V,典型值是2.5 V,工作频率的不同可能引起正常工作电压的不同。参考电压VREF是1.13~1.38 V,典型值是1.25 V。VTT以VREF为参考,电压范围是(VREF-0.4 V)-(VREF+0.4 V)。由于VREF只是给差分接收器端提供一个直流参考电平,所以电流比较小,最大只有3 mA。VTT的电流由于上拉的缘故,在输出端输出高电平时,VTT应能流入电流;在输出端输出低电平时VTT电流输出。故VTT必须能同时有流入和流出电流,电流的大小依赖于总线上同时出现的电位状态,从常用的设计来看最大可以从2.3 A到3.2 A。
由于VREF电压作为其他信号接收端的重要参考,故它的布线设计也是十分重要的。叠加在VREF电压的串扰或噪声能直接导致内存总线发生潜在的时序错误、抖动和漂移。很多电源芯片会把VREF和VTT从同一源输出,但是由于使用的目的不同,走线也完全不同。VREF最好和VTT在不同平面,以免VTT产生的噪声干扰VREF。而且无论是在DDR控制器端还是DDR存储器端,VREF脚附近都应放置去耦电容,消除高频噪声。VREF的走线宽度应该越宽越好,最好为20~25 mil。
VTT电源应该单独划分一块平面来供应电流,且最好放在DDR存储器端。如果并联终端匹配使用排阻的方式上拉,那么最好每个排阻都添加一个0.1 μF或0.01μF的去耦电容,这对于改善信号的完整性、提高DDR总线的稳定性都有很好的效果。
结 语
在带有DDR的嵌入式系统主板中,设计PCB最难的部分莫过于DDR的走线设计。好的走线就等于有了好的信号完整性和好的时序匹配,总线在高速输入/输出数据过程中就不会出错,甚至能够有更好的抗串扰和EMC能力。DDR总线并行传输且速率较高,在设计过程中如果没有按照严格的约束进行布线,在设备后期调试过程中,将会出现各种各样异常问题,甚至是系统根本无法启动。而这些问题在查找和调试中很难发现,以至于无法完成硬件的开发。最好的方法就是在设计时就充分考虑信号完整性和时序匹配的问题,在走线时就把这些规则运用进去;如果有条件,可以做一下仿真,预先验证一下设计。这样做出来的设计,系统的稳定性和可靠性才会更高。
技术专区
- Linux下spi驱动技术分析
- CY8C20xx6A的主机源串行编程
- Android系统内核移植流程详解
- 学习HTML和CSS的5大理由
- RX100系列微控制器可以轻松实现高性价比和超低功耗的应用