SDRAM, DDR, DDR2, DDR3是RAM技术发展的不同阶段, 对于嵌入式系统来说, SDRAM常用在低端, 对速率要求不高的场合, 而在DDR/DDR2/DDR3中,目前基本上已经以DDR2为主导,相信不久DDR3将全面取代DDR2, 关于DDR, DDR2, DDR3, 其原理这里不多介绍, 其典型差别就是在内部逻辑的"预存取"技术有所差别, 但是从外部接口之间的速率来看, 他们基本类似, 就是clock,strobe,data,address, control, command等,无论是DDR/DDR2/DDR3,他们的clock与data的理论频率是一致的, 及clock=266MHz, 则对应的data=266MHzMHz(这里可能有人反对, 觉得data应该等于533MHz, 其实它我们常说的533MHz的Bit Rate, 这里要注意一个周期是由'0'与'1'组成的, 我们在SI仿真时要注意了。)
DDR/DDR2/DDR3的Layout Guidelines通常具有下面的格式(只显示一部分,并且里面的参数参数参考)
本文结合Micron与Freescale的DesignGuidelines,详细介绍DDR2的layout方面需要注意的问题,从总体来看,就可以归纳为上面那张图所表现的形式。本文中关于lql-xxx为个人文章编号,无实际意义。另外,读者可以参阅本站的另外一篇文章DDR2 design checklist。
1. Micro建议
VSS为数字地,VSSQ为信号地,若无特别说明,两者是等效的。VDD为器件内核供电,VDDDQ为器件的DQ和I/O供电,若无特别说明,两者是等效的。本文内容可以和lql-003-DDR Designer Check list.doc配合使用,作为DDR设计原则指导资料。
对于DDR来说,定义信号组如下:
l 数字信号组DQ,DQS,DM,其中每个字节又是内部的一个信道Lane组,如DQ0~DQ7,DQS0, DM0为一个信号组。
l 地址信号组:ADDRESS
l 命令信号组:CAS#,RAS#,WE#
l 控制信号组:CS#,CKE
l 时钟信号组:CK,CK#
1.1印制电路板PCB Stackups
推荐使用6层电路板,分布如下:
图1
l 电路板的阻抗控制在50~60ohm
l 印制电路板的厚度选择为1.57mm(62mil)。
l 填充材料Prepreg厚度可变化范围是4~6mil。
l 电路板的填充材料的介电常数一般变化范围是3.6~4.5,它的数值随着频率,温度等因素变化。FR-4就是一种典型的介电材料,在100MHz时的平均介电常数为4.2。推荐使用FR-4作为PCB的填充材料,因为它便宜,更低的吸湿性能,更低的电导性。
一般来说,DQ,DQS和时钟信号线选择VSS作为参考平面,因为VSS比较稳定,不易受到干扰,地址/命令/控制信号线选择VDD作为参考平面,因为这些信号线本身就含有噪声。
1.2电路板的可扩展性
根据JEDEC标准,不同容量的内存芯片一般引脚兼容,为了实现电路板的可扩展性,如128Mb与256Mb的兼容应用, 只要它们是Pin to Pin,在设计时就可以实现两种Memrory的兼容性。
未用的DQ引脚:
对于x16的DDR器件来说,未用的引脚要作一定的处理。例如x16的DDR来说,DQ15:DQ8未用,则处理如下,将相关的UDM/DQMH拉高用来屏蔽DQ线,DQ15:DQ8通过1~10k的电阻接地用来阻止迸发写时的噪声。
1.3端接技术
串行端接,主要应用在负载DDR器件不大于4个的情况下。
l 对于双向I/O信号来说,例如DQ,串行端接电阻Rs放置在走线的中间,用来抑制振铃,过冲和下冲。
l 对于单向的信号来说,例如地址线,控制线,串行端接电阻放置在走线中间或者是信号的发送端,推荐放置在信号的发送端。
l 端接电阻值的取值范围如下图:
图3
说明:DDR的CK与CK# 是差分信号,要用差分端接技术。
并行端接,主要应用在负载SDRAM器件大于4个,走线长度>2inch,或者通过仿真验证需要并行端接的情况下。
l 并行端接电阻Rt取值大约为2Rs,Rs的取值范围是10~33ohm,故Rt的取值范围为22~66ohm。
图4
如果有必要的话,所有DDR的数据,地址,命令,控制线都是SSTL_2接口,DDR2的数据,地址,命令,控制线都是SSTL_18接口,要使用single-ended Parallel Termination,如上图。CKE也可以使用这种端接。
1.4 导线宽度和间距
导线间距和导线宽度S1,S2,S3的定义如下:
l S1表示同一信号组内两相邻导线之间的间距
l S2表示不同信号组之间两相邻导线之间的间距
l S3表示导线的宽度
图5
导线宽度选择为:
图6
导线间距选择:
图7
说明:1,DQS一般布线的位置是数据信号组内同一信号组中DQ走线的中间,因此DQS与DQS之间的间距一般不提。
2,DQS与时钟信号线不相邻。
3,为了避免串扰,数据信号组与地址/命令/控制信号组之间的走线间距至少20mil,建议它们在不同的信号层走线。
4,时钟信号组走线尽量在内层,用来抑制EMI。
1.5 导线走线长度
所有DDR的差分时钟线CK与CK#必须在同一层布线,误差+-20mil(+-10mil最好),最好在内层布线以抑制EMI。如果系统有多个DDR器件的话,要用阻值100~200ohm的电阻进行差分端接。
(1) 若时钟线的分叉点到DDR器件的走线长度<1000mil,要使用100~120ohm的差分端接,如下图:
图8
(2) 若时钟线的分叉点到DDR器件的走线长度>1000mil,要使用200~240ohm的电阻差分端接,因为两个200~240ohm的电阻并联值正好为100~120ohm。如下图所示。
图9
数据信号组的走线长度与时钟信号线的误差为+-500mil,组内同一信道的信号线走线误差为+-50mil(+-25mil)最好,从而可以得到,组内不同信道的走线误差为+-1000mil,相同信道的DQS一般走线在DQ中间。
地址线/命令/控制信号线与时钟信号走线的误差为+-400mil,组内走线误差为+-50mil
所有信号的走线长度控制在2inch(5cm)最好。
1.6 解耦电容
推荐使用低ESL(2nH)的电容,大小在0.01uF~0.22uF,其中0.01uF针对高频,0.22uF针对低频。
建议使用钽电容。相对于电解电容来说,虽然它比较贵,但它具有较好的稳定性,较长的使用周期。一般电解电容随着使用时间的加长,性能下降较多。
1.7 DDR的VREF
1.8 VREF Generator
对于较轻的负载(<4DDR器件),可使用下图的方法:
图11
对于较重的负载(>4 DDR器件),可使用IC来产生VREF。IC内部集成了两种电压VTT和VREF,其中VTT在重负载的情况下最高电流可达3.5A,平均电流为0A,VREF的电流比较小,一般只有3mA左右。
图12
1.9 VREF走线设计
图13
具体如下图所示:
图14
1.10 DDR/DDR2的VTT设计
当数据线地址线负载较重时,VTT的暂态电流峰值可达到3.5A左右,这种暂态电流的平均值为0A。一些情况下不需要VTT技术(并行端接):
l 系统中有2个或更少的DDR
l 总线上需要的电流不是很高,中等左右
l 通过仿真验证不需要
VTT电压的产生一般用IC,vendor包括
如果选用了IC Regulator,推荐使用下面的原则:
l VTT用Rt端接地址/控制/命令信号线,端接数据信号组VTT=VDDQ/2
l VTT并不端接时钟信号线,时钟信号线使用前面说的差分端接技术
l VTT与VREF走线/平面在同一层,必须具有150mil的距离,推荐它们在不同层
l VTT走线/平面需要至少2个4~7uF的解耦电容,2个100uF的电容。具体放置位置是VTT的两个端点(at each end)
l VTT表面走线宽度至少150mil,推荐250mil
l 上电时序:VTT开始上电必须在VDDQ之后,避免器件latch-up,推荐VTT和VREF同时上电。
l 如果走线要分支的话,建议使用T型分支。具体见下图。
图15
图16
以上部分主要是参考资料tn4614-Hardware Tips for Point-to-Point System Design Termination_Layout and Routing.pdf
2. Freescale 建议
2.1关于Signal Length Matching
信号长度匹配是关于时序特性的一个关键因素,DDR系统中的长度匹配要求如下图。
在该图中,Data strobe to clock 和 Address/command/control to clock的长度匹配没有给出确切的数值,在设计者无法仿真的情况下,具体数值可以参考本文在上面的描述。
2.2关于Clock Signal Group
具体的Layout Guide如下图,可以一目了然。
图18
图19
关于时钟信号的layout Guide,参见如18。在图18中,参数clock pair to clock pair matching意义在于系统有多个差分时钟,而且彼此来自于同一个时钟源,每一对差分时钟连接在不同的DDR器件上。同时需要注意的是,Series damping resistor的摆放位置(图18中黄色阴影部分)。为了更好的理解图18的一些参数,可以参考图19的示意图,这在实际的layout中长度匹配中常见,即使用蛇形走线来满足长度匹配,注意蛇形走线只起到长度匹配的作用,除此之外,蛇形走线没有任何好处,并且他在一定程度上影响信号质量和EMC。时钟差分线建议在同一层布线,参考GND。
2.3关于data信号线Data—MDQ, MDQS, MDM
DDR系统中,关于data信号的分组,这里不再介绍。Layout Guide见图20。
图20
由图20可知,DQS的信号频率在正常工作时,和时钟频率是一致的,因此,DQS和其他的非data Group的信号spacing要满足4W规则。
2.4关于Address and Command Layout Recommendations
在图21中,有一个限制,就是Addr/cmd信号和时钟信号的长度匹配,因为Addr/Cmd信号是在时钟的信号沿进行采样,因此他们之间的长度匹配对时序的影响比较重要,从图21中可以看出,Addr/cmd信号线的长度比时钟线短(两者之间相差容许长度Y,这个参数需要仿真验证),即信号先到达接收端,时钟后到达接收端,但是Micron推荐两者的误差在+-400mil,因此综合Freescale和Micron的观点,笔者认为+-400mil是比较常见的限制条件,如果条件允许的话,仿真也是需要验证的(其实就是废话,呵呵)。
图21
2.5 关于Control Signal Group
因为control信号也是在时钟的信号沿进行采样,因此他们之间的长度匹配对时序的影响也比较重要,从图22中可以看出,control信号线的layout策略可以和Addr/cmd信号的布线策略一致。
图22
2.6 关于DDR Power Delivery
DDR1需要2.5V(2.6V for DDR400)的电源,1.25V的Vref,1.25V的Vtt。DDR2需要1.8V的电源,0.9V的Vref,0.9V的Vtt。下图就是在实际一个系统中对DDR的power要求:
图23
在图23中,Itt这个参数要根据具体的情况(如端接的信号线数量,Rtt的取值等)而确定,图中所示数据仅作参考。
2.7 关于DDR VREF Voltage
Vref需求的电流是相当小的,小于3mA,但是Noise or deviation in the VREF voltage会引起时序误差,jitter以及一些不确定的行为。因此有必要使Vref的AC Noise保持在+-25mV以内。建议Vref和Vtt不要在同一层走线,如不可避免,要保证充足的间距,建议150mil。Vref的产生电路最简单的就是利用分压电阻,如图24所示:
图24
这部分的Layout Guide如图25所示:
图25
2.8关于DDR VTT Voltage Rail
DDR的VTT电流需求是很大的,平均电流为0A(理想化的),峰值电流可以达到3.5A,一般都在2A~3.5A,如一个端接了115个信号线的电流达到了2.7A。具体计算方法可以参阅lql-003和Reference-0005。VTT如果在表层走线至少150mil的宽度,Vtt的电容数量,电容值的大小,端接电阻的摆放等规则参见图26。
图26
关于Rtt以及滤波电容的摆放位置,可以参考图27,也可以参考实际的电脑主板内存插槽部分的摆放。图27中蓝色线围起来的部分就是一块Vtt的shape。