Bank区选择
因为SDRAM里面的存储空间是分块的,就是一个个Bank。初始化完成之后,无论是都还是写操作,都需要先选择Bank区和需要操作存储单元的所在行。
行激活(Bank有效)
初始化完成之后,无论是都还是写操作,都需要先激活你需要读取或者写入存储单元所在行,使之处于或动态(又称为行有效)。另外Bank区选择可以和行激活同时进行。
如下图所示:
在图中,片选CS#拉低有效、Bank区选址同时RAS也同时有效,此时Bank线和地址线同时输出需要操作存储单元所在Bank区和行地址。由于行激活的同时也会激活相应的 Bank,所以行激活也可称为 Bank 有效。
列读写
在行激活之后,就可以进行列激活。由于SDRAM里面地址线是行列公用的,因此列寻址线还是A0~A11,然后RAS和CAS反着拉电平即可(RAS低电平,CAS高电平为行选;RAS高电平,CAS低电平为列选)。
关于A10,在列读写的时候可以控制是否进行预充电。
在发送行激活命令之后,需要间隔一段时间(tRCD)之后才可以发送列读写命令,因为器件需要一个间隔时间等待电子元件响应。
数据读出
读写指令和列选是同时进行的,此时WE#为有效状态,其中WE#高电平为读数据。当行列地址选好之后,就是把操作存储单元确定下来了。但是指令发出去到读出数据还需要给内部电路响应时间,这个时间段为CL(潜伏期)。CL越短,响应越快。
数据写入
读写指令和列选是同时进行的,此时WE#为有效状态,其中WE#高电平为读数据。数据写入的操作也是在tRCD之后进行,但是写入时没有CL的。
但是数据线输入数据时,数据并不是立刻被写入的,需要一定周期。为了保证数据可靠写入,需要预留足够写入和矫正时间(tWR)。这一个操作也被称为:写回,tWR至少占用一个时钟周期,当时钟频率越高,占用周期数越多。
突发长度
突发指的是,对一个存储单元操作的时候,同时对后面连续几个单元连续地,跟着地,逐个地进行同样操作。那么,突发长度指的是设置对后面需要连着几个单元进行同样操作。 这样操作可以节省一个个单元操作时,中间重复之前做过的工作(行激活),从而减少操作时间,提高效率。
上图为非突发操作
上图为突发操作
预充电
在对SDRAM某一存储地址读写操作之后,若果要对另外一行操作,则需要关闭本行,激活另外一行,这一个操作叫:预充电。需要这样做,因为操作之后,存储端元里面的电容或多或少被干扰。预充电实际上就是对工作行中所有存储体进行数据重写,并对行地址进行复位,以准备新行工作的过程。
同样,发出预充电操作之后,需要间隔一段时间(tRP)才可以进行下一个行激活。
刷新
一般,SDRAM里面的数据在电容里最多存储60ms左右,所以要在60ms内把数据全部读出在写入,这一个过程叫做刷新。不过这里操作分为:自刷新和自动刷新。
在自动刷新(AR)时,所有Bank区都停止工作。每次刷新操作所需要的时间为自动刷新周期(tRC),在自动刷新指令发出后需要等待 tRC 才能发送其他指令。
自刷新(SR)主要用于低功耗休眠下。在发出AR命令时,将CKE置于无效状态,就进入了SR模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。在SR期间除了CKE之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新使 CKE有效才能退出自刷新模式并进入正常工作状态。
掩码
在突发操作的时候,可能有的数据位你不想要。那么,在发送到这意为数据的时候,给该输入端指令,对该位进行屏蔽。
读取时 DQM 信号时序图
写入时 DQM 信号时序图