 
- UID
- 1023229
- 来自
- 中国
|

引言
同步动态随机存储器(SDRAM),在同一个CPU时钟周期内即可完成数据的访问和刷新,其数据传输速度远远大于传统的数据存储器(DRAM),被广泛的应用于高速数据传输系统中。
基于FPGA的SDRAM控制器,以其可靠性高、可移植性强、易于集成的特点,已逐渐取代了以往的专用控制器芯片而成为主流解决方案。然而,SDRAM复杂的控制逻辑和要求严格的时序,成为开发过程中困扰设计人员主要因素,进而降低了开发速度,而且大多数的基于FPGA的SDRAM控制器都是针对特定的SDRAM芯片进行设计,无法实现控制器的通用性。本文介绍一种通用SDRAM控制器的FPGA模块化解决方案。
SDRAM控制逻辑复杂,命令种类多样,需要周期性刷新操作、行列管理的等多重操作。
SDRAM首先要进行初始化操作。在上电后等待100ns,至少执行1条空操作,然后对所有页执行预充电操作,接着向各页发出两条刷新操作指令,最后执行SDRAM工作模式的设定LMR命令用来配置SDRAM工作模式寄存器。SDRAM工作寄存器可以根据具体应用的需要进行设置。
初始后的SDRAM在得到了RAS、CAS、WE的值后开始执行相应的命令。在对SDRAM进行读、写过程中,必须要先进行页激活ACT操作,保证存储单元是打开的,以便从中读取地址或者写入地址,然后通过预充电PHC命令实现来关闭存储单元。在进行写操作时,内部的列地址和数据都会被寄存,而进行读操作时,内部地址被寄存,数据的存储则发生在CAS延迟时间(通常为1~3个时钟周期)后。最后,操作终止:当SDRAM顺次的进行读、写操作后,当到达到突发长度或者突发终止指令BT出现时,SDRAM将终止其操作。
模块化的SDRAM控制器设计
在SDRAM控制器的FPGA实现方案中,采用了:FPGA的自底向上的模块化设计思想,首先分析顶层模块的功能,再将其功能分类细化,分配到不同的子模块去实现,然后自底向上的先逐步完成各个子模块的设计,最后将子模块相互连接生成顶层模块。经过分析,SDRAM控制器应实现的功能有:为SDRAM提供刷新控制以保持SDRAM中的数据;对主机的命令进行仲裁,将下一步要执行的命令翻译成可与SDRAM连接的信号;为SDRAM的读、写生成数据路径。因此,根据SDRAM的指令操作特点将SDRAM控制器划分为接口控制模块、命令生成模块和数据路径模块三个主要模块(图1)。
 下面,对其接口信号进行介绍,需要注意的是,为了实现该控制器的通用性,ADDR、DATAIN、DATAOUT、DQ、DOM信号设计成可根据SDRAM的容量改变的形式。
与主机接口信号:CLK(系统时钟);RESET(系统复位);CMD[2:0](译码指令);CMDACK(指令应答信号);ADDR[ASIZE-1:0】(地址线);DATAIN/DATAOU[DSIZE-1:0](输入、输出数据总线);DM[(DSIZE/8)-1:0】(数据掩码)。
与SDRAM接口信号:SA(地址线);BA(页地址);CS-N(片选信号);CKE(时钟使能信号);RAS、CAS、WE(命令控制信号);DQM[(DSIZE/8)-1:0](SDRAM数据掩码);DQ[DSIZE-1:0】(双向数据线)。 |
|