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

技术分类: 可编程器件  | 2006-06-26
来源:21control | 电子科技大学电子工程学院 曹华 邓彬

       引言

       在基于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控制器与外部的接口示意图

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

0
0
(请您对文章做出评价)
1】【2】【3
加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

简化FPGA测试及调试

时间:2008-01-10 10:00:00-12:15:00
简介:随着FPGA的设计速度尺寸和复杂度明显增长,使得整个设计流程中的验证和调试部分成为当前FPGA系统的关键部分。获得FPGA内部信号…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会