接下来我们来了解一下SDRAM芯片的初始化及读写时序。
针对内存的操作指令有如下几种:
1).Command INHIBIT(初始化);
2).No Operation(无动作);
3).Active(使指定L-Bank中的指定行有效);
4).Read(从指定L-Bank中的指定列开始读取数据);
5).Write(从指定L-Bank中的指定列开始写入数据);
6).Burst Terminate(突发传输终止);
7).Precharge(预充电命令,关闭指定或全部L-Bank中的工作行);
8).Auto Refresh(自动刷新);
9).Load Mode Register(模式寄存器加载);
10).写允许/输出允许;
11).写禁止/输出屏蔽;
内存的初始化
一旦VDD、VDDQ被同时家电,并且时钟已经稳定,SDRAM需要一个200us的延迟,在这个时间段中,Command INHIBIT和No Operation指令有效,这个过程实际上就是内存的自检过程,一旦这个过程通过后,一个Precharge命令就会生效,在这个命令周期中,内存会处于Idle状态。随后执行几个Auto Refresh周期,之后SDRAM为模式寄存器编程做准备。整个初始化过程如下图所示。
模式寄存器设置(MRS)是在CPU的BIOS控制下进行的。SDRAM芯片内部有一个逻辑控制单元,这个控制单元的相关控制参数是由MR提供的,SDRAM芯片每次进行初始化时都要将重新写MR寄存器。MR中设置了SDRAM的运行模式:包括突发长度(BL)、突发类型(Burst Type)、CAS延迟(CAS Latency)、运行方式(Operating Mode)和写入突发模式。
MR通过Load Mode Register命令进行编程。MR中操作位M0-M11分别与内存芯片的地址线A0-A11对应。M0-M2用来设置BL,M3设置突发类型,M4-M6设置CAS延迟,A7-A11设置操作模式。如下图所示。
行有效
初始化完成后,要想对一个L-Bank中的阵列进行寻址,首先要确定行(Row),使之处于活动状态(Active),然后再确定列。虽然之前要进行片选和L-Bank的地址,但它们与行有效可以同时进行。同一个L-Bank中,两个相邻的Active命令之间的时间间隔被定义为 tRC,在不同L-Bank中,执行两个Active命令之间的时间间隔被定义为tRRD(RAS to RAS Delay)。行有效时序图如下所示。
列读写
行地址确定之后,就要对列地址进行寻址了。在SDRAM中,行地址与列地址线是共用的,仍然是A0-A11。读/写命令是通过WE#信号的状态去区分的,当WE#为低电平有效时是写命令,为高电平无效时是读命令。列寻址信号与读写命令是同时发出的。虽然列地址线与行寻址共用,但是CAS(Column Address Strobe,列地址选通脉冲)信号则可以区分开行与列寻址的不同。列读写时序如下图所示。
在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定位为tRCD,即RAS to CAS Delay(RAS 至CAS延迟),大家也可以理解为行选通周期。tRCD时SDRAM的一个冲要时序参数,可以通过主板BIOS经过北桥芯片进行调整,但不能超过厂商的预定范围。广义的tRCD以时钟周期为单位,比如tRCD=2,就代表延迟周期为两个时钟周期。
在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过I/O通道输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定位为CL(CAS Latency,CAS潜伏期)。由于CL只在读取时出现,所以CL又被称为读取潜伏期(RL,Read latency)。
由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S-AMP通道。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判断),因此从数据I/O总线上有数据输出之前的一个时钟上升沿开始,数据就已传向S-AMP,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间被定位为tAC(Access Time from CLK,时钟触发后的访问时间)。tAC的单位是ns,并且需要小于一个时钟周期。下面为SDRAM读操作中CS与tAC关系示意图。
SDRAM的数据写入操作也是在tRCD之后进行,但此时没有CL,寻址方式跟读操作一样,只是在写操作时,WE#信号为低电平有效。下图为SDRAM写操作时序。从图中可以看出,由于数据信号由控制端发出,输入时芯片无需做任何调校,只需直接传到数据输入寄存器中,然后再由写入驱动器进行对存储器电容的充电操作,因此数据可以与CAS同时发送,也就是说写入延迟为0。不过,数据并不是即时地写入存储电容,因为选通三极管(就如读取时一样)与电容的充电必须要有一段时间,所以数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间(tWR,Write Recovery Time),这个操作也被称作写回(Write Back)。tWR 至少占用一个时钟周期或再多一点。
联系客服