1. 操作方式简述
存储容量
SDRAM是拥有四个Bank的动态刷新存储器,对于256Mbit的SDRAM,每个 Bank 存储 64Mbit ( 67108864bit)的数据。当 SDRAM 的数据位宽为 4bit 时,这些数据组成 8192 行2048 列,每个存储单元存储 4bit 数据。当 SDRAM 的数据位宽为 8bit 时,这些数据组成 8192 行1024 列,每个存储单元存储 8bit 数据。
当 SDRAM 的数据位宽为 16bit 时,这些数据组成 8192 行512 列,每个存储单元存储 16bit 数据。例如,常用的一款型号为 HY57V281620 的 SDRAM 芯片,总共有 128Mbit 的存储空间, 数据位宽为 16bit,具有 4 个 Bank,每个 Bank 存储 32Mbit( 33554432bit)的数据。这些数据组成 4096 行512 列,每个存储单元存储 16bit 数据。
读写方式
对于 SDRAM 的读写是以突发的方式进行的,对 SDRAM 的操作(读或写)是从一个指定的地址开始,并按照编程好的数量(长度)的地址,顺序读写数据。
对 SDRAM 的操作(读或写)是以一个**命令(包含打开行地址)开始,然后跟随一个读或写命令。伴随着**命令, A0-A12 上同时被寄存的数据是期望获取位置的行地址, BA0 和 BA1 上被寄存的数据是期望获取位置的Bank 地址。伴随着读/写命令, A0—A8 上同时被寄存的数据是期望获取位置的列地址的首地址。
2. SDRAM 操作命令介绍
对SDRAM的操作,是通过对应命令来控制的,这些命令是由CS_N、 RAS_N、CAS_N、 WE_N 这四个控制信号组合成的不同状态来表示。同时,地址总线 ADDR和 DQM 总线作为辅助信号,提供与命令相对应的地址(设置模式寄存器)或参数(读写命令)。下表为 SDRAM 工作中使用到的所有命令与对应的控制信号线的状态。接下来将对 SDRAM 操作命令进行详细的说明。
(1)禁止命令
(2)空命令
(3)加载模式寄存器命令
模式寄存器的设置需要地址总线ADDR辅助的,在设置模式寄存器命令时,地址总线中 A0—A11 定义了模式寄存器的值,不同的值对应不同的模式设置,A12 在此命令中没有用到,需要设置为低电平。下表为模式寄存器中的各个位与功能的对应关系
运行模式(Operating Mode)
运行模式设置位是第 7,8 位( A7,A8), SDRAM 器件一般存在多种模式,例如标准模式,测试模式等等,但是对普通用户,只开放了标准模式。因此,我们在使用的时候,需要设置{A7,A8}=2’b00,这样才能使 SDRAM 器件进入我们所希望的标准模式。
写突发模式(Write Burst Mode)
写突发模式设置位是第 9 位( A9),其控制着 SDRAM 的写突发模式,如果A9 为 0,那么对于 SDRAM 的读和写都将采用突发方式,具体突发长度由突发长度寄存器 A0—A2 设定。如果 A9 为 1 那么对于 SDRAM 的读,依然遵从突发长度寄存器设定的值进行,而对于 SDRAM 的写,则不再具备突发属性,每个写入命令只能写入一个数据。
列选通潜伏期(CAS (READ) latency,CL)
列选通潜伏期是指从读命令被寄存到数据总线上到有第一个有效数据间的时钟间隔,这个潜伏期可以被设置为 2 个时钟或者 3 个时钟。图 1.8 和 1.9 分别是潜伏期为 2 个时钟和 3 个周期时的数据读出时序图
(4)**命令
(5)读命令
(6)写命令
(7)预充电命令
可以视为“关闭当前**行”的操作
在预充电命令执行并经过 tRP( PRECHARGEcommand period)时间后,对应的 BANK 将可以重新被操作,即从执行预充电命令到下一次能够对该 BANK 执行新的命令,需要等待 tRP 的时间。
(8)自动预充电命令
(9)突发中止命令
(10)自动刷新命令
自动刷新时,行地址由 SDRAM 芯片内部的刷新控制器自动更新,因此,在执行自动刷新命令时,用户不需要关心地址总线上的值。不管器件的数据位宽是多少,对于 256Mbit 的SDRAM,在商业和工业级的器件中,每 64ms 内需要执行 8192次自动刷新操作,即每 7.813us 执行一次;在汽车级的器件中,每 16ms 内执行 8192 次自动刷新操作,即每 1.953us 执行一次;
另外,自动刷新操作也可以采用突发的方式执行,即每 64ms(商业和工业级) /16ms(汽车级)都连续不间断的执行 8192 次自动刷新命令,然后其他时间再执行读写或者其他命令。
(11)自刷新命令
自刷新命令( SELF REFRESH)能够用来保持 SDRAM 中的数据,即使系统中其他部分已经掉电。在自刷新模式下,SDRAM不需要外部的时钟信号就能够保持数据;
当自刷新模式开启后, SDRAM 内部自己产生时钟,用来作为自动刷新的周期。
SDRAM 进入自刷新模式后,最少需要保持在自刷新模式下 tRAS( ACTIVE-to-PRECHARGE command)的时间。??
补充:突发读写burst
突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元的数量就是突发长度。在目前,由于内存控制器一次读/写一定位宽的数据,也就是8个字节,但是在现实中小于8个字节的数据很少见,所以一般都要经过多个周期进行数据的传输。上文讲到的读/写操作,都是一次对一个存储单元进行寻址,如果要连续读/写就还要对当前存储单元的下一个单元进行寻址,也就是要不断的发送列地址与读写命令。虽然由于读/写延迟相同可以让数据的传输在I/O端是连续的,但它占用了大量的内存控制资源,在数据进行连续传输时无法输入新的命令,效率很低。为此,人们开发了突发传输技术,只有指定起始地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期外,其后每个数据只需一个周期的即可获得。
下图为非突发型读取数据的时序图
依次单独寻址,此时可等效于 BL=1。虽然可以让数据是连续的传输,但每次都要发送列地址与命令信息,控制资源占用极大。下图为突发长度(BL=4)时的读取数据的时序图