SDRAM通用控制器的FPGA模块化设计

发布者:创新驿站最新更新时间:2012-04-07 来源: 21ic 关键字:SDRAM  通用控制器  FPGA模块化 手机看文章 扫描二维码
随时随地手机看文章

       引言

       同步动态随机存储器(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的容量改变的形式。[page]

       与主机接口信号: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】(双向数据线)。

       各个模块的设计与实现

       接口控制模块

       接口控制模块主要实现的功能是将CMD[2:0]翻译成接口指令和对刷新计数器的控制指令。接口模块在工作过程中首先通过要通过状态机来完成对CMD[2:0]的翻译。在VHDL程序中声明一个用户自定义类型states,根据CMD[2:0】输入来决定状态的转移,完成对CMD[2:0】的解码,部分代码如下:

        
           

       另外,SDRAM需要周期性刷新操作以保持数据。在模块的程序设计中,刷新周期的控制通过一个计数器来完成,到达规定的计数周期数时,接口模块通过REF_REQ信号向SDRAM发出刷新请求。直到SDRAM完成刷新操作,发出REF_AcK刷新应答信号,计数器才重新赋值,开始下一次的计数。

       命令生成模块

       命令生成模块实现对输入的SDRAM指令请求进行仲裁判断的功能,并将仲裁后要执行的指令解码成sDRAM需要的RAS、CAS等信号,从而实现指令对SDRAM的控制。仲裁机制是SDRAM控制器设计不可或缺的一个环节。仲裁机制实现要遵循如下规则:

       ·sDRAM在每一刻只有一个指令在执行;
       ·先到的指令先执行,如果刷新请求到来时,其它命令正在执行中,要等到当前命令执行完成后,才能执行刷新指令;
       ·其它指令和刷新请求同时到来时刷新操作先执行。[page]

       经过仲裁判断后,指令将传入命令生成器。命令生成器不仅要把指令解码成SDRAM需要的RAS、CAS等信号,同时还要对命令执行的时间进行控制。下面的例程仅供参考。

      

       下面介绍输入的指令为writea和reada指令时模块所进行的操作。当SDRAM的writea和reada指令到来时,将引发一系列指令的执行,和其它指令相比需要更多的附加时间。所以,在这种情况下需要声明第二个移位寄存器rw_shift来完成这两个指令的附加时间的实现。rw_shift的工作原理和第一个移位寄存器command_delay是一样的,需根据读、写的时间决定rw_shift的位数。

       最后一个移位寄存器oe_shift用来为数据通道生成数据输入、输出使能信号oe。对于非页模式的读写来说,oe保持有效的时间取决于突发长度,需要注意的是,读操作时,oe有效的起始时间取决于CAS延时时间,而对于写操作,则在写指令开始时oe就是有效的。

       数据路径模块

       数据路径模块的作用是在writea和reada命令期间生成数据的路径。在用VHDL语言程序中,用简单的赋值语句就可以实现数据路径模块。

       通用性的实现

根据SDRAM控制器的FPGA模块化设计方案生成的FPGA控制器易于修改和扩展,具有可通用的特性。在具体的应用中,针对不同的SDRAM,并不需要更改SDRAM控制器结构,只要根据datasheei中的sDRAM的容量将地址线数和数据的位数做相应修改,再依据SDRAM的时序和读、写速度更改接口控制模块中的时间信号的周期,如刷新周期、命令生成模块中移位寄存器的位数和初值等,这样就可以对不同的SDRAM进行控制。最后,生成的SDRAM控制器顶层模块如图2所示。为了证明该控制器设计方案的可行性和通用性,在Altera公司的Cyclone系列FPGA--EP1C6Q240C8中生成SDRAM控制器,根据数据手册中SDRAM的参数对控制器各模块的VHDL语言程序做相应的改动,实现了对三星公司的8MByte SDRAM K4S641632E和2MByteSDRAM K4S161622D的控制,均达到了100MHz的读、写速度。

       结语

       本方案采用的模块化思想为SDRAM控制器的开发提供了一种层次分明、易于扩展的设计思路。实验结果表明,该控制器设计紧凑,维护升级方便,易于实现对SDRAM的通用化控制,这无疑将极大的提高SDRAM应用的开发速度。

关键字:SDRAM  通用控制器  FPGA模块化 引用地址:SDRAM通用控制器的FPGA模块化设计

上一篇:降压型PWM控制器APl510原理及应用电路分析
下一篇:MEMS传感器弥补GPS的不足

推荐阅读最新更新时间:2024-05-02 22:00

业界唯一可量产65nm FPGA与DDR3 SDRAM 实现互操作
赛灵思携手领先供应商把更低功耗更高性能领域DDR3 SDRAM控制器设计变为现实 2007年8月1日,北京 ——全球可编程逻辑解决方案领导厂商赛灵思公司(Xilinx, Inc. (NASDAQ: XLNX))日前宣布其Virtex-5 FPGA器件已顺利实现了与领先存储器供应商的800 Mbps DDR3 SDRAM器件的互操作性。与Virtex-5器件实现经硬件验证的互操作性,可帮助客户通过这个业界唯一正式投入量产的高性能65nm FPGA产品系列,率先享受到DDR3 SDRAM技术带来的优势。 此次成功的互操作性硬件测试采用了领先存储器供应商美光科技(Micron Technology)和Elpida存储公司的器件。通
[焦点新闻]
要开发像工业计算机那样的通用机器人控制器
智能控制的发展使得 机器人 日益复杂。机器人 控制器 的精确度和稳定性已成为影响机器人性能的关键因素。 由于中国通过和实施了“智能制造”和“中国制造2025”等政策,机器人行业走过了繁荣发展的阶段。2014年,中国工业机器人市场的销售量超过56000台,成为全球最大的工业机器人市场,总体行业增长了54%。 智能控制的发展使得机器人日益复杂。机器人控制器的精确度和稳定性已成为影响机器人性能的关键因素。 研华(中国)设备自动化行业发展总监李国忠对公司如何开发可像工业计算机那样操作的机器人控制器进行了探讨。 李先生表示:“有些一开始使用低成本控制器的用户最后会发现半年后控制器的精确度和稳定性并不能达到要求。”目前,大部分机器
[嵌入式]
S3C2440与SDRAM的地址连线分析
该文章讲述了S3C2440与SDRAM的地址连线分析. S3C2440有27根地址线ADDR ,8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx的地址空间,ngcsx引脚为低电平,选中外设。 2^27=2^7 * 2^10 * 2^10 = 128Mbyte 8*128Mbyte = 1Gbyte 所以S3C2440总的寻址空间是1Gbyte。 市面上很少有32位宽度的单片SDRAM,一般选择2片16位SDRAM扩展得到32位SDRAM. 选择的SDARM是HY57V561620F,4Mbit * 4bank *16,共32Mbyte。 首先了解下SDRAM的寻址原理。 SDRAM
[单片机]
S3C2440与<font color='red'>SDRAM</font>的地址连线分析
基于Stratix III的DDR3 SDRAM控制器设计
 1 引言   DDR3 SDRAM是由JEDEC(电子设备工程联合委员会)制定的全新下一代内存技术标准,具有 速度更快、功耗更低、效能更高以及信号质量更好等优点,对于解决高速系统(例如某些高速图 像处理系统)设计中由于存储器的处理速度和带宽所产生的瓶颈,改善和提高系统性能提供了更 好的解决方案。   本文在分析DDR3 SDRAM的特点和基本控制方式的基础上,给出了采用Altera公司最新的 ALTMEMPHY高速存储器接口方案设计的DDR3 SDRAM控制器,并在Altera公司的StratixIII系列 FPGA上完成了验证和实现。目前,使用该控制器的DDR3 SDRAM已经在某真三维立体显示器项目 中作为高速图像缓存得
[工业控制]
基于Stratix III的DDR3 <font color='red'>SDRAM</font><font color='red'>控制器</font>设计
【2440裸机】Nand Flash 简单操作
head.s文件 @****************************************************************************** @ File:head.s @ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行 @****************************************************************************** .text .global _start _start: @函数disable_watch_dog, memsetup, init_n
[单片机]
S3C2440通过J-Link直接往SDRAM中烧程序
由于S3C2440核心板以及主板均为实验室自制,使用友善之臂的H-Jtag不能操作,因此使用J-Link来测试焊接完的核心板是否工作正常 步骤: 1. 连接好核心板,并开电 2. 使用J-Link自带的J-Link commander(安装J-Link时已经安装了) 启动J-Link commander,如果没检测到CPU,执行usb命令连接JLink,注意,S3C2440 CPU的ID是:0x0032409D 3. 在J-Link commander下载运行特制的程序 对于S3C2410、S3C2440处理器,它们内部有4K的SRAM,当使用Nor Flash启动时,地址为0x40000000;当使用Nan
[单片机]
S3C2440通过J-Link直接往<font color='red'>SDRAM</font>中烧程序
Cortex-M3 (NXP LPC1788)之SDRAM操作
网上看到了一些关于1788 SDRAM的调试代码,基本上都一样,本人在调试1788 SDRAM过程中,遇到了一些大麻烦,本人使用的的SDRAM芯片为MT48LC16M162. 本人遇到的问题如下: 1:1788芯片硬件仿真初期,调试SDRAM寄存器配置错误,导致1788芯片无法进入仿真状态,只能用Flash Magic才能擦除。 2:1788芯片的SDRAM有一个很重要的寄存器,官方驱动为 LPC_SC- EMCDLYCTL 寄存器的设置,就算你和官方所使用芯片一样,只要电路板有差异,这个寄存器的设置将有可能导致SDRAM在使用过程中出现错误。 3:还有对于时序的设置,这一步相对来说就比较简单了。 下面
[单片机]
基于VHDL的SDRAM接口设计
RAM通常用于数据和程序的缓存,随着半导体工业的发展,RAM获得了飞速的发展,从RAM、DRAM(Dynamic RAM,即动态RAM)发展到SDRAM(Synchronous Dynamic RAM,即同步动态RAM),RAM的容量越来越大、速度越来越高,可以说存储器的容量和速度已经成为半导体工业水平的标志。   1 任务背景   SDRAM具有大容量和高速的优点,目前其存取速度可以达到100~133MHz,单片容量可以达到64Mbit或更高,因此在需要高速、大容量存储器的系统中得到广泛应用,如应用在目前的计算机内存中。但是SDRAM的控制比较复杂,其接口不能直接与目前广泛应用的普通微处理器如MCS-51系列、Motorol
[模拟电子]
基于VHDL的<font color='red'>SDRAM</font>接口设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved