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设计详细开源代码自行免费下载。
本文深入解析SDRAM(同步动态随机存储器)的内部结构、操作时序,包括初始化、读写操作及刷新过程。SDRAM通过行激活、列寻址实现数据读写,并利用突发长度优化传输效率。数据掩码技术则允许在突发传输中屏蔽部分数据。预充电用于切换行地址,而刷新操作则确保数据持久存储。SDRAM的读写测试涉及数据的写入与验证,确保其功能正确性。
3万+

被折叠的 条评论
为什么被折叠?



