- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
DDR2 SDRAM介绍及其基于MPC8548 CPU的硬件设计(08-100)
DDR2 SDRAM引入的新技术
DDR2(Double Data Rate 2,两倍数据速率,版本2) SDRAM,是由JEDEC标准组织开发的基于DDR SDRAM的升级存储技术。 相对于DDR SDRAM,虽然其仍然保持了一个时钟周期完成两次数据传输的特性,但DDR2 SDRAM在数据传输率、延时、功耗等方面都有了显著提高,而这些性能的提高,主要来源于以下技术的提升:ODT,Post CAS,4n数据预取,封装等。
* ODT
ODT(On-Die Termination),即芯片内部匹配终结。
在DDR SDRAM应用中,需要通过大量的外部电阻上拉到VTT电平(1.25V)以实现信号匹配,以16位芯片为例,以下信号需要通过这种方式进行匹配:CK,CK#,DQ[15:0],LDQS,UDQS, ADDR[10:0],RAS#,CAS#,WE#,即一片芯片需要34个外部上拉电阻,极大的占用了宝贵的PCB面积。同时,由于DQ[15:0],LDQS,UDQS等信号是双向信号,即读和写时,对匹配电阻的位置有不同要求,因此在电阻布局时很难在两个方向上同时实现最佳的信号完整性。
在DDR2 SDRAM中,采用ODT技术将许多外部的匹配电阻移到芯片内部从而节省了大量的PCB板上面积。另外,ODT技术允许存储控制器(如下文的MPC8548 CPU)通过配置DDR2 SDRAM的内部寄存器以及控制ODT信号,来实现对匹配电阻的值及其开关状态进行控制,从而可以实现读,写操作时最佳的信号完整性。
图1 ODT功能图
DDR2 SDRAM芯片提供一个ODT引脚来控制开或关芯片内部的终结电阻。在只有一个DDR2 SDRAM芯片作为存储器控制器的负载的情况下,写操作时,由于DDR2 SDRAM作为接收端,所以ODT引脚为高电平以打开芯片内部终结电阻;读操作时,由于DDR2 SDRAM作为发送端,所以ODT引脚为低电平以关闭芯片内部终结电阻。其中,ODT引脚的状态由存储器控制器(如MPC8548)来控制。
[p]ODT终端电阻值RTT可以通过DDR2 SDRAM内部的EMR寄存器来设定:首先配置EMR[15:14]=01来选定该寄存器工作于EMR(扩展模式寄存器)模式,然后通过EMR[6]和EMR[2]两位来设置内部RTT的值,允许选择为RTT关闭,75欧姆,150欧姆,50欧姆这四种模式。以选择75欧姆这种模式为例,图1中,DQ引脚内部的上拉电阻和下拉电阻将配置为150欧姆。
需要注意,DDR2 SDRAM的ODT技术,只是对DQ,DQS,DM这些信号(在选择了差分DQS的情况下,也包括DQS#信号)实现了内部匹配。而地址和控制信号等仍需要通过外部匹配。
* Posted CAS
以读DDR2 SDRAM为例。
图2 多块数据读取时的间隙问题
DDR2 SDRAM和DDR SDRAM一样,是通过Bank(块地址),Row(行地址)和Column(列地址)三者结合实现寻址。每一次对DDR2 SDRAM的操作,都以ACTIVE命令(图2的ACT命令,通过有效#RAS信号实现)开始,在发出该命令的同时,通过地址信号线发出本次操作的Bank和Row地址,此后等待tRCD时间后,发起READ/AUTO PRECHARGE命令(图2 的RD AP命令,通过有效#CAS信号实现),该命令的作用是发出读取命令,同时通过地址信号线发出本次操作的Column地址。最后,等待CAS Latency时间之后,数据即通过数据总线输出。
由于DDR2 SDRAM的存储空间相对DDR SDRAM有所增加,因此Bank数目也有所增加。例如,DDR SDRAM单片最大容量为1Gbit,Bank数目是4,而DDR2 SDRAM单片最大容量为2Gbit,Bank数目达到了8。DDR SDRAM的Bank数目最少是2,而DDR2 SDRAM的Bank数目最少是4。为了提高性能,经常需要在一个Bank的操作完成之前插入对下一个Bank的操作。如图2,在发出对Bank0的ACT命令之后,无需等待对应的RD AP命令发出,只用满足tRRD时间要求,即可发出对另一个Bank的ACT命令。
按照这种工作模式,从图2中可以发现,对Bank2的ACT命令实际上延迟了一个时钟周期,该命令本来应该在RD AP(Bank 0)的位置出现,但由于RD AP(Bank 0)命令已经出现在该时钟周期(占用了地址总线,以发出Column地址),从硬件信号上来说,即在这个周期已经使能了CAS#信号,所以无法使能对应另一个Bank的RAS#信号,因此只能延时一个时钟周期。其结果是,本来应该是流水线式的数据输出流被打断,Bank1的数据输出后,需要等待一个时钟周期,Bank2的数据才得到输出。数据流间隙的出现,将影响芯片的性能。
[p]针对这个问题,DDR2 SDRAM做了改进。DDR2 SDRAM允许RD AP命令提前发出,甚至可以紧跟ACT命令发出,但是要等待一个Additive Latency(即AL,附加延时)后,该RD AP命令才能执行。如图3所示。
图3 引入附加延迟AL的DDR2 SDRAM读取模式【1】
在图3中,AL设置为tRCD-1,此时,可以实现ACT和RD AP命令背靠背的发出,只不过,DDR2 SDRAM需要抑制RD AP命令,直到AL延时满足后才能执行。
图4 引入AL后的多Bank数据读取
如图4,引入AL并设置AL为tRCD-1后,对于多个Bank数据读取,输出数据流之间不再出现间隙。
这种为了避免ACT命令和RD AP命令冲突而提出的技术就叫做Posted CAS技术。其本质就是将CAS#信号的使能时间段(即RD AP命令)直接插入到紧跟RAS#信号的使能时间段(即ACT命令)之后,虽然读和写操作并没有得到提前,总的延迟时间也没有发生改变,但引入这种技术后,可以避免在多Bank操作中的一个Bank的CAS#信号和其他Bank的RAS#信号发生冲突,从而提高了存储芯片的使用效率。
可以通过配置DDR2 SDRAM芯片内部的EMR寄存器的第3~5位,将附加延时AL配置为0~5个时钟周期。
[p]* 4n数据预取
DDR SDRAM的数据预取能力是2,即芯片内部能以2倍于时钟运行的速度预取数据,从而使得芯片内核工作频率仅需要为外部数据传输率的一半。DDR2 SDRAM的数据预取能力是4,即芯片内核工作频率仅需要为外部数据传输率的1/4。而对于SDRAM,芯片内核工作频率等于外部数据传输速率。所以在同样的内核频率下,DDR SDRAM的数据传输速率比SDRAM高一倍,而DDR2 SDRAM的数据传输率比DDR SDRAM又高一倍。
例如,DDR2和DDR1 SDRAM的外部数据传输率都为400Mb/s的情况下,对于DDR2 SDRAM而言,其内核工作频率仅需要为100MHz,而对于DDR SDRAM,其内核工作频率需要为200MHz,如果是SDRAM,则其内核频率要求为400MHz,正是因为如此高的内核频率无法在技术上实现,因而SDRAM的数据传输率无法达到400Mb/s。
利用这项技术,DDR2 SDRAM可以在不提高内核工作频率的前提下(即无需对芯片做大的技术革新),大大提高外部数据传输速率,从而获得更高的性能。值得提及的是,目前正在研发的DDR3 SDRAM技术,其数据传输率比DDR2 SDRAM又有大幅度提高,其并不是源于技术上的巨大变革,而是因为采用了8n数据预取技术。
根据数据传输速率的不同,DDR SDRAM有如下系列:266Mb/s,333Mb/s, 400Mb/s,而DDR2 SDRAM有如下系列:400Mb/s,533Mb/s, 667Mb/s,800Mb/s, 1066Mb/s。可以看出,DDR2 SDRAM直接从DDR SDRAM的最高的数据传输率起步,最高可以达到1066Mb/s以上,该性能的大幅提升,正是利用了这种4倍数据预取技术。
图5提供了DDR SDRAM和DDR2 SDRAM的数据预取框图以便比较。
图5 16位存储芯片的数据预取框图
* 差分DQS/DQS#信号
DDR SDRAM采用单端DQS信号。
如前文所述,目前广泛应用的DDR2 SDRAM,数据传输率最高已经达到1066Mbit/s,即DQS和DQ的变化率都将达到一秒钟1066M次,其中,DQS作为数据信号DQ的采样参考源,如果采用单端信号已经不足以保证其在高速变化时的信号完整性。
[p]采用差分DQS/DQS#信号,其优势在于:减少信号间串扰的影响,减少DQS输出脉宽对工作电压和温度稳定性的依赖等。因而,建议在使用数据传输率为533Mb/s以上的DDR2 SDRAM系列时,尽量采用差分DQS/DQS#信号。
使能差分DQS信号是通过设置DDR2 SDRAM的EMR寄存器的第10位为0来实现。
* 功耗和封装
DDR SDRAM的电平常用SSTL-2,即信号引脚是利用2.5V电源供电,而DDR2 SDRAM则采用SSTL-18电平,即信号引脚是利用1.8V电源供电。在相同存储容量和相同数据传输率的情况下,DDR2 SDRAM将有更低的功耗。
DDR SDRAM的封装种类有:66引脚的TSOP封装,60引脚的FBGA封装。由于DDR SDRAM的数据传输率不是特别高,因此TSOP封装能较好的工作在这种频率上。而DDR2 SDRAM的最高数据传输率已经达到1066Mb/s,在高频下,TSOP封装的过长的引脚将产生很高的感抗和寄生电容,严重影响芯片工作的稳定性。
DDR2 SDRAM直接采用FBGA封装,基于其良好的电气性能和散热性,保证了芯片在高速工作下的稳定性。
由于DDR2 SDRAM有4位,8位,16位(芯片的DQ引脚的数目,16位表示芯片有16根DQ引脚)三种不同系列,因而无法采用统一引脚数目的封装。目前,4位和8位的芯片采用60或者68引脚的FBGA封装,16位的芯片采用92或者84引脚的FBGA封装。
* OCD
OCD(Off-Chip Driver)即离线驱动调整技术。这是DDR2 SDRAM刚问世时开发的技术,而目前的DDR2 SDRAM芯片已不再支持该技术【2】,因此不再详述。
基于MPC8548 CPU的应用
MPC8548是Freescale公司开发的新一代PowerQUICC III系列的高性能处理器。其内部工作频率可达1.33GHz,在该工作频率上处理性能可达3065 MIPS。一级缓存有指令缓存和数据缓存各32KB,二级缓存为512KB,支持DDR1和DDR2存储器控制器,支持PCI,PCI-X和PCI Express接口,支持SRapid IO接口,支持4个GbE接口。本文将重点讨论基于MPC8548的DDR2 SDRAM接口的硬件设计。
MPC8548最高支持667Mb/s数据传输率的DDR2 SDRAM。因此选型中需要注意不能选用800Mb/s和1066Mb/s系列的芯片。本设计中选用667Mb/s数据传输率的DDR2 SDRAM的DIMM(Dual-Inline-Menory-Modules,双列内存条)内存条,每个内存条上包含9片8位的DDR2 SDRAM 芯片,组成64位数据线和8位ECC(Error Checking and Correcting,错误检查和纠正)校验线的工作方式。
[p]DDR2 SDRAM接口的信号线分为4组,以下以MPC8548命名方式为准,命名和DDR2 SDRAM芯片资料的区别在于信号名之前多一个字母”M”【7】:
1) 数据组:MDQS/MDQS#[8:0], MDM[8:0], MDQ[63:0], MECC[7:0]
2) 地址组:MBA[2:0], MA[15:0], MRAS#, MCAS#, MWE#
3) 命令组:MCS#[3:0], MCKE[3:0], MODT[3:0]
4) 时钟组:MCK/MCK#[5:0]
PCB设计时,建议布线顺序依次为:数据组,地址组,控制组,时钟组,电源。
对于单端信号线,阻抗控制在50~60欧姆内。对于差分信号线,阻抗控制在100~120欧姆内。
如果使能了ODT功能,数据组无需外部匹配电阻,走线直接从MPC8548连接到内存条即可。而地址组和命令组需要在内存条末端利用外部电阻RTT上拉到VTT电平实现匹配,电阻值需要经过仿真确定。如图6,考虑到最佳的信号完整性,RTT应该放在内存条之后,即地址/命令组信号走线从MPC8548出来,应该先到内存条的引脚,然后再走到RTT电源平面实现终端匹配。对于时钟组,一般而言,内存条上都包含了100~120欧姆的差分终端电阻,所以在PCB上无需外加匹配。
图6 MPC8548和DDR2 SDRAM内存条硬件接口设计
由于本设计采用8位的DDR2 SDRAM芯片,因此,对数据组可以分为9个小组:MDQS/MDQS#[0],MDQ[7:0],MDM0为第一组;MDQS/MDQS#[1], MDQ[15:8],MDM1为第二组;依次类推;MDQS/MDQS#[8],MECC[7:0],MDM8为第九组。对这九小组数据线,要求各小组之内,走线在同一层并拥有相同数目的过孔,走线长度差异控制在20mil之内,所有的信号线走线必须以完整的地层作为参考。不同小组之间,走线长度差异控制在500mil之内。对每一小组,小组内的8根MDQS信号线的线序可以根据走线方便的目的进行调整。需要注意,在本设计中,采用的内存条上的存储芯片是8位的(即内存条上每片DDR SDRAM芯片有8根DQ数据线),因此每8位MDQ信号归为一个小组,市场上还有许多4位,16位的内存条,如果需要兼容这些内存条,硬件设计中需要注意应该以每4位MDQ信号归为一个小组。数据组的信号线和其他组的信号线间距要求在25mil以上,数据组内信号线间距要求在10mil以上。对于差分的MDQS和MDQS#信号,走线长度差异应该控制在10mil之内。
对地址/命令组,该组内信号线长度差异应控制在100mil之内。走线以1.8V电源平面或完整的地层作为参考层。走线和其他组的信号线间距保证在25mil以上。该组内信号线间距保证在10mil以上。
对时钟组,差分信号对内走线长度差异控制在10mil内,尽量在同一层内走线,如果需要换层,两根差分信号应该一起换层。与其他组的信号间距在25mil以上。在MPC8548一侧,一共提供了6对相位相同的时钟对,即MCK/MCK#[5:0],其目的是为了兼容内存条设计和分立的内存芯片设计。例如在本设计中,如果选用分立的8位存储芯片,一共需要9片,如果MPC8548只提供一对时钟对,其驱动能力显然无以满足9片存储芯片,因此需要由MPC8548提供更多的时钟对输出。如果选用内存条,需要根据内存条的不同种类来决定需要使用多少对时钟对。根据对MCK/MCK#信号是否提供驱动,内存条可以分为Buffered DIMM(缓冲驱动式内存条)和Unbuffered DIMM (非缓冲驱动式内存条),对于前者而言,由于MCK/MCK#在内存条上需要经过缓冲再送到DDR2 SDRAM芯片,即在内存条上利用缓冲器(通常是带锁相环的缓冲器)保证了该信号的驱动能力,所以只需要MPC8548提供一对时钟对(例如MCK/ MCK#[0])送到内存条即可。对于后者而言,内存条上不提供对时钟对的驱动,通过计算可以知道从MPC8548提供的每对时钟对,能可靠驱动3个DDR2 SDRAM芯片作为负载。因此需要使用MPC8548输出的3对时钟对以驱动内存条上的9片DDR2 SDRAM芯片。对于没有使用到的时钟对,可以通过配置MPC8548的内部寄存器DDRCLKDR进行关闭。
在电源设计方面,需要仔细计算VTT电源发生器及其电源平面是否能满足设计所需要的功耗;需要仔细对VTT, VDDQ, VREF进行去耦滤波;VTT电源平面应该和内存条紧紧相邻;VREF走线宽度建议为20~25mil并和同层的其他电源或信号有至少20mil的间距,VREF必须能跟随VDDQ的变化,建议VREF通过电阻分压网络从VDDQ直接得到,分压电阻精度要求为1%;
设计时,还需要仔细考虑信号时序的要求。数据组信号的时序需要参考本小组的MDQS/MDQS#信号,并利用这对差分对的交叉点采样;地址和命令组信号的时序需要参考对应的时钟组信号,并利用其上升沿采样。对于DDR2 SDRAM,建立时间和保持时间需要考虑由于信号边沿不单调造成的时序降额,计算公式如下:
tSETUP = tSETUP(base) + tSETUP(derating)
tHOLD = tHOLD(base) + tHOLD(derating)
其中,tSETUP和tHOLD是总的建立时间和保持时间要求;tSETUP(base)和tHOLD(base)是从芯片文档能直接得到的建立时间和保持时间的基本要求;tSETUP(derating)和tHOLD(derating)是根据信号及其参考时钟的真实爬升速率查表得出的降额值,该表格可以从芯片文档得到。
这种查表计算降额值的方法,将造成很大的工作量。在实际设计中,一般是利用Hyperlynx等仿真软件直接得到降额值,从而确定信号的时序裕量。特别需要注意的是地址组,由于地址组信号的负载数目一般都比相应的时钟信号多,因此需考虑负载对时序造成的影响。
结语
存储芯片在电子产品中扮演着重要的角色,其性能的高低直接决定着产品的性能。相比DDR SDRAM,DDR2 SDRAM在多方面进行了技术提升,其必将在电子产品市场中发挥越来越重要的作用。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...
天线设计工程师培训课程套装,资深专家授课,让天线设计不再难...
上一篇:基于单片机和CPLD的高精度数据采集系统设计
下一篇:JTAG控制电路的应用与研究