SDRAM

 

SDRAM

SDRAM主要的原理过程,首先就是要进行初始化,初始化一共有四个过程,在这些过程中,可能会有一些等待周期。然后初始化结束之后进入工作状态。其中工作状态就是写操作,读操作,还有就是自动刷新操作。如果没有写读命令时,刷新操作也会定时工作,这也是为什么sdram,就做动态存储器。如果一旦有读写命令请求时,就会进入突发读写状态。

这个是SDRAM的常见参数

SDRAM

SDRAM

SDRAM

 

 

 

 

SDRAM

1.稳定200us周期

SDRAM

SDRAM

`define               CMD_NOP                     5'b10111          // NOP COMMAND

SDRAM

2.预充电: 预充电实际上就是对工作行中所有存储体进行数据重写
 SDRAM

`define               CMD_PRGE          5'b10010                     // PRECHARGE

SDRAM

  1. 这个预充电命令发出后,还需要TPR的时间,预充电和**命令之间需要大于等于TPR时间15ns,所以需要一个大于15ns的等待周期

parameter  TRP_CLK            = 10'd4;                //预充电有效周期40ns

SDRAM

4. 8个自动刷新周期

`define               CMD_A_REF        5'b10001                     // AOTO REFRESH

SDRAM

5.TRC时间是min=60ns

parameter  TRC_CLK           = 10'd6;                //自动刷新周期60》=60ns

SDRAM

6.设置模式寄存器,这里我们需要设置

SDRAM

`define               CMD_LMR                     5'b10000       // LODE MODE REGISTER

 

SDRAM

SDRAM

SDRAM

7.TRSC

parameter  TRSC_CLK     = 10'd6;                //模式寄存器设置时钟周期60ns20ns

SDRAM

8.初始化完成

 

工作状态

  1. 行**,初始化完成后, 无论是读操作还是写操作, 都要先**( Active SDRAM中的一行,使之 处于活动状态(又称行有效) 。在此之前还要进行SDRAM芯片的片选和L-Bank的定址,不过它 们与行**可以同时进行

(其中读写命令请求来自于FIFO模块)

SDRAM

SDRAM

SDRAM

2. 然而,在发送列读写命令时必须要与行**命令有一个时间间隔,这个间隔被定义为tRCD RAS to CAS Delay RASCAS延迟)

parameter  TRCD_CLK    = 10'd2;                //行选通周期20ns》15ns

SDRAM

3.写操作,WE=0,CAS=0

SDRAM

`define               CMD_WRITE       5'b10100                     // WRITE COMMAND

SDRAM

这里A10要设置是低电平,禁止自动预充电。在读写完事之后,在预充电。

4.将数据突发写入,等待写结束

SDRAM

(1).等待写完

`define               CMD_NOP                     5'b10111                     // NOP COMMAND

(2).这个是突发结束命令

`define               CMD_B_STOP     5'b10110                     // BURST STOP

SDRAM

5. 为了保证数据的可靠写入,都会留出足够的写入/校正时间( tWR Write Recovery Time),这个操作也被称作写回( Write Back)。 tWR至少占用一个时钟周期 或再多一点(时钟频率越高, tWR占用周期越多)

parameter  TWR_CLK     = 10'd2;                //写入校正

SDRAM

SDRAM

6.读操作

SDRAM

`define               CMD_READ         5'b10101                     // READ COMMADN

SDRAM

7.需要等待CAS潜伏期,这里我们需要3个时钟周期

parameter  TCL_CLK       = 10'd3;                //列潜伏期

SDRAM

SDRAM

SDRAM

7.将数据突发读出,等待读结束

SDRAM

(1).等待读完

`define               CMD_NOP                     5'b10111                     // NOP COMMAND

(2).这个是突发结束命令

`define               CMD_B_STOP     5'b10110                     // BURST STOP

SDRAM

 

8.预充电: 预充电实际上就 是对工作行中所有存储体进行数据重写
 SDRAM

`define               CMD_PRGE          5'b10010                     // PRECHARGE

SDRAM

9.这个命令发出后,还需要TPR的时间预充电和**命令之间需要大于等于TPR时间15ns,所以需要一个大于15ns的等待周期,这个周期时间结束之后,调到初始状态

parameter  TRP_CLK            = 10'd4;                //预充电有效周期40ns

SDRAM

10自动刷新,这个是周期的操作,为了防止数据丢失,对所有的L-Bank都操作

SDRAM

SDRAM

SDRAM

`define               CMD_A_REF        5'b10001                     // AOTO REFRESH

SDRAM

11.自动刷新之后,需要等待几个时钟周期,之后跳回初始状态

parameter  TRC_CLK       = 10'd6;                //自动刷新周期60》=60ns

SDRAM