基于可编程逻辑器件的SDRAM控制器的设计

时间:2022-06-18 03:29:09

基于可编程逻辑器件的SDRAM控制器的设计

摘要 本文运用FPGA技术来实现SDRAM控制器的设计,采用模块化设计方法,将控制器分为四个主要模块:SDRAM控制器模块、控制接口模块、命令模块和数据传输模块。SDRAM控制器模块调用其他三个模块并将设计整合,为SDRAM提供了一个同步控制接口和多个控制寄存器,可实现的功能:初始化SDRAM;将SDRAM复杂的读写时序简单化;产生周期性的自刷新命令。控制器通过了MAX+plusⅡ软件的仿真,仿真结果表明通过控制器接口可使得对SDRAM的操作变得异常简单。此外用Verilog硬件描述语言编程实现的电路设计,参数可以灵活修改,使电路设计的通用性和可移植性大大增加。

关键词 FPGA;SDRAM;控制器

中图分类号:TP333 文献标识码:A 文章编号:1671—7597(2013)041-024-02

在信息处理中,特别是在实时视频图像的处理中,需要大量使用SDRAM实现数据缓存,但SDRAM复杂的控制逻辑,严格的时序要求,令使用很不方便。为使用户能很方便地操作SDRAM,本文介绍了一种基于FPGA的通用SDRAM控制器软核的Verilog设计,几乎包括SDRAM的所有操作模式,故用户只要根据器件的参数进行修改,就可实现自己对特定SDRAM的特定工作模式的利用。

1 SDRAM简介

在本次设计中,采用Hynix公司的4Banks×1M×16bit HY57V641620作为控制目标,其工作时钟能达到133MHz,是一种高速存储器。HY57V641620的管脚分为三类:控制信号:片选(CS_N)、同步时钟(CLK)、时钟有效(CKE)、读写选择(WE_N)、数据有效(DQM)等;地址信号:行地址选择(RAS_N)、列地址选择(CAS_N)、行/列地址线(SA0~SA12)分时复用、Bank块地址线(BA0~BA1);数据信号:DQ0~DQ15,双向数据。其使能受DQM控制。

通常一个SDRAM会有多个Bank,在进行寻址时先通过BA的值来确定是哪个Bank,然后再在这个选定的Bank中选择相应的行与列进行寻址,在对Bank进行读写前,必须激活行选通信号。SDRAM在上电以后,对其进行其他操作之前,必须先对其进行初始化。

2 SDRAM控制器的FPGA设计

本设计采用Altera公司的FPGA CyloneⅡ EP2C5-208芯片实现SDRAM控制器的设计。SDRAM控制器采用模块化设计,由四个主要模块组成:SDRAM控制器模块(顶层模块)、控制接口模块、命令模块和数据传输模块。顶层模块调用三个较低的模块并将设计整合在一起。控制接口模块(和主机的内存地址相连)接收命令,对命令进行解码并把命令请求传输给命令模块。命令模块接收控制接口模块的命令和地址并对SDRAM发出合适的命令。数据传输模块在写和读命令时控制数据的传输。SDRAM控制器块图如图1所示。

2.1 控制接口模块

控制接口模块对主机命令进行解码并注册命令,将已解码的命令传输给命令模块。此外控制接口模块还包含对SDRAM模式寄存器的设置,可以设置SDRAM的突发读写长度和预充电周期,寄存器设置值是在SDRAM初始化时通过接口模块输入的。

2.2 命令模块

命令模块接收来自控制接口模块已解码的命令,接收来自刷新控制逻辑的刷新请求,并对SDRAM产生命令。该模块包括一个简单的仲裁器,该仲裁器对来自主机接口的命令和来自刷新控制逻辑的刷新请求进行仲裁。来自刷新控制逻辑的刷新请求比来自主机接口的命令有较高的优先权。如果从自主机来的命令和刷新请求同时到达或在隐藏的刷新操作命令中到达,仲裁器将会等到隐藏的刷新操作完成后再对主机命令应答。如果从主机来的操作命令正在进行时,将会等到主机操作命令完成后再对隐藏的刷新操作命令应答。

仲裁器从主机接收一个命令后,该命令将会被传输到命令模块的命令发生器部分。在SDRAM发出的命令之间,命令模块通过三个可替换的寄存器进行定时。第一个替换寄存器用来控制ACTIVATE命令的定时;第二个用来控制WRITEA和READA命令的配置;第三个用来记录命令的持续时间,该命令让仲裁器确定是否最后被请求的操作已被完成。

命令模块执行SDRAM的复用地址命令。在ACTIVATE(RAS)命令期间,行地址输出有效,该命令把行地址输出给SDRAM的A[11:0]引脚。在READA(CAS)或WRITEA命令期间,列地址输出有效,该命令把列地址输出给SDRAM。

输出信号OE(被命令模块产生)是在数据传输模块的数据输入线路的最后阶段用来控制三态缓冲器的。

2.3 数据传输模块

数据传输模块为SDRAM和主机之间提供了数据接口。WRITEA命令时,主机数据会通过DARAIN传输到SDRAM。 READA命令时,数据会通过DATAOUT送给主机。

数据输入线路由一个两分段的管线组成去适当排列数据而使CMDACK和SDRAM发出的命令相关联。数据输出线路由一个两分段的管线组成用来在READA命令期间寄存来自SDRAM的数据。如果DARAOUT和CMDACK配合的好,可以使输出数据管线的延迟减小到零。

3 SDRAM控制器的仿真

本设计的功能仿真是在MAX+plusⅡ的环境中进行的。图2给出了SDRAM控制器控制SDRAM进行写操作的仿真图。仿真结果表明SDRAM控制器对各个操作均有正确的时序输出。

4 结束语

本设计应用自顶向下的设计思想,选择FPGA及Verilog HDL语言成功的设计出一种简单的、通用的SDRAM控制器。该通用控制器具有多种突发读、写方式和工作模式。在实际应用中,可选择其中的基本读、写、刷新操作来满足系统的需要。用SDRAM实现大容量的高速数据缓存具有明显的优势,使用可编程器件实现对SDRAM的控制则使之具有更高的灵活性。

参考文献

[1]夏宇闻.Verilog HDL数字系统设计教程[M].北京:北京航空航天大学出版社,2003.

[2]夏宇闻.复杂数字电路与系统的Verilog HDL设计[M].北京:北京航空航天大学出版社,1998.

[3]SDR SDRAM Controller White Paper[DB/CD].Altera 2002.8.http:///literature/wp/sdr_sdram.pdf.

[4]SDRAM Device Operation.[EB/OL].Hynix 2003.9.http:///datasheet/Timing_Device/sdram _Deviceoperation.pdf.

[5]樊京,张宏伟.使用FPGA操作SDRAM的RTL级代码实现[J].仪表技术,2006(03).

上一篇:葫芦岛市环境保护与建设十二五规划简析 下一篇:GSM网络环境下的信令解析及跨层多目标优化方法...