http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/
分类: 嵌入式
2013-01-04 15:43:53
1.结构框图:
2.管脚功能描述
3.状态图:
Power on: 上电
Reset Procedure: 复位过程
Initialization: 初始化
ZQCL: 上电初始化后,用完成校准ZQ电阻。ZQCL会触发DRAM内部的校准引擎,
一旦校准完成,校准后的值会传递到DRAM的IO管脚上,并反映为输出驱动和ODT阻值。
ZQCS: 周期性的校准,能够跟随电压和温度的变化而变化。校准需要更短的时间窗口,
一次校准,可以有效的纠正最小0.5%的RON和RTT电阻。
Al:Additive latency.是用来在总线上保持命令或者数据的有效时间。
在ddr3允许直接操作读和写的操作过程中,AL是总线上的数据出现到进入器件内部的时间。
下图为DDR3标准所支持的时间操作。
Write Leveling:为了得到更好的信号完整性,DDR3存储模块采取了FLY_BY的拓扑结构,
来处理命令、地址、控制信号和时钟。FLY_BY的拓扑结构可以有效的减少stub的数量和他们的长度,
但是却会导致时钟和strobe信号在每个芯片上的flight time skew,这使得控制器(FPGA或者CPU)
很难以保持Tdqss ,tdss和tdsh这些时序。这样,ddr3支持write leveling这样一个特性,
来允许控制器来补偿倾斜(flight time skew)。存储器控制器能够用该特性和从DDR3反馈的数据调成DQS和CK之间的关系。
在这种调整中,存储器控制器可以对DQS信号可调整的延时,来与时钟信号的上升边沿对齐。
控制器不停对DQS进行延时,直到发现从0到1之间的跳变出现,然后DQS的延时通过这样的方式被建立起来了,由此可以保证tDQSS。
MRS: MODE Register Set, 模式寄存器设置。为了应用的灵活性,不同的功能、特征和模式等在四个在DDR3芯片上的Mode Register中,
通过编程来实现。模式寄存器MR没有缺省值,因此模式寄存器MR必须在上电或者复位后被完全初始化,
这样才能使得DDR可以正常工作。正常工作模式下,MR也可以被重新写入。模式寄存器的设置命令周期,
tMRD两次操作的最小时间,其具体时序图,如下图所示。模式寄存器,分为MR0、MR1、MR2和MR4。
MR0用来存储DDR3的不同操作模式的数据:包括突发长度、读取突发种类、CAS长度、测试模式、DLL复位等。
MR1用来存储是否使能DLL、输出驱动长度、Rtt_Nom、额外长度、写电平使能等。MR2用来存储控制更新的特性,
Rtt_WR阻抗,和CAS写长度。MR3用来控制MPR。
MPR: Multi-purpose register. 多用途寄存器。MPR的功能是读出一个预先设定的系统时序校准比特序列。
为了使能MPR功能,需要在MRS的寄存器MR3的A2位写1,并且在此之前需要将ddr3的所有bank处于idle状态;
一旦MPR被使能后,任何RD和RDA的命令都会被引入到MPR寄存器中,当MPR寄存器被使能后,
除非MPR被禁止(MR3的A2=0),否则就只有RD和RDA被允许。在MPR被使能的时候,RESET功能是被允许的。
Precharge Power Down: bank在in-progress命令后关闭
Active Power Down:bank在in-progress命令后依然打开
Idle:所有的bank必须预先充电,所有时序满足,DRAM的ODT电阻,RTT必须为高阻。
CWL:CAS write latency. 以时钟周期为单位,在内部写命令和第一位输入数据的时间延时,该单位始终为整数。
在操作过程中,所有的写延时WL被定义为AL(Additive Latency)+CWL。
Rtt: Dynamic ODT.DDR3引入的新特性。在特定的应用环境下为了更好的在数据总线上改善信号完整性,
不需要特定的MRS命令即可以改变终结强度(或者称为终端匹配)。在MR2中的A9和A10位设置了Rtt_WR。Ddr3中,
有两种RTT值是可以选择的,一种是RTT_Nom,另一种是RTT_WR;Rtt_Nom是在没有写命令的时候被选择的,
当有了写命令后,ODT就会变成Rtt_wr,当写命令结束后,又会回到Rtt_nom。也就是说,RTT在ODT使能后,出现,
当总线上没有数据的时候,采用的RTT值为RTT_nom;而当总线上有了数据后,要求此时的ODT的值为Rtt_wr。
具体的DDR3的ODT产生时序见图2。当ODT被使能后,必须要保持高电平ODTH4个时钟周期才可以有效;
如果写命令被放入寄存器并且ODT是高,那么ODT必须保持ODTH4或者ODTH8,这样ODT才可以有效。
ACT = ACTIVATE PREA = PRECHARGE ALL SRX = 自刷新推出
MPR = 多用处寄存器 READ = RD,RDS4,RDS8 WRITE=WR,WRS4,WRS8
MRS=模式寄存器集 READ AP=RDAP,RDAPS4,RDAPS8 WRITE=WRAP,WRAPS4,WRAPS8
PDE=掉电进入 REF=REFRESH ZQCL=ZQ LONG CALIBRATION
PDX=掉电推出 RESET=启动复位过程 ZACS=ZA SHORT CALIBTATION
PRE=预充电 SRE=自刷新进入
4、工作原理
在描述了上述的一些基本概念后,就可以对图1中的DDR3工作原理进行基本的描述了理解了。
首先,芯片进入上电,在上电最小为200us的平稳电平后,等待500usCKE使能,
在这段时间芯片内部开始状态初始化,该过程与外部时钟无关。在时钟使能信号前(cke),
必须保持最小10ns或者5个时钟周期,除此之外,还需要一个NOP命令或者Deselect命令出现在CKE的前面。
然后DDR3开始了ODT的过程,在复位和CKE有效之前,ODT始终为高阻。
在CKE为高后,等待tXPR(最小复位CKE时间),然后开始从MRS中读取模式寄存器。
然后加载MR2、MR3的寄存器,来配置应用设置;然后使能DLL,并且对DLL复位。
接着便是启动ZQCL命令,来开始ZQ校准过程。等待校准结束后,DDR3就进入了可以正常操作的状态。
对于基本的配置过程,现在就可以结束了。下面,结合CH1的控制器FPGA,说明对DDR3相关的配置。
上表中MRS可以设置Mode寄存器值
以 上图为例CS#,RAS#,CAS#,WE#为L,L,H,H。则指令为Row/Bank Active;随后CS#拉高,command无效,
在第4个时钟周期这4个信号变为L,H,L,H,对照表格,指令为Read,经过几个时钟周期延迟,在3CLK后读数据。
5. 基本功能
DDR3 SDRAM是高速动态随机存取存储器,内部配置有8个BANK。DDR3 SDRAM使用8n预取结构,以获得高速操作。8n预取结构同接口组合起来以完成在I/O脚上每个时钟两个数据字的传输。DDR3 SDRAM的一个单次读或写操作由两部分组成:一是在内部DRAM核中进行的8n位宽四个时钟数据传输,另一个是在I/O脚上进行的两个对应n位宽、半时钟周期的数据传输。
对DDR3 SDRAM的读写操作是有方向性的突发操作,从一个选择的位置开始,突发长度是8或者是一个以编程序列的长度为4的Chopped突发方式。操作开始于Active命令,随后是一个Read/Write命令。Active命令同时并发含带地址位,以选择Bank和Row地址(BA0-BA2选择BANK、A0-A15选择Row)。而Read/Write命令并发含带突发操作的起始Column地址,并确定是否发布自动预充电命令(通过A10)和选择BC4或BL8模式(通过A12)(如果模式寄存器使能)。
在正常操作之前,DDR3 SDRAM必要以预先定义的方式上电和初始化。