基于FPGA的SDRAM控制器设计_第1页
基于FPGA的SDRAM控制器设计_第2页
基于FPGA的SDRAM控制器设计_第3页
基于FPGA的SDRAM控制器设计_第4页
基于FPGA的SDRAM控制器设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 计算机应用V ol. 29电子工程师N o. 92003基于FPGA 的SD RAM 控制器设计Design of SD RAM Controller B ased on FPG A宋一鸣1, 谢煜2, 李春茂1(1. 西南交通大学电气工程学院四川成都610031;2. 商丘师范学院物理系河南商丘476000【摘要】介绍了SDRAM 的结构和控制时序特点, 以及基于FP G A 的SDRAM 控制器设计的关键技术, 并引入仲裁机制, 从而实现了快速高效地控制SDRAM 。关键词:SDRAM, FP G A , Verilog , 状态机, 仲裁机制【Abstract 】In this art

2、icle , the structure and control sequence SDRAM are de 2scribed , and the critical techniques in the design of SDARM introduced. In order to control the SDRAM more effectively , the the design.K eyw ords :synchronized dynamic random , field programmable gate array (FP G A , Verilog , status 2machine

3、 , 1引言SDRAM 是新一代高速、高容量动态存储器, 与SRAM 相比, 不仅容量大得多, 且价格也便宜得多。目前,PCI 总线已取代ISA 总线成为控制系统总线的主流, 随之而来的是对数据访问需求量的增大,SRAM 的速度和容量已远远不能满足这些系统的需要。目前市场上虽有一些通用SDRAM 控制器, 但设置复杂, 且无法针对特定的系统, 因此性能不能发挥到最好, 这在很大程度上抵消了使用SDRAM 的优势。因此, 我们提出使用可编程逻辑器件平台和硬件描述语言, 针对特定的系统定制自己需要的SDRAM 控制器, 不仅可以节省系统资源, 而且可以最大限度地发挥SDRAM 的作用, 从而提升系

4、统的性能。我们在一项图像处理系统中采用Verilog 语言在FP G A 上实现了SDRAM 控制器的设计, 成功地使SDRAM 通过PCI 接口完成了与PC 机内存之间的可靠的数据交换。下面分3部分对SDRAM 控制的时序、SDRAM 控制器设计的关键技术、以及设计的实现和仿真结果给予介绍。2SD RAM 的控制时序SDRAM 的操作命令如表1所示。表1SDRAM 操作命令表功能忽略命令无操作激活读写突发中止预充电自动刷新模式寄存器设置写/输出使能/CS #H L L L L L L L L -RAS #X H L H H H L L L -CAS #X H H L L H H L L -W

5、E #X H H H L L L H L -DQM X X X L/H8L/H8X X X X L HADDR X X 块/行块/列块/列X 代码X 代码-DQs X X X X 有效激活X X X 激活注:H 表示电平为1,L 表示电平为0,X 表示电平为任意。收稿日期:200320521910 宋一鸣, 等:基于FPG A 的SD RAM 控制器设计SDRAM 需要正确的上电逻辑和模式设置来进入期望的工作模式。访问特定的逻辑单元必须先激活相应的存储块, 并锁定对应的行列地址。另外, 必须有定时的刷新逻辑保持数据不丢失。SDRAM 有多种操作模式, 由引脚CS #、RAS #、CAS #、W

6、E #和地址信号的不同状态来决定, SDRAM 控制器必须为SDRAM 提供满足时序要求的这些控制信号, 以准确地控制SDRAM 的各种不同操作。2. 1SD RAM 初始化和模式设置SDRAM 的所有电源引脚必须同时加电, 并且所有输入和电源引脚上电电压不得超过标称值0. 3V 。加电完成后应等待100s 后再对所有BAN K 进行预充电, 等待期间要求C KE 保持高电平。预充电后要执行两个自动刷新命令, 然后发出模式设置命令以初始化模式寄存器。由于上电后模式寄存器的状态是不确定的, 所以在进行SDRAM 前一定要先设置模式寄存器。据输入线。其中,A3为Burst 类型,A6A4为,A8A

7、7为操作模式,A9为写Burst 模式。模式寄存器的设置值必须与器件的延迟参数以及读写操作的控制时序一致。模式寄存器的设置值如图1所示。2. 2SD RAM 的读写控制逻辑为减少I/O 引脚数量,SDRAM 复用地址线A0A11。对SDRAM 的访问要以激活命令开始, 随后才能图1模式设置值有一个间隔, 即为CAS 反应时间,CAS 可以设置成1、2或3个时钟。对SDRAM 的读写操作一般以Burst 模式进行,Burst 的长度可以设置为1、2、4、8以及全页面, 最常用的Burst 长度是8个。2. 3刷新逻辑和预充为保持SDRAM 上的数据不丢失, 必须定时刷新, 刷新计数器决定了刷新的

8、时间间隔, 刷新计数器要保证每个单元都能按一定周期刷新。SDRAM 提供两种类型的刷新模式:自动刷新和自刷新。自动刷新在正常操作中进行, 但不持久, 因此需要定时进行刷新, 这样就会占用系统资源, 降低系统性能。而自刷新模式无需系统时钟就能保持数据不丢失。两种模式相比, 自动刷新实现较为简单, 而自刷新功耗更小。图2是带自动预充的Burst 读写时序图 。发出读或写命令。与激活命令同时出现的地址位用来选择所要访问的块和行, 其中BA1/BA0用来选择块, A0A11用来选择所要访问的行; 与后面读写命令一起出现的地址位用来选择一个Burst 所要访问的起始列。 在读命令发出后到第一个有效数据出

9、现之间图2带自动预充的Burst 读写时序11 计算机应用V ol. 29电子工程师预充命令用来对BAN K 预充电或关闭已激活的BAN K 。当CS 、RAS 和WE 为低电平而CAS 为高电平时为预充命令。SDRAM 既可以分别预充特定BAN K , 也可以同时作用于所有BAN K 。SDRAM 的地址线不能直N o. 920033基于FPG A 的SD RAM 控制器设计SDRAM 的控制时序虽很复杂, 但针对特定的系接相连, 这就需要SDRAM 控制器提供一种地址映射, 在外部地址和SDRAM 内部地址线之间图4刷新状态机建立对应关系。本文将外部地址的高位映射到SDRAM 的行地址,

10、低位映射到SDRAM 页面内的列地址。控制器在NOP 状态下等待存储器读写信号出现, 然后进入激活状态, 控制器激活指定的BAN K (由BS0、BS1决定 , 同时进行行地址锁定。此时存储器地址线提供A11A0共12。SDRAM 完成行地址锁定后, 再经过1。需要有CAS 反应时间, 所以读写, 在完成行列地址锁定后, 写操作的有效数据在下一个时钟周期即可给出, 不需要等待。而读操作的有效数据出现要由CAS 反应时间来决定, 如果CAS 反应时间为2, 则读有效数据要在读命令之后2个时钟周期后才能出现。2种操作的不同在状态机上可以很清楚地表示出来, 见图5和图6 。统不可能把所有功能都用到,

11、 只用到部分必要的功能。笔者针对系统设计的需要定制了以下4种必需的SDRAM 功能:支持Burst 长度为8的读写操作; 自动刷新; 初始化; 读、写、自动刷新和初始化之间的优先级仲裁机制以及转换机制。具有以上功能的SDRAM 控制器可满足系统对SDRAM 访问的需要, 并舍去了对系统无用的功能。这样不仅可减小开发难度, 还可节省系统资源和成本, 提升系统性能。3. 1初始化上电后, 外部产生的控制器, SDRAM 控此始化状态。对SDRAM 进行初始化, , 完成上电、预充电、自动刷新和模式寄存器设置。在进行Verilog 程序设计时, 可通过状态机实现此过程, 如图3所示 。图3初始化状态

12、机图3中NOP 指的是空操作, 具体等待长度可以查看相关芯片资料, 在此不作详述。3. 2自动刷新SDRAM 要求定时进行刷新, 以保持数据不丢失。以M ICRON 公司的M T48LC4M32B2YG 27芯片为例, 共需4×103次刷新周期/64ms , 即每15. 625s 刷新一次才能满足需要。SDRAM 采用的是33MHz 的PCI 总线时钟, 即每420个时钟周期启动一次刷新命令, 为此在SDRAM 控制器中设置一个定时器, 每计数到420便发出刷新命令。同样, 刷新操作也是由一系列SDRAM 命令组成, 每次启动刷新操作前要预充电, 然后再执行两个自动刷新命令完成一次刷

13、新操作。在Verilog 中可用图4所示的状态机来实现自动刷新。3. 3读写控制逻辑SDRAM 采用地址线行列复用技术, 对于存储器单元的访问基于页面, 而外部地址线总线是独立的, 与12图5读状态机图6写状态机3. 4仲裁机制为了合理地控制和管理系统中对SDRAM 的访问操作,SDRAM 控制器必须实现一个特别的优先级仲裁算法, 以便在外部设备同时提出多个SDRAM 操作时, 能依据该仲裁算法判决出哪个操作应获得对SDRAM 的控制权。SDRAM 控制器可确保在任何时刻系统中最多对SDRAM 进行1种操作, 而决不会出现多个操作同时占用SDRAM 而造成冲突的情况。由于SDRAM 仲裁算法从

14、根本上说与SDRAM 技术无关, 所以设计者可以根据实际需要, 自由地进行选择和修改。SDRAM 优先级仲裁算法通常有两种:一种是固定优先级算法, 另一种是循环优先级算法。但不管哪一种仲裁算法都必须满足以下3个基本要求:(1 每一时刻只能对SDRAM 进行1种操作;(2 先请示者先响应, 且在1种操作周期内不被打断; 宋一鸣, 等:基于FPG A 的SD RAM 控制器设计(3 同一时刻有多个操作时, 按优先级排序。固定优先级算法的优先级是事先定义好的, 在仲裁过程中优先级顺序是不变的, 而循环优先级算法的优先级顺序在仲裁过程中不是一成不变, 而是随一定规律变化的。相比较而言, 循环优先级算法

15、比较灵活, 各种操作占用SDRAM 的机会均等, 在一定意义上循环优先级算法是最公平的算法。但循环优先级算法在处理大批量实时数据时会造成效率降低。此外, 循环优先级算法复杂, 占用的系统资源较多, 设计难度也较大。而采用固定优先级算法, 可对那些有重要数据访问或有大量实时数据操作和经常需要占用SDRAM 的操作赋予较高的优先权。由于笔者设计的SDRAM 控制器是应用在实时图像处理系统中的, 对数据处理效率要求很高, 因此设计中选用固定优先级算法。对以上4种SDRAM 操作, 本文规定优先级如下:初始化>刷新>读>写>其它操作运行时, 外部设备要对SDRAM 进行一种操作

16、时, 需要先发送占用请求, SDRAM 仲裁器接收到占用请求后, 按仲裁算法予以响应。这个仲裁机制可很方便地用Verilog 语言描述。4SD RAM 控制器设计在FPG A 上的实现本文设计的SDRAM 控制器基于Verilog 语言编写程序, 采用模块化设计, 分为初始化模块、刷新模块、命令请求模块、, 各模块之间通过函数接口连接7。图7在FP G A 上的仿真波形本文设计的实现平台为Altera 公司的ACEX 系列FAP G A 芯片EP1K100QC20821, 芯片资源为4992个逻辑单元, 50K B RAM 。所采用的开发软件为QuartusII 2. 1, 采用synplif

17、y 软件进行综合优化。经过综合, 系统时钟为85MHz , 可以支持66MHz 的PCI 总线操作, 占用50个逻辑单元和3K B RAM , 仅占用5%左右的系统资源, 这个SDRAM 控制良好,SDRAM 的数据读写速度完全满足系统需要, 能够较好地完成SDRAM 与图像处理模块之间的数据交换。参考文献1陈飞. SDRAM 控制器的VHDL 实现. 电子产品世界,2003(32易先清, 莫松海, 喻晓峰. 微型计算机原理与应用. 北京:电子工业出版社,20013张亮. 数字电路设计与VerilogHDL. 北京:人民邮电出版器的设计作为整个图像处理系统的子模块最大限度地节省了系统资源, 整个系统下载到FP G A 后运行性能(上接第9页社,2000的优化和软硬件结合,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论