SDRAM工作原理与控制方法


同步动态随机存储器(synchronous dynamic random access memory)。

同步是指 mem工作需要同步时钟,内部的命令发送与数据传输都以该时钟信号为基准;

动态是指 存储阵列需要不断刷新使数据不丢失,周期性地给电容单元充电;

随机是指 数据不是线性依次存储,而是自由指定地址读写操作;


SDRAM容量 = 数据位宽 * 存储单元数量 (行地址 * 列地址 * Bank数);

其中,需要在控制模块配置的pin:

    clk,cke:工作时钟,片内时钟使能;

    ~cs,[ba1,ba0]:片选(低有效),块选(bank地址线);

    ~ras,~cas,~we:行、列地址有效,写使能;可以输入初始化、读、写、自动充电等命令;

    [a11,a0]:地址输入;row地址使用12位线,col地址使用低9位线;

    [dq15,dq0]:双向数据I/O;

    udqm,ldqm:数据I/O掩码;

  注意:(1)a10复用作auto-fresh标志位。

     (2)掩码(udqm,ldqm)的作用:假设数据线有16根,也就是说明数据的位数可以达到16位,但是使用SDRAM的时候,也许在向SDRAM写数据的时候,生成的数据只有                      8位,但FPGA是与SDRAM的16根数据线连在一起的,这个时候,存到SDRAM中的数据还是16位的,所以为了避免这个问题,就可以使用掩码来屏蔽掉高8位了。当然                      掩码在读数据的时候起到的作用也是类似的。


 。。。。。。。。。。。。。。。待续。。。2017-05-13。。。 


SDRAM内部状态跳转图 ↓ 

粗黑线表示在该状态下会自动跳转到另一个状态,细黑线表示需要给命令才会跳转。


SDRAM初始化操作时序 ↓

 

SDRAM最开始的状态“POWER ON”,是刚上电的状态。在“POWER ON”状态给‘Precharge’命令之后就会跳转到“Precharge”状态,然后自动跳转至“IDLE”状态。在“IDLE”状态下,给SDRAM两次Auto-refresh命令,接着需要进行模式寄存器设置,对模式寄存器设计完毕之后,初始化过程就结束了。

--未完--


SDRAM写操作时序 ↓

 

状态转移图中,初始化完成之后,对SDRAM进行读或者写操作之前,需要有一个命令”ACT”(这个命令在初始化时序图中也出现了),这个命令的意思是”行有效”命令,就是让SDRAM中的某一行活动起来,以便进行读或写。

状态转移图中有”WRITE”和”WRITEA”这两个状态,处于这两个状态时,都可以对SDRAM进行写操作,在”WRITEA”状态,每写完一个突发长度的数据之后,SDRAM会自动跳出这个状态进行刷新,而在”WRITE”状态,是需要给相应的指令之后才会跳出”WRITE”状态的,所以为了提高SDRAM的运行速度,一般采用不让SDRAM进入”WRITEA”状态来提高速度。当然”READ”和”READA”这两个状态的区别也是这样的。

在初始化完成后的 “tMRD” 之间之后,给一个”ACT”命令,同时指定是哪一个bank的哪一行,然后再经过 “tRCD”的时间给“WRITE”指令,同时指定是bank地址和列地址并把A10拉低,然后再根据设定好的突发长度将对应数量的数据写进去,这样就完成了写操作。写完四个数据之后,如果我不给SDRAM发任何指令,那SDRAM内部还是处于“WRITE”状态的,如果想让SDRAM进行写,可以在给SDRAM发送写指令,如果此时刷新SDRAM的时间到了,那就必须去执行SDRAM的刷新操作来保证SDRAM的数据不被丢失。


SDRAM读操作时序 ↓

先给“ACT”命令,指定ROW地址和BANK地址,然后在给“READ”指令,经过设定好的潜伏期之后,数据就出来了。在给相关命令的时候,不要忘记其他信号线上的信号。


SDRAM自动刷新操作时序 ↓

SDRAM内部电容保存数据的最长时间是64ms,而我们一个BANK有4096行,64ms/4096~=15us,也就是说为了保证SDRAM内部的数据不被丢失,两次刷新之间的最大时间间隔为15us。

SDRAM每进行一次刷新,是对每一行进行操作的,并不是单独针对每一个电容进行充电,所以每进行一次刷新,该行中的电容进行充电我们可以理解为是同步发生的。

在每次自动刷新时,需要给一个“Precharge”命令,如果此时SDRAM正处于“WRITE”或“READ”状态时,这个“Precharge”命令可以使SDRAM跳出“WRITE”或“READ”状态从而进入“IDLE”状态。接下来,经过“tRP”的时间,给一个“Auto-Refresh”命令。

 

posted @ 2017-05-13 16:06  __大娱乐家  阅读(1488)  评论(0编辑  收藏  举报