1. 存储器简介
1.1 存储器类型
1.2 SDRAM内部结构
SDRAM:同步动态随机存储器
优点:空间存储量大、读写速度快、价格相对便宜。
缺点:控制逻辑复杂
SDRAM 寻址
SDRAM的存储空间被分为4个L-Bank,在寻址时需要先指定其中一个L-Bank,然后在这个选定的L-Bank中选择相应的行与列进行寻址。
SDRAM 存储容量
SDRAM总存储量=L-Bank的数量x行数x列数x存储单元的容量(数据位宽)
eg:4Mx4BANKSx16BITS SDRAM,其中4M是4x1024x1024
存储单元
行地址与列地址选通使得存储电容与数据线导通,从而可进行放电(读取)与充电(写入)操作。
SDRAM功能框图
2. SDRAM操作时序
2.1 初始化
SDRAM芯片上电之后需要一个初始化的过程。
模式寄存器设置(MRS):Mode Register Set
模式寄存器设置周期(tRSC):Register Set Cycle
2.2 读写操作
无论是读操作还是写操作,都要先激活SDRAM中的一行,使之处于有效状态,因此又称为行有效。
行激活
SDRAM芯片的“片选”和L-Bank的“定址”与行激活同时进行。
列读写
行地址激活后,就要对列地址进行寻址了。读写命令是与列寻址信号同时发出的。
在发送列读写命令时必须要与行激活命令有一个时间间隔,这个时间间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟)。
数据输出(读)
在CAS发出之后,要经过一定的时间才能有数据输出。
从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL,即CAS Latency(CAS潜伏期,又称为读潜伏期)
数据输入(写)
数据与写指令同时发送。不过,数据并不是即时地写入存储单元,数据的真正写入需要一定的周期。
为了确保数据的可靠写入,都会流出足够的写入/校正时间(tWR,Write Recovery Time),这个操作也被称为写回(Write Back)。
突发长度
突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Length,简称BL)。
在MRS阶段除了要设定BL数值之外,还需要确定“读/写操作模式”以及“突发传输模式”。
数据掩码
在突发传输过程中,为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。
DQM一次只能屏蔽8Bit的数据,因此数据若是16bit,则需要两位的DQM来屏蔽数据。
预充电
在对SDRAM某一存储地址进行读写操作结束后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。
L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。
读写操作时,地址线A10控制着是否进行在读写之后对当前L-Bank自动进行行预充电。
在发出预充电命令之后,要经过一段时间才能发送行激活命令打开新的工作行。这个间隔称为tRP(Precharge command Period,预充电有效周期)。
写操作时,所以预充电不能与写操作同时进行,必须要在tWR之后才能发出预充电命令,以确保数据的可靠写入,否则重写的数据可能是错的。
2.3 刷新
SDRAM之所以能被称为同步“动态”随机存储器,就是因为他要不断进行刷新(Refresh)才能保留住数据,因此刷新是SDRAM最重要的操作。刷新操作与预充电类似,都是重写存储体中的数据。
自动刷新(Auto Refresh,简称AR)
对于自动刷新(AR),SDRAM内部有一个行地址生成器(也称刷新计数器)用来自动生成行地址。
每次刷新操作所需要的时间为自动刷新周期(tRC),在自动刷新指令发出后需要等待tRC才能发送其他命令。
我们常用AR。
自刷新(Self Refresh,简称SR)
自刷新(SR)主要用于休眠模式低功耗状态下的数据保存。在发出AR命令时,将时钟有效信号CKE置于无效状态,就进入了SR模式。
SR模式下SDRAM不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。
3. SDRAM读写测试
向开发板上的SDRAM中写入1024个数据,从SDRAM存储空间的起始地址写起,写完后再将数据读出,并验证读出数据是否正确。
3.1 系统框图
SDRAM控制器
初始化状态机
工作状态机
3.2 程序设计
由于程序源码较长,请转到SDRAM设计详细开源代码自行免费下载。