DDR2学习笔记.docx
《DDR2学习笔记.docx》由会员分享,可在线阅读,更多相关《DDR2学习笔记.docx(22页珍藏版)》请在冰豆网上搜索。
DDR2学习笔记
个人笔记整理,可能存在错误,仅供参考
DDR2初识
1.1基础
SDRAM:
SynchronousDynamicRandomAccessMemory,同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。
DDR2第二代双倍数据率同步动态随机存取存储器(Double-Data-RateTwoSynchronousDynamicRandomAccessMemory),双倍速率主要体现在采用了在时钟的上升延和下降延同时进行数据传输的基本方式。
另外,DDR2内存核心在于其拥有两倍于标准DDR内存的4Bit预读取能力,即一次将4Bit数据读入到IO缓存中,在需要时内存既可快速进入处理环节,这样减少了数据查找、等待、排队的时间,提高效率。
DDR2规格
传输标准
核心频率
总线频率
等效传输频率
数据传输率
DDR2-400
PC23200
100MHz
200MHz
400MHz
3200MB/S
DDR2-533
PC24300
133MHz
266MHz
533MHz
4300MB/S
DDR2-667
PC25300
166MHz
333MHz
667MHz
5300MB/S
DDR2-800
PC26400
200MHz
400MHz
800MHz
6400MB/S
OCD(Off-ChipDriver):
片外驱动电阻调整技术。
DDR2通过OCD可以提高信号的完整性。
通过调整上拉(pull-up)/下拉(pull-down)的电阻值使两者电压相等。
使用OCD通过减少DQ-DQS的倾斜来提高信号的完整性;通过控制电压来提高信号品质。
不过,OCD技术在普通的应用领域所发挥的作用并不明显,而在服务器上使用,它的功能才能被充分发挥出来。
ODT(OnDieTerminator):
即内建核心的终结电阻器。
它的主要作用是能够直接提升系统的稳定性。
使用DDRSDRAM的主板上面为了防止数据线终端反射信号需要大量的终结电阻。
它大大增加了主板的制造成本。
实际上,不同的内存模组对终结电路的要求是不一样的,终结电阻的大小决定了数据线的信号比和反射率,终结电阻小则数据线信号反射低但是信噪比也较低;终结电阻高,则数据线的信噪比高,但是信号反射也会增加。
因此主板上的终结电阻并不能非常好的匹配内存模组,还会在一定程度上影响信号品质。
可以根据自已的特点内建合适的终结电阻,这样可以保证最佳的信号波形。
简单来说,ODT可以和内存颗粒的“特性”相符,从而减少内存与主板的兼容问题的出现。
PostedCAS(RAS紧接着CAS):
它为了解决DDR内存中指令冲突问题,提高DDRII内存的利用效率而设计的功能。
在PostCAS操作中,CAS信号(读写/命令)能够被插到RAS信号后面的一个时钟周期,CAS命令可以在附加延迟(AdditiveLatency)后面保持有效。
原来的tRCD(RAS到CAS和延迟)被AL(AdditiveLatency)所取代,AL可以在0,1,2,3,4中进行设置。
由于CAS信号放在了RAS信号后面一个时钟周期,因此ACT和CAS信号永远也不会产生冲突。
不过要注意的是,PostedCAS功能的优势只有在那些读写命令非常频繁的运作环境下才能体现,对于一般的应用来说,开启PostedCAS功能反而会降低系统的整体性能。
DDR2数据总线位宽X4/X8/X16:
区别在于DQS(数据同步)/RDQS(读数据同步)/UDQS(高位数据同步15:
0)/LDQS(地位数据同步7:
0)这些数据同步信号,
1.2接口
端口
方向
功能
CK,CK#
input
时钟信号,差分时钟,所有地址和控制信号都在CK的上升沿和CK#的下降沿的交叉处被锁存;输出数据与CK和CK#的交叉对其(双沿输出)。
CKE
input
时钟使能,为“高”时使能内部时钟信号,输入缓存。
输出驱动;为“低”时进入PRECHARGE、Power-Down、SELF-Refresh等模式。
CS#
input
片选信号,低有效,为高时所有命令无效。
ODT
input
OnDieTermination,使能内部终结电阻
RAS#,CAS#,WE#
input
行选通脉冲信号,列选通脉冲信号,写使能信号
DM(UDM,LDM)
input
数据屏蔽信号,在写操作过程中,当DM为高时,输入数据将会被屏蔽;在读操作过程中DM可以为高、低或者悬空
BA0-BA2
input
BANK地址选通信号,用于确定对哪一个BANK进行激活、读写、预充电等操作
A0-A15
input
地址输入信号,为ACTIVE命令提供行地址;为读写命令、AUTOPERCHARGE提供列地址;A10位只在precharge命令是被采样,当A10为低时,对一个BANK进行precharge操作;当A10为高时,对所有BANK进行precharge操作。
DQ
input/output
数据总线
DQS,DQS#
(UDQS,UDQS#)
(LDQS,LDQS#)
(RDQS,RDQS#)
input/output
数据总线触发信号,读操作是DQS为输出,与数据边沿对齐;写操作是DQS为输入,与数据中心对齐。
NC
不连接
VDDQ
supply
DQ工作电压:
1.8V+/-0.1V
VSSQ
supply
DQ工作地
VDDL
supply
DLL工作电压:
1.8V+/-0.1V
VSSDL
supply
DLL工作地
VDD
supply
芯片供电电压:
1.8V+/-0.1V
VSS
supply
芯片供电地
VREF
supply
刷新参考电压
DDR2SDRAM操作
2.1DD2协议
2.1.1简单状态及
2.1.2操作指令
2.1.3电气特性
2.2上电和初始化过程
2.2.1上电初始化过程
a)上电初始化必须满足:
a1)上电保持CKE低于0.2*VDDQ;ODT要处于低电平状态(其他的管脚可以没有定义);电源上升沿不可以有任何翻转,且上升沿不能大于200ms,并且要求在电压上升沿过程中满足VDD>VDDL>VDDQ且VDD-VDDQ<0.3V;
-VDD,VDDL和VDDQ必须由同一电源芯片供电;
-VTT最大只能到0.95V;
-VREF时刻等于VDDQ/2。
a2)
b)时钟信号要保持稳定;
c)在电源和时钟稳点之后至少要保持200us,然后执行NOP或Deselect取消选定命令&拉高CKE;
d)等待至少400ns然后执行预充电所有簇命令,期间执行NOP或Deselect(取消选定命令);
e)执行EMRS
(2)命令,(EMRS
(2)命令,需要将BA0、BA2拉低,BA1拉高);
f)执行EMRS(3)命令,(EMRS
(2)命令,需要将BA2拉低,BA0、BA1拉高);
g)执行EMRS命令激活DLL,(需要将A0拉低,BA0拉高,BA1-2拉低,A13-15,A9-7拉低);
h)执行MRS命令实现DLL复位,(需要将A8拉高,BA0-2,A13-15拉低);
i)再次执行预充电所有簇命令;
j)执行至少两次自动刷新命令;
k)将A8拉低,执行MSR命令对芯片进行初始化操作(即不对DLL进行复位下的模式寄存器设置命令);
l)从第h开始后至少200个时钟周期后执行OCD校准命令((OffChipDriverimpedanceadjustment);
m)可以开始执行DDR2SDRAM的常规操作;
2.2.2模式寄存器和扩展模式寄存器设置
为了使用更加灵活,可以通过预先设置模式寄存器和扩展模式寄存器的方法,设置DDR2SDRAM的突发长度、突发类型、CAS延时,DLL复位和禁止、写恢复时间长度、设置驱动电阻,ODT,附加CAS延时、OCD(片外驱动电阻调节)等。
MRS和EMRS以及DLL这些命令不会影响存储器阵列的内容,所以上电后任意时间执行初始化操作都可以。
2.2.2.1模式寄存器设定
模式寄存器中的数据控制DDR2SDRAM的操作模式,默认值没有被定义,通过拉低CS、RAS、CAS、WE和BA0-1计入模式寄存器设置模式(MRS)。
在写模式寄存器之前必须对所有簇进行预充电,并且命令保持的时间必须满足tMRD(查表大于等于2个时钟周期)。
以下是各参数具体设置的内容:
2.2.2.2扩展寄存器设定
EMRS
(1)
扩展模式寄存器
(1)设置激活或禁止DLL的控制信息,输出驱动强度,ODT(内部终结电阻)值和附加延时等。
扩展寄存器
(1)的默认值也没有被定义,通过拉低CS、RAS、CAS、WE、BA1和拉高BA0进入设置。
DLL(延迟锁相环)激活与禁止
优势在于可以做到很高精度,可以排除温度、电压变化带来的影响,使得skew可以作得很小,而且可以调整时钟占空比。
对通常的操作,DLL必须被激活。
在上电初始化过程中,必须激活DLL,在开始正常操作时,要先关闭DLL。
在进入自我刷新操作时,DLL会被自动禁止,当结束自我刷新时,DLL会被自动激活。
一旦DLL被激活(随之将复位),为了使外部时钟和内部始终达到同步,在发布读命令之前必须至少要过200个时钟周期。
没有等待同步可能会导致tAC或tDQSCK参数错误。
EMRS
(2)
扩展模式寄存器
(2)控制着刷新和相关的特性。
扩展模式寄存器
(2)的默认值没有被定义,因此在上电后,必须按规定的时序对EMRS
(2)进行设定。
通过拉低CS,RAS,CAS,WE,置高BA1拉低BA0来发布EMRS
(2)的设定命令。
2.2.3片外驱动电阻(OCD)调整
DDR2SDRAM支持驱动校准特性,调整的流程如下图所示。
每执行一次校准命令,都要在之后紧跟着“OCD校准模式结束”命令,之后才可以发布其它的命令。
在进行OCD电阻调整之前必须要设置MRS.并且根据系统的环境,要小心控制ODT(终结电阻)。
2.2.4片内终结电阻(ODT)的激活或禁止
终结电阻(ODT)是DDR2SDRAM的一个特点,目的是为了提高存储通道信号完整性,允许独立的打开或者关闭DQ、DQS、RDQS、DM等数据总线传输信号的片内终结电阻。
ODT管脚与EMR控制开关打开不同的组合产生相应的阻值。
图中每个电阻300欧姆,标准要求ODT电阻提供50/75/150欧姆的电阻。
2.3簇激活命令
在时钟上升沿时保持CAS#、WE#为高,CS#、RAS#为低即可发布簇激活命令,其中BA0和BA1为要激活的簇地址,行地址A0-A13决定要激活该簇的那些行。
BANK被激活后才能正常的进行读写操作。
2.4读写操作
Bank激活后,读写周期就可以开始执行了。
突发读写
DDR2允许执行突发读写操作,突发长度有MRS寄存器的值决定。
读中断
DDR2允许突发长度为8的模式下的读操作被另一个读操作中断,其他任何命令不能中断突发读操作。
写掩码操作
DQM就是掩码控制位,在sdram中每个DQM控制8bitData。
在读操作的时候没什么大的影响,比如读32位的sdrammodule,但只要其中低8bit的数据,没有关系,只要读出32bit数据,再在软件里将高24位bit和0“与”就可以了,有没有DQM关系不大。
但在执行写操作时。
如果没有DQM就麻烦了,可能在软件上是写一个8bit数据,但实际上32根数据线是物理上连接到SDRAM的,只要WR信号一出现,这32位就会写sdram中去,高24bit数据就会被覆盖。
通过使用DQM就可以将其对应的8bit屏蔽,不会因为写操作而覆盖数据了。
2.5预充电操作
预充电命令用于对某一个BANK进行预充电,或者关闭某一个激活的BANK准备对另外一个BANK进行读写操作。
2.6自动预充电
当对一个已经激活的BNAK的新的一行进行读写时,必须执行预充电或者自动预充电命令,预充电和自动预充电的区别在于,发布读写命令的时候A10的状态,如果A10为低则执行常用的读写操作,如果A10为高则执行带有自动预充电的读写操作
2.7自动刷新(Auto-rf)与自刷新(self-rf)命令
自动刷新就是每隔固定的时间对DDR2的进行一次刷新,周而复始的循环刷新。
在执行刷新前所有的BANK都要被预充电且至少保持tRP处于空闲。
当开始执行刷新命令后,芯片内部的地址计数器提供地址,不需要外部提供地址。
自刷新是当系统其他部分断电后,自刷新命令用来维持数据,在自刷新模式中,DDR2无需外部时钟就可以维持数据
2.8下电
CKE为低时,DDR2进入下电模式。
当执行模式寄存器或者扩展模式寄存器,以及读写操作时CKE不能为低,其他操作,如行激活、预充电、自动预充电、刷新时,CKE可以为低。
DDR2控制器
3.1控制器原理概述
如下图,DDR2控制器与DDR-PHY使用同步时钟,其中同步时钟最好产生于PLL;DDRPHYInterface(DFI)即DDR2内存与控制器的物理层接口;控制器设计包括图像左侧的用户接口以及总线仲裁器,右侧为产生符合DDR2时序的corelogic。
3.2系统同步
我们可以看到DDR2控制器与DDR2内存组成的系统是一个同步设计,综合时需要针对CK,CKE与CMD信号、ADD信号、DATA信号进行同步约束;另外,在高速频率工作的情况下,信号从控制器到达DDR2的延时可能需要一整个时钟周期或者更多。
所以在控制器设计与系统实现上面临也很大挑战,下面介绍一种延时门时钟电路设计和系统布局设计。
如下图延时门时候电路是在调节读操作时的DQS(数据同步)信号,将pad_gate_open_out与pad_gate_open_in在控制器外部相连形成ddr_gate_open_delayed信号,将ddr_gate_open_delayed于ddr_close进行XOR产生resulting_gate。
使控制器能更精确的补获有效的数据
在布局时,1.PLL的供电管脚要靠近电源以减少Jitter;2.尽量将PLL放在靠近DFI的位置,并且
3.3控制器的其他组件
控制器其他组件,包括多通道的仲裁器、配置寄存器组以及部分DFT设计。
Databahn控制器IP
Databahn是denali公司推出的针对DDR存储控制的可定制的IP核。
提供一整套的控制器生成工具,PHY模型,完整的设计文档,验证工程以及使用综合和静态时序分析的脚本等。
1FPGA实现
2DDR2验证套件原理及使用
3国科大的整套工程