SDRAM操作时序(超级认真项Blog)

SDRAM操作时序

本节用到的英文简写:

英文简写 具体含义
row
column
MRS (mode register set) 模式寄存器设置
tRSC(Register Set Cycle) 模式寄存器设置周期
tRCD(RAS to CAS Delay) 行激活与列读写的时间间隔
CL(CAS Latency) CAS潜伏期
tWR (Write Recovery Time) 写入校正时间
Write Back 写回操作
Burst 突发
BL(Burst Lengths) 突发长度
DQM (Data I/O Mask) 数据掩码技术
Precharge 预充电
tRP(Precharge command Period) 预充电有效周期
Refresh 刷新
tRC 自动刷新周期
AR (auto refresh) 自动刷新
SR (self refresh) 自刷新

1、初始化

SDRAM操作时序(超级认真项Blog)_第1张图片
输入稳定期、刷新周期是要看芯片手册。

模式寄存器设置(MRS) mode register set

SDRAM操作时序(超级认真项Blog)_第2张图片
模式寄存器设置周期(tRSC):Register Set Cycle
设置完以后要等待一段时间。

2、读写操作

无论是读操作还是写操作,都要先激活(Active)SDRAM中的一行,使之处于有效状态,因此又称行有效。

行激活

SDRAM操作时序(超级认真项Blog)_第3张图片
信号旁边带有 # 号的代表低电平有效。

列读写

行地址激活之后,就要对列地址进行寻址了。读写命令是与列寻址信号同时发出的。
SDRAM操作时序(超级认真项Blog)_第4张图片
因为不同的SDRAM行和列的数量不一样,正点原子SDRAM列的个数比较少,所以只用了9位,A9、A11,不用管。

注意
在发送列读写命令时必须要与行激活命令有一个时间间隔,这个间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟)。
具体值要看数据手册。

SDRAM操作时序(超级认真项Blog)_第5张图片

数据输出(读操作)

在CAS发出之后,要经过一定的时间才能有数据输出。
从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL,即CAS Latency(CAS潜伏期,又称读潜伏期)。
具体值也是要看芯片手册。
SDRAM操作时序(超级认真项Blog)_第6张图片

数据输入(写操作)

数据与写指令同时发送。不过,数据并不是即时地写入存储单元,数据的真正写入需要一定的周期。
为了保证数据的可靠写入,都会留出足够的写入/校正时间(tWR,Write Recovery Time),这个操作也被称作写回(Write Back)。
SDRAM操作时序(超级认真项Blog)_第7张图片

突发长度

突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称BL)。
在MRS阶段除了要设定BL数值之外,还要需要确定“读/写操作模式”以及“突发传输模式”。
SDRAM操作时序(超级认真项Blog)_第8张图片
人话:就是你可以预先设置一个值,然后一口气读那么多数据。把控制位给剩下来(每次发送读命令要控制位)。

数据掩码

在突发传输过程中,为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。
通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。
SDRAM操作时序(超级认真项Blog)_第9张图片
写的时候立即生效。

SDRAM操作时序(超级认真项Blog)_第10张图片
读的话是在读取时DQM发出两个时钟周期后生效。(也是也可以理解成立即阻止了读命令的发出)

预充电

在对SDRAM某一存储地址进行读写操作结束后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。
L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。
SDRAM操作时序(超级认真项Blog)_第11张图片
人话:就是SDRAM是通过电容状况储存数据的,然后很容易丢失,所以换行之前要给他再充一次电。
读操作
在发出预充电命令之后,要经过一段时间才能发送行激活命令打开新的工作行,这个间隔被称为tRP(Precharge command Period,预充电有效周期)。
SDRAM操作时序(超级认真项Blog)_第12张图片
注 <<<此图(CL=2、BL=4、tRP=2)>>>

不管是手动还是自动都是在T6时候进行预充电。
question:为什么在T6?
因为这样可以不耽误下面的行激活操作,而且预充电命令可以在读取过程中执行。

写操作
写操作时,所以预充电不能与写操作同时进行,必须要在tWR之后才能发出预充电命令,以确保数据的可靠写入,否则重写的数据可能是错的。

SDRAM操作时序(超级认真项Blog)_第13张图片
<<>>

3、刷新

SDRAM之所以称为同步“动态”随机存储器,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此刷新是SDRAM最重要的操作。
刷新操作与预充电类似,都是重写存储体中的数据。(详见上面的人话)
刷新时间(电容能保存数据的时间上限)要见芯片手册。
question:要在一个刷新时间内把所有bank都重新“充”下电,时间怎么算?
例如:正点原子SDRAM是64ms,13位行地址。然后时间计算是64ms/213。刷新操作是一次刷一行,这里的一行不是单个bank的一行,而是所有bank的同一行。
刷新还分两种:

你可能感兴趣的:(FPGA,自学)