会员注册 | 登录 | 微信快捷登录 支付宝快捷登录 QQ登录 微博登录 | 帮助中心 人人文库renrendoc.com美如初恋!
站内搜索 百度文库

热门搜索: 直缝焊接机 矿井提升机 循环球式转向器图纸 机器人手爪发展史 管道机器人dwg 动平衡试验台设计

   首页 人人文库网 > 资源分类 > DOC文档下载

基于FPGA的SDRAM控制器的设计和实现.doc

  • 资源星级:
  • 资源大小:114.00KB   全文页数:6页
  • 资源格式: DOC        下载权限:注册会员/VIP会员
您还没有登陆,请先登录。登陆后即可下载此文档。
  合作网站登录: 微信快捷登录 支付宝快捷登录   QQ登录   微博登录
友情提示
2:本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3:本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

基于FPGA的SDRAM控制器的设计和实现.doc

基于FPGA的SDRAM控制器的设计和实现0.引言随着电子技术在工业、医疗、商业等领域的发展,人们对数据传输率的要求越来越高,传统的单片机早已不能满足这种高速数据传输的要求。与此同时,可编程的逻辑器件FPGA/CPLD以其强大的功能,开发过程投资小、周期短,可反复编程修改,开发工具智能化等特点,成为当今硬件设计的潮流相比而言,FPGA即现场可编程门阵列,它的集成度高,可完成极其复杂的时序与组合逻辑电路功能,更适用于高速、高密度的高端数字逻辑电路设计领域1。SDRAM即同步动态随即存储器,与传统的DRAM有很大区别。它可以与系统总线以同频率工作,用同一个CPU时钟周期即可完成数据的访问和刷新,进而大大的提高了数据传输率,其速度远大于DRAM。因而,SDRAM常作为数据缓存应用于高速数据传输系统中。目前,许多嵌入式设备的大容量、高速度存储器都采用SDRAM来实现,而且大多都是用专用芯片完成其控制电路,这不但提高了设计成本,而且使系统的硬件电路变得复杂。随着FPGA在嵌入式系统中的广泛应用,如果我们能够结合具体的需要,利用FPGA来设计自己的SDRAM控制器,这些问题就迎刃而解了。然而,SDRAM的控制逻辑复杂、时序要求严格,常常困扰设计人员。有很多文章2,3,4,5详细的介绍了SDRAM的工作原理、控制时序和指令特点,以及基于FPGA的SDRAM控制器的实现方法,但是并没有详细的给出控制器内部结构和指令时序的控制问题。因此。本文将介绍一种基于FPGA的通用SDRAM控制器,并着重介绍设计方案中各模块的功能和实现方法。该控制器用VHDL语言程序实现,完成了SDRAM指令状态转换、信号仲裁判断,并巧妙的用三个移位寄存器解决了指令的逻辑和时序的问题。1.SDRAM简介SDRAM具有空间存储量大、读写速度快、价格相对便宜的特点。但其控制逻辑复杂,需要周期性刷新操作、行列管理、不同延时和命令序列等。1.1SDRAM地址结构SDRAM的存储地址分为页(bank)地址,行(row)地址和列(column)地址。例如一个8MByte的SDRAM,被分为4个bank,即1个bank为2MByte,每个bank包括12行8列。1.2SDRAM的指令SDRAM的一系列指令如表1所示,每个指令最终都是通过控制RAS、CAS、WE信号来实现。通常对SDRAM的操作过程如下表1SDRAM命令(1)SDRAM初始化操作上电后至少等待100ns,然后至少执行1条空操作对所有页执行预充电操作向各页发出两条刷新操作指令最后执行SDRAM工作模式的设定LMR命令用来配置SDRAM工作模式寄存器,SDRAM工作寄存器如表2所示。其中A11~A10是用户保留位A9用来配置写突发模式A8~A7是操作模式,通常为00,代表标准操作模式A6~A4设置CAS延迟时间A3决定突发操作模式是顺序还是间隔型最后的三位A2A0用来配置突发长度。表2SDRAM工作寄存器A11A10A9A8A7A6A5A4A3A2A1A0ReserveWriteburstmodeOperatingmodeLatencymodeBursttypeBurstlength(2)SDRAM读、写操作根据实际应用的需要,发出读、写指令。SDRAM可实现突发式读写,支持的突发长度可配置为1个、2个、4个、8个数据周期或者页模式。并且突发的模式可以配置为顺序或者间隔型。对SDRAM进行访问的最主要操作就是读RD和写WR操作。SDRAM在进行读写操作时,必须要先进行页激活ACT操作,以保证存储单元是打开的,以便从中读取地址或者写入地址,关闭存储单元通过预充电PHC命令实现。在进行写操作时,内部的列地址和数据就会被寄存进行读操作时,内部地址被寄存,等待CAS延迟时间(通常为1~3个时钟周期)后,读出的数据出现在数据总线上,具体时序详见SDRAM数据手册,此处不再赘述。(3)操作终止当SDRAM接收到读、写指令后,开始进行顺次的读写操作,直到达到突发长度或者突发终止指令BT出现。2.SDRAM控制器方案SDRAM控制器【6】针对SDRAM的指令操作特点,为SDRAM提供同步命令接口和时序逻辑控制,下面将以ALTERA公司的Cyclone系列FPGA为例,主机系统时钟为100MHz,使用三星公司的K4S641632E,8MByteSDRAM【7】,介绍SDRAM控制器的具体设计方法。图1为SDRAM控制器的接口原理图。图1SDRAM控制器接口原理图接口信号介绍(1)与主机接口信号CLK系统时钟信号RESET系统复位信号CMD20译码指令,如表3所示CMDACK指令应答信号,通知主机命令已被SDRAM执行ADDR地址线,根据具体情况确定位数,本例中为22位,A21、A20代表页地址BA1,BA0A19~A8代表行地址A7~A0代表列地址DATAIN/DATAOU输入、输出数据总线DM数据掩码(2)与SDRAM接口信号SADDR12位地址线,在读、写操作时,地址线分时复用为行地址和列地址BA页地址,BA0,BA1CS片选信号CKE时钟使能信号RAS、CAS、WE命令控制信号DQMSDRAM数据掩码DQ双向数据线SDRAM控制器作为顶层模块,由3个主要模块组成接口控制模块、命令生成模块、数据路径模块。下面将详细的介绍各个模块的功能和关键设计的VHDL实现方法。表3CMD命令字2.1接口控制模块接口控制模块主要实现的功能包括将CMD20翻译成接口指令和对刷新计数器的控制,如图2所示。首先通过状态机来完成对CMD20的翻译,在VHDL程序中声明一个用户自定义类型states,根据CMD20输入来决定状态的转移,完成对CMD20的解码,如下所示typestatesisnop,reada,writea,refresh,precharge,load_modesignalstatestatescasecmdiswhen011statestatenopSDRAM需要周期性刷新操作以保持数据,数据手册中通常会给出在一定的时间T内,SDRAM至少刷新X次,如果用户使用频率为FrMHz的时钟,则刷新周期Tf可以通过下面的公式计算出Tf=(TFr)/X。例如,本例中数据手册要求64ms内至少刷新4096次,系统时钟周期为100MHz,则刷新周期为64ms100MHz/4096,得出结果等于1562.5,所以至多1562个时钟周期的时间就必须对SDRAM刷新一次。刷新控制在程序中通过一个计数器来完成,当到达规定的计数周期,就向SDRAM发出REF_REQ刷新请求,直到SDRAM完成刷新操作,发出REF_ACK刷新应答信号,计数器才重新赋值开始下一次的计数。图2接口控制模块2.2命令生成模块图3是命令生成模块,主要实现了对输入的指令请求进行仲裁判断,并将仲裁后要执行的指令解码成SDRAM需要的RAS、CAS等信号,从而实现对SDRAM的控制。图3命令生成模块之所以需要仲裁机制,是因为在指令执行之前可能会发生以下情况其它指令和刷新请求同时到来刷新请求到来时,其它指令正在执行。仲裁机制实现方法如下(1)SDRAM在每一刻只有一个指令在执行(2)先到的指令先执行,即如果刷新请求到来时,其它命令正在执行中,要等到当前命令执行完成后,才能执行刷新指令(3)其它指令和刷新请求同时到来时刷新操作先执行。经过仲裁判断后,指令将传入命令生成器。命令生成器不仅要把指令解码成可控制SDRAM的信号,同时还要用三个移位寄存器对命令执行的延迟时间进行控制。第一个为指令延时寄存器,用来保证SDRAM有充足时间完成最终指令。例如,如果命令的执行需要8各时钟周期的时间,则指令延时寄存器com_delay的初值设为11111111,同时声明一个内部信号com_done,作为指令执行完成的标志的。在指令执行期间,每一个时钟上升沿到来时,移位寄存器向右移位一次,com_delay0的移入com_done,同时0移入最高位com_delay7。当com_done为0时,就说明指令的延迟时间已到,即通过com_done的值,就可以判断当前指令是否执行完成。要注意的是移位寄存器的位数和初值,应该根据SDRAM的数据手册中命令完成需要的时间和系统的时钟周期来确定。下面得例程仅供参考。ifdo_staterefreshordo_statereadaordo_statewriteaordo_stateprechargeordo_stateload_modethencommand_delay7downto011111111移位寄存器初值command_done1elsecommand_donecommand_delay0移位操作command_delay6downto0command_delay7downto1command_delay70endif当输入的指令为writea和reada指令,将引发一系列指令的执行,和其它指令相比需要附加时间。所以,声明第二个移位寄存器rw_shift,来计算这两个指令的附加时间,其工作原理和第一个移位寄存器是一样的。最后一个移位寄存器oe_shift用来为数据通道生成oe,即数据输入、输出使能信号。对于非页模式的读写来说,oe保持有效的时间取决于突发长度。并且oe有效的起始时间对读操作和写操作时不同的读操作时,oe有效的起始时间取决于CAS延时时间,而对于写操作时则在写指令开始时oe就是有效的。2.3数据路径模块数据路径模块主要是在writea和reada命令期间处理数据的路径操作。模块的结构图如图4所示。DQ是双向数据线,用来传输从SDRAM读出数据和向SDRAM写入的数据。无论是数据在读出还是写入时,都是在oe有效,即oe为高电平时才能进行传输。DM是由主机输出的数据掩码,通过DQM输出到SDRAM的LDQM和UDQM管脚,进而控制SDRAMI/O缓冲的低字节和高字节。图4数据路径模块3.总结本文结合SDRAM控制指令的特点,详细的介绍了一种基于FPGA的通用SDRAM控制器的设计方案。本文所介绍的指令状态的转移、仲裁机制的实现和移位寄存器控制指令延迟时间的方法,提供了一种SDRAM控制器的设计思想,由于SDRAM的控制机制比较复杂,具有多种突发读写的工作模式,我们可以根据实际应用中的需求情况来编写程序,实现最基本的读写和刷新操作,不必要顾全到每一种情况。SDRAM作为高速数据缓存,在基于现场可编程门阵列FPGA的控制下,将在高速、高密度、高端的数字电路领域中得到更加广泛的应用。参考文献1王诚,吴华,范丽珍,等.AlteraFPGA/CPLD设计基础篇.人民邮电出版社,2005,7.2田丰,邓建国,李巍,贾治华.SDRAM的设计与VHDL实现.电子技术应用,2003,3127477.3刘云清,佟首峰,姜会林.利用FPGA实现SDRAM控制器的设计.长春理工大学学报.2005,2844750.4宋一鸣,谢煜,李春茂.基于FPGA的SDRAM控制器设计.电子工程师,2003,2991013.5周正昆.基于FPGA的SDRAM控制器设计.现代电子技术,2003,136365,77.6SDRSDRAMcontrollerwhitepaper.,ALTERAcorporation,2002,8.http//www.altera.com/literature.7K4S641632EDATASHEET,SAMSUNGcorporation,2003,2.http//www.sumsung.com/products/Semiconductor/Sync_AsyncDRAM/SDRSDRAM/Component//64Mbit/K4S641632E.htm

注意事项

本文(基于FPGA的SDRAM控制器的设计和实现.doc)为本站会员(21ask)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网([email protected]),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

copyright@ 2015-2017 人人文库网网站版权所有
苏ICP备12009002号-5