使用Verilog实现基于FPGA的SDRAM控制器

发布者:VS821001最新更新时间:2006-06-28 来源: 21control关键字:控制器  模块  sdram 手机看文章 扫描二维码
随时随地手机看文章

   引言

  在基于FPGA的图象采集显示系统中,常常需要用到大容量、高速度的存储器。而在各种随机存储器件中,SDRAM的价格低、体积小、速度快、容量大,是比较理想的器件。但SDRAM的控制逻辑比较复杂,对时序要求也十分严格,使用很不方便,这就要求有一个专门的控制器,使系统用户能很方便地操作SDRAM。为此,本文提出了一种基于FPGA的SDRAM控制器的设计方法,并用Verilog给于实现,仿真结果表明通过该方法设计实现的控制器可以在FPGA芯片内组成如图1所示的SDRAM接口,从而使得系统用户对SDRAM的操作非常方便。

  SDRAM简介

  SDRAM器件的管脚分为控制信号、地址和数据三类。通常一个SDRAM中包含几个BANK,每个BANK的存储单元是按行和列寻址的。由于这种特殊的存储结构,SDRAM有以下几个工作特性。

  ● SDRAM的初始化

  SDRAM在上电100~200μs后,必须由一个初始化进程来配置SDRAM的模式寄存器,模式寄存器的值决定着SDRAM的工作模式。

  ● 访问存储单元

  为减少I/O引脚数量,SDRAM复用地址线,所以在读写SDRAM时,先由ACTIVE命令激活要读写的BANK,并锁存行地址,然后在读写指令有效时锁存列地址。一旦BANK被激活后只有执行一次预充命令后才能再次激活同一BANK。

  ● 刷新和预充

  SDRAM的存储单元可以理解为一个电容,总是倾向于放电,因此必须有定时的刷新周期以避免数据丢失。刷新周期可由(最小刷新周期÷时钟周期)计算获得。对BANK预充电或者关闭已激活的BANK,可预充特定BANK也可同时作用于所有BANK,A10、BA0和BA1用于选择BANK。

  ● 操作控制

  SDRAM的具体控制命令由一些专用控制引脚和地址线辅助完成。CS、RAS、CAS和WR在时钟上升沿的状态决定具体操作动作,地址线和BANK选择控制线在部分操作动作中作为辅助参数输入。由于特殊的存储结构,SDRAM操作指令比较多,不像SRAM一样只有简单的读写。

  SDRAM控制器的设计实现

  ● 总体设计框图和外部接口信号

  SDRAM控制器与外部的接口示意图由图1给出,控制器右端接口信号均为直接与SDRAM对应管脚相连的信号,此处不做介绍。控制器左端的接口信号为与FPGA相连的系统控制接口信号,其中,CLK133为系统时钟信号,RESET_N为复位信号,ADDR为系统给出的SDRAM地址信号,DAIN是系统用于写入SDRAM的数据信号,FPGA_RD和FPGA_WR为系统读、写请求信号(1为有效,0为无效),SDRAM_FREE是SDRAM的空闲状态标示信号(0为空闲,1为忙碌),FDATA_ENABLE是控制器给系统的数据收发指示信号(为0时,无法对SDRAM进行数据收发;为1时,若是系统读操作,则系统此时可从DAOUT接收SDRAM的数据,若是写操作,则系统此时可以通过DAIN发送数据给SDRAM)。

  SDRAM控制器的结构组成如图2所示,包括系统控制接口模块、CMD命令解析模块、命令响应模块、数据通路模块共四个模块。系统控制接口模块用于接收系统的控制信号,进而产生不同的CMD命令组合;CMD命令解析模块用于接收CMD命令并解码成操作指令;命令响应模块用于接收操作指令并产生SDRAM的操作动作;数据通路模块则用于控制数据的有效输入输出。

  SDRAM控制器设计的状态机实现原理如图3所示,包含了9个状态,其中从Precharge到Mode set为SDRAM上电后的初始化过程,其余状态为SDRAM的正常读写及刷新操作过程。

  ● 各模块的设计

  (1) 系统控制接口模块

  该模块内含了初始化机制和系统指令分析机制。初始化机制不仅要完成对SDRAM的初始化配置,还要完成对控制器的初始化配置,使控制器与外部SDRAM的工作模式一致。其过程如下:由计数器控制在系统上电200μs左右后,先进行SDRAM的初始化配置工作,由一个Precharge all bank指令完成对所有BANK的预充,接着是多个Refresh指令,然后是模式配置指令LOAD_MODE ,完成SDRAM的工作模式设置。之后进行控制器的初始化配置工作,先发出指令LOAD_REG1给控制器载入模式字,再发出LOAD_REG2指令载入控制器的刷新计数器值,完成控制器初始化配置。

  上述初始化过程结束后,系统指令分析机制才可接收并分析系统的读写信号和地址信息,以及从下个模块反馈回来的CMDACK信号,并产生对应的CMD命令和SADDR地址信息给CMD命令解析模块。通过程序设置,实现了根据初始化配置的参数来确定在读写到特定时刻发出Precharge或者Refresh的CMD指令,从而简化了系统的控制。而每当收到CMDACK为1时,表示CMD指令已经发出并有效,此时就要发出NOP命令(CMD=000)。要说明的是,SADDR是分时复用的,在初始化载入模式时,SADDR用以传输用户自己定义的模式字内容;而在正常的读写期间,SADDR作为地址线传输SDRAM所需的行、列和块地址。此外,系统指令分析机制会根据控制器对SDRAM的操作处于什么样的状态,而反馈SDRAM_FREE和FDATA_ENABLE信号给系统用户。

  (2) CMD命令解析模块

  该模块对CMD指令进行判断,其结果就是输出相应的操作指令信号给命令响应模块。例如,CMD为001时,则会输出do_read信号为1,CMD为010时,则会输出do_write信号为1,在同一时刻,只会输出一种有效的的操作指令。

  此外,该模块内含用以预设某些模式参数的模式寄存器,主要包括三类:第一类是SDRAM模式控制寄存器,在LOAD_MODE指令时,将该寄存器的值送入SDRAM的模式寄存器中,以控制SDRAM的工作模式。第二类是SDRAM控制器的参数寄存器(LOAD_REG1),使得SDRAM控制器的工作方式与外部的SDRAM器件的工作方式匹配。第三类是SDRAM的刷新周期控制寄存器,该寄存器预设用户定义的自动刷新计数值,用于SDRAM的刷新周期预设。上述三类寄存器的预设值都是系统控制接口模块在初始化时通过SADDR传送给来的。

  (3) 命令响应模块

  该模块的作用是根据从CMD命令解析模块得到的操作指令,做出符合SDRAM读写规范的操作动作,来进行用户期望的操作;给出数据选通信号OE,来控制数据通路模块(写操作时OE为1,读操作时OE为0)。此外,该模块把系统非复用的地址ADDR处理为SDRAM复用的地址,分时送给SA、BA。程序中地址复用方法为:

  assign raddr = ADDR[ROWSTART + ROWSIZE -1:ROWSTART] //raddr为行地址
  assign caddr = ADDR[COLSTART + COLSIZE -1:COLSTART] //caddr为列地址
  assign baddr= ADDR[BANKSTART +`BANKSIZE -1:BANKSTART]//baddr为BANK地址
  (ROWSTART、COLSTART、BANKSTART分别为行、列、块在ADDR中的起始位)

  在程序中,WRITEA和READA的CMD指令实际隐含了ACTIVE命令,所以该模块在收到do_write或do_read指令后,会先进行激活动作,经过初始化配置规定的CAS延迟时间之后再进行读写动作。例如初始化时,模式字规定CAS=2,BURST LENGTH=PAGE,则从命令接口模块收到do_write=1后,会先做出激活动作并给出行地址(发出RAS_N=0,CAS_N=1,WE_N=1,SA=raddr),过2个时钟延迟后,再做出写动作并给出列地址(发出RAS_N=1,CAS_N=0,WE_N=0,SA=caddr)。

  此外,收到各类操作指令后,该模块会反馈给CMD命令解析模块cmdack信号为1,并最终反馈到系统控制接口模块的CMDACK信号为1,如果没有收到任何操作指令,则cmdack=0,CMDACK信号为0。

  (4) 数据通路模块

  该模块受OE信号的控制,使数据的进出和相应的操作指令在时序上同步。OE为1时,数据可由DQ脚写入SDRAM,OE为0时,数据可从SDRAM的DQ脚读出。

  控制器的使用及仿真时序---根据系统设计对SDRAM读写要求的不同,对控制器进行简单的参数修改(主要是初始化时模式内容字的设置),即可使对SDRAM的控制符合自己的要求。该控制器使得系统对SDRAM的操作非常简单。以写操作为例,初始化结束后,只要SDRAM空闲,系统就会收到SDRAM_FREE有效信号,此时可以发出FPGA_WR指令,同时给出ADDR地址信息,在收到反馈的FDATA_ENABLE有效后,系统将数据通过DAIN写到SDRAM中去,即完成写操作,系统无须关心SDRAM的刷新和预充。仿真时序图如图4、图5和图6所示,在写和读时序中,CAS=2,BURST LENGTH=PAGE,DC表示无关(Don’t care)。

  

  仿真结果表明,该控制器可以使得系统对SDRAM的控制非常简单、方便。

  结束语

  在实际应用中,使用ALTERA公司的Cyclone FPGA器件进行设计,设计输入采用Verilog来完成,实现了上述的SDRAM控制器接口电路。此外,由于采用了参数化设计思想,对特定容量的SDRAM的特定工作模式而言,只要根据其器件参数进行设定,该控制器就可以适用特定SDRAM的特定工作模式,具有一定的通用性。

关键字:控制器  模块  sdram 引用地址:使用Verilog实现基于FPGA的SDRAM控制器

上一篇:精确综合:下一代FPGA综合平台
下一篇:自动断电的CPLD

推荐阅读最新更新时间:2024-05-13 18:12

德州仪器反激控制器超越 10 至 65W AC 适配器的能源之星 5 待机功耗要求
2013 年 3 月 29 日,北京讯 日前,德州仪器 (TI) 宣布推出业界首款超过笔记本、电机控制、智能仪表、微型逆变器以及其它大功率应用所需 10 至 65W AC/DC 适配器能源之星 5 待机功耗要求的反激控制器,进一步壮大其高能效、空载适配器电源控制器产品阵营。LM5023 反激控制器与 TI 获奖 WEBENCH® 在线设计工具配合使用,可简化并加速高电压 DC/DC 设计流程。如欲了解更多详情,敬请访问: www.ti.com.cn/lm5023-pr-cn 。 TI 集成 700mA 驱动器的最新 LM5023 隔离式准谐振脉宽调制 (PWM) 控制器支持高达 90% 的高效率、低 EMI 以及不足 10mW
[电源管理]
现场总线FESTO模块配置步骤分享
总线节点CPX-M-FB35 工作电压范围 DC : 18 V ... 30 V 参数设置 : 诊断特性,防错响应,强制通道,信号设置,系统参数. 附加功能 : 通过现场总线实现非环参数访问,通过以太网实现非环数据访问,快速启动 (FSU),通过现场总线实现通道级诊断,纯文本启动参数设置,通过现场总线,用过程参数可显示系统状态,附加诊断接口,用于人机界面. LED 显示屏,总线专用 M/P:维护/PROFIenergy NF:网络故障 TP1:网络活动端口 1 TP2:网络活动端口 2 LED 显示屏,产品特点 M:修改,参数设置 PL:负载电源 PS:电子元件电源、传感器电源 SF:系统故障 气接口VABA-S
[嵌入式]
现场总线FESTO<font color='red'>模块</font>配置步骤分享
整车控制器VCU控制原理图解析
组成 整车控制器主要由 硬件 和软件组成,硬件包括壳体和硬件电路,软件分为应用软件和底层软件。 壳体主要用于硬件电路的保护以及密封,要满足防水、防尘等清洁度要求,也要满足避免跌落、振动等 机械 要求。 硬件电路主要由主控 芯片 (32位处理芯片)及周边的 时钟 电路、复位电路、 电源模块 组成,一般还配备数字 信号 / 模拟 信号处理电路,频率信号处理电路和 通信接口 电路等。 应用软件和底层软件一般由 C语言 编写。应用软件主要是上层控制策略,主要负责根据车辆状态和驾驶员意图实时控制能量流向和分配比例。底层软件主要负责 单片机 初始化设置、 CAN 总线信号的实时收发和输入、输出信号的实时处理与诊断。
[汽车电子]
整车<font color='red'>控制器</font>VCU控制原理图解析
单片机外部模块供电问题
问题产生:因为stm32最小开发板上没有5V的针脚,于是把超声波模块的VCC和GND接到电脑USB接口供电,STM32F103C8T6的电源是用电源适配器接排插的。程序运行不正常。 分析原因:估计电平不匹配,造成时序不同步。 解决方法:外部模块和STM32开发板的电源要统一。可以从电源适配器接开发板处多并列几个VCC和GND
[单片机]
基于单片机设计的舞台吊杆控制器
在舞台机械设备中,吊杆起着重要的伤脑筋。在大型的影剧院,一场演出往往需要调动大量的舞台背景,有时要控制多达64路的吊杆同时动作。操作人员要在现场不断变换舞台背景,控制室人员要不断地和现场人员进行协调,这给舞台控制带来了很大不便。对吊杆的集中控制、实时响应来自多路的请求及吊杆位置的精确定位是设计中要解决的三个关键问题。目前的舞台控制系统大都通过采用光电编码盘产生脉冲信号的方式来获取吊杆的移动距离,并直接用单片机进行计数和控制。这种方法在响应多路请求时,往往会因为单片机任务繁重而造成计数脉冲丢失,引起测量误差。综上所述,本文提出了用CYGNAL单片机和FPGA设计舞台吊杆控制器的方法。 1 舞台吊杆控制系统的组成及工作原理 舞台吊
[单片机]
基于单片机设计的舞台吊杆<font color='red'>控制器</font>
STM32一键连接JQ8400-FLJQ8900语音模块程序分析
首先是JQ8900.C #include JQ8900.h #include delay.h //初始化PB5使能端口的时钟 //SDA IO初始化 void JQ8900_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //LED0-- PB.5
[单片机]
汽车尾灯和刹车灯控制器
长期用于消费电子产品的发光二极管(LED)最近被用于汽车照明,现在它们在量产车中提供信号功能、日间行车灯和内部照明。随着这种照明技术的上路,制造商继续研究应用它的新方法,利用LED大灯和尾灯提供的造型可能性。 红色LED现在广泛用于尾灯。成本仍然是一个问题,但安全性、环境友好性和造型灵活性等因素对LED有利。最受欢迎的应用之一是中央刹车灯。这种设计理念展示了一种将相同的LED阵列用于尾灯和刹车灯的方法。 LED的亮度由一个简单的开关控制,允许在行驶时提供昏暗的照明,在制动时提供明亮的照明。框图如图1所示,包括AD8240 LED驱动器/监视器、PNP调整管和PWM发生器。AD8240提供恒定电压以驱动LED灯。它还提供经济
[嵌入式]
汽车尾灯和刹车灯<font color='red'>控制器</font>
OBD车载诊断蓝牙模块方案
通过蓝牙BLE数据传输技术,应用在OBD 于车载诊断中,彻底改变了我们诊断和监控车辆性能的方式。 自 1990 年代以来,OBD 系统已成为许多国家/地区法律的强制要求,已成为现代汽车的重要检测监控配件状态部分。 OBD 系统是一种基于计算机的系统,用于监测和控制车辆发动机、变速箱和排放装置的各个部件。 它由一系列传感器、处理器和执行器组成,它们协同工作以保持发动机平稳高效地运行。 OBD 系统不断监控车辆的性能并记录出现的任何问题。 这些问题作为诊断故障代码 (DTC) 存储在系统的内存中,机械师或技术人员可以使用诊断工具访问这些代码。 诊断工具插入通常位于仪表板下方的 OBD 端口,以检索 DTC 并诊断问题。 蓝牙BLE
[嵌入式]
小广播
最新应用文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved