SDRAM的基本概念
SDRAM凭借其极高的性价比,广泛应用于高速数据存储、实时图像处理等设计当中,但是相对于SRAM、FIFO等其他存储器件,SDRAM的控制相对复杂。虽说是复杂,但也不代表没办法实现,仔细梳理一下,发现SDRAM的控制其实也没这么难。本文就SDRAM的基本概念以及其工作流程做简要介绍。
SDRAM 的基本信号:
SDRAM 的基本信号(电源以及地线在这里不讨论)可以分成以下三类,分别是控制信号、地址选择信号以及数据信号:
(1)控制信号:包括片选(CS)、同步时钟(CLK)、时钟有效(CLKE)、读写选择(/WE)、
数据有效(DQM)等;
(2)地址选择信号:包括行地址选择(/RAS)、列地址选择(/CAS)、行/列地址线(A0-A12)分时复用、Bank 块地址线(BA0-BA1);
(3)数据信号:包括双向数据端口(DQ0-DQ15)、接收数据有效信号(DQM)控制等。DQM 为低时,写入/读出有效。
图1 SDRAM 管脚基本信息
SDRAM相关指令以及关键参数解析
图2 SDRAM相关指令
上图中,把SDRAM用到的所有指令都罗列出来了,其实我们在运用SDRAM的时候,只用到其中部分指令。例如其中write/write with autoprecharge,这两个指令我们都可以对SDRAM进行写操作,只是说在” writewith autoprecharge”指令,我们每写完一个突发长度的数据之后,SDRAM会自动跳出这个状态进行刷新,而在”write”指令,是需要给相应的指令之后才会跳出”WRITE”状态的,所以为了提高SDRAM的运行速度,我们一般采用write指令来提高速度。当然”read”和”read with autoprecharge”这两个指令的区别也是这样的。
常用指令:
读(read)
在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即
RAS to CAS Delay(RAS 至CAS 延迟),大家也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定的延迟。下图3中给出了,SDRAM读的相关时序。
图3 SDRAM读时序
SDRAM读时序,简单概括起来就是:1.激活行--à2.选通列-à3.预充电,关闭所在行--à下一次指令。
写(write)
图4 SDRAM写时序
预充电(precharge)
由于SDRAM 的寻址具有独占性,所以在进行完读写操作后,如果要对同一L-Bank 的另一行进行寻址,就要将原来有效(工作) 的行关闭,重新发送行/列地址。L-Bank 关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。在发出预充电命令之后,要经过一段时间才能允许发送RAS 行有效命令打开新的工作行,这个间隔被称为tRP(Precharge command Period,预充电有效周期)。和tRCD、CL 一样,tRP的单位也是时钟周期数,具体值视时钟频率而定。
自动刷新(auto refresh)
之所以称为DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是DRAM 最重要的操作。刷新操作与预充电中重写的操作一样,都是用S-AMP 先读再写。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有L-Bank 中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。
关键参数:
tRCD:
从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),大家也可以理解为行选通周期。广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定。
图5 tRCD=3
CL:
相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的 I/O 接口之间还需要一定的时间(数据触发本身就有延迟,而且还需要进行信号放大),这段时间就是非常著名的 CL(CAS Latency,列地址脉冲选通潜伏期)。CL 的数值与 tRCD 一样,以时钟周期数表示。如DDR-400,时钟频率为 200MHz,时钟周期为 5ns,那么 CL=2 就意味着 10ns 的潜伏期。不过