使用Verilog实现基于FPGA的SDRAM控制器
发布时间:2008/5/26 0:00:00 访问次数:2130
    
    作者:电子科技大学电子工程学院曹华邓彬
    
    摘要:介绍了sdram的特点和工作原理,提出了一种基于fpga的sdram控制器的设计方法,使用该方法实现的控制器可非常方便地对sdram进行控制。
    
    关键词:sdram;控制器;verilog;状态机
    
    引言
    
    在基于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的特点和工作原理,提出了一种基于fpga的sdram控制器的设计方法,使用该方法实现的控制器可非常方便地对sdram进行控制。
    
    关键词:sdram;控制器;verilog;状态机
    
    引言
    
    在基于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命令并解码成
上一篇:基于FPGA的数字式心率计
热门点击
- OrCAD/PSpice9偏压点和直流扫描分
- 16位Σ-ΔA/D转换器AD7705与微控制
- 有限带宽信号的采样和混叠分析
- 一种增大放大器增益的方法
- LTC6910系列数字控制可编程增益放大器原
- 可编程多路A/D转换芯片THS1206的原理
- 四通道四象限模拟乘法器MLT04
- 使用Verilog实现基于FPGA的SDRA
- 基于FCHIP2指纹芯片的应用方案
- PCB线路板抄板方法及步骤
推荐技术资料
- 泰克新发布的DSA830
- 泰克新发布的DSA8300在一台仪器中同时实现时域和频域分析,DS... [详细]