新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA 的DDR SDRAM控制器在高速数据采集系统中

基于FPGA 的DDR SDRAM控制器在高速数据采集系统中

作者:时间:2012-11-05来源:网络收藏

实现数据的高速大容量存储是数据采集系统中的一项关键技术。本设计采用Altera 公司Cyclone系列的 完成了对 的控制,以状态机来描述对 的各种时序操作,设计了 的数据与命令接口。用控制核来简化对DDR SDRAM 的操作,并采用自顶至下模块化的设计方法,将控制核嵌入到整个数据采集系统的控制模块中,完成了数据的高速采集、存储及上传。使用开发软件Quartus II 中内嵌的逻辑分析仪SignalTap II 对的工作流程进行了验证和调试。最终采集到的数据波形表明,完成了对DDR SDRAM 的突发读写操作,达到了预期设计的目标。

本文引用地址:http://www.eepw.com.cn/article/189786.htm

DDR SDRAM 是Double Data Rate SDRAM 的缩写,即双倍速率同步动态随机存储器。

DDR 内存是在SDRAM 内存基础上发展而来的,能够在时钟的上升沿和下降沿各传输一次数据,可以在与SDRAM 相同的总线时钟频率下达到更高的数据传输率。本设计中采用Altera 公司Cyclone 系列型号为EP1C6Q240C8 的 实现,以Hynix 公司生产的型号为HY5DU121622B(L)TP 的DDR SDRAM 为存储器,完成了对数据的高速大容量存储。

1 DDR SDRAM 的控制原理及存储功能的实现

DDR SDRAM 支持的常用命令有7 种:空操作(NOP)、激活操作(Active)、突发读(BurstRead)、突发写(Burst Write)、自动刷新(Autorefresh)、预充电(Precharge)、模式寄存器配置(Mode Register Set)。所有的操作命令都是通过信号线RAS_N、CAS_N、WE_N 共同控制来实现的。在对DDR SDRAM 进行存取数据操作之前,首先要对其初始化,即设置DDR SDRAM的普通模式寄存器和扩展模式寄存器,确定DDR SDRAM 的工作方式,这些设置包括突发长度、突发类型、CAS 潜伏期和工作模式以及扩展模式寄存器中的对DDR SDRAM 内部延迟锁定回路(DLL)的使能与输出驱动能力的设置。

初始化完成之后,DDR SDRAM 便进入正常的工作状态,此时便可对存储器进行读写和刷新。DDR SDRAM 在一对差分时钟的控制下工作。命令(地址和控制信号)在每个时钟的上升沿被触发。随着数据DQ 一起传送的还包括一个双向的数据选通信号DQS,接收方通过该信号来接收数据。DQS 作为选通信号在读周期中由DDR SDRAM 产生,在写周期中由存储器的产生。该选通信号与数据相关,其作用类似于一个独立的时钟,并满足相应的时序要求。由于DDR SDRAM 的数据接口在时钟的两个沿的触发下工作,其数据宽度是存储器数据宽度的一半。为实现数据的大容量存储,设计时采用的是一个控制核同时对两片DDR SDRAM 进行操作,外接数据线的宽度由单片DDR SDRAM 的16 位扩展到32位。

对DDR SDRAM 的读和写操作是基于突发的,即从一个选定的地址单元开始,连续存取已设置长度的地址单元,该长度就是所谓的突发长度。DDR SDRAM 提供的可编程的读或写的突发长度为2,4 或8。数据的存取以一个激活命令(Active)开始,接着便是读(BurstRead)或写(Burst Write)命令。与激活命令一起被触发的地址位用来选择将要存取的区和页(或行),与读或写命令一起被触发的地址位用来选择突发存取的起始列单元。读命令被触发后,数据将在1.5~3 个时钟周期之后出现在数据总线上。这个延迟就是所谓的CAS 潜伏期(CAS latency),即从DDR SDRAM 内核读出数据到数据出现在数据总线上所需要的时间。CAS 潜伏期的大小与SDRAM 的速度和存储器的时钟频率有关。当要存取一个不同行的地址单元时,需要通过一个预充电(Precharge)操作关闭当前行。

自动刷新(Autorefresh)命令用来周期性地刷新DDR SDRAM,以保持其内部的数据不丢失。2 DDR SDRAM 控制器的设计DDR SDRAM 控制器的功能包括:

(1)初始化DDR SDRAM;

(2)简化DDR SDRAM的读写时序;

(3)将DDR SDRAM 接口的双时钟沿数据转换为单时钟沿数据,使得对DDR SDRAM 的操作类似于普通RAM;

(4)控制器还要产生周期性的刷新命令来维持DDR SDRAM 内的数据而不丢失。其控制转换图如图1 所示。

在对DDR SDRAM 初始化完成之后,就可进行读、写或其他操作。在执行读(写)命令之前,先要激活将要读(写)的行,之后便可对该行进行突发读(写)。在控制器的设计中,所有的读写命令都是不带预充电的,因此,某一行被激活之后将一直处于激活状态,直到用户发送突发终止命令,此时控制器将自动产生一个预充电命令来关闭当前行。这样,某一行被激活之后用户便可进行连续的突发读(写)操作,从而节省了每次突发读写所需要的激活时间,提高了系统的数据吞吐率。


上一页 1 2 3 4 下一页

关键词: SDRAM FPGA DDR 控制器

评论


相关推荐

技术专区

关闭