本站首页 电路图 元器件 设计制作 电子维修 电子资料 技术资讯 单片机 PCB 电路制图 创意设计 造型设计 电脑网络 平面设计 神气科技 创业资料 产品营销 供求信息 本站邮购 创业指南 I C设计 研发生产 网站制作 人力资源 免费资源 实用查询 工业设计 动画制作
您当前的位置:中国电子产品开发网创意设计设计文献 → 创意设计内容 退出登录 用户管理
创意设计栏目导航
热门创意设计
相关创意设计
DDR SDRAM在嵌入式系统中的应用
作者:佚名  来源:不详  发布时间:2008-2-3 12:51:59

减小字体 增大字体

提供数字电路设计、模拟电路设计、单片机软件开发,电子产品批量生产,请联系:
无锡神气科技有限公司:
www.shenqikeji.com;0510-88966311;13961896016;QQ:908821848

  :给出一种通过FPGA控制将DDR SDRAM应用于嵌入式系统的方法。分析DDR SDRAM的工作方式,对控制嚣的控制流程进行详细介绍,并给出控制流程图;分析专门4qN-Ahera公司Cyclone系列FPGA来实现存储嚣接口的数据通道的结构。最后,给出控制器在Cyclone EPlC6Q240C6中的实现结果。

关键词DDR SDRAM FPGA嵌入式系统

 

 

    很多嵌入式系统,特别是应用于图像处理与高速数据采集等场合的嵌入式系统,都需要高速缓存大量的数据。DDR(Double Data Rate,双数据速率)SDRAM由于其速度快、容量大,而且价格便宜,因此能够很好地满足上述场合对大量数据缓存的需求。但DDR SDRAM的接口不能直接与现今的微处理器和DSP的存储器接口相连,需要在其间插入控制器实现微处理器或DSP对存储器的控制。

   
     
随看密度与性能的不断提升,现场可编程门阵列(FPGA)已被广泛应用于各种嵌入式系统中。而且,现在很多的FPGAs都提供了针对DDR SDRAM的接口特性:其输入输出引脚都与SSTLII电气特性相兼容,内部提供了DDR触发器、锁相环等硬件资源。使用这些特性,可以更加容易地设计性能可靠的高速DDR SDRAM存储器控制器。

 

1 DDR SDRAM在嵌入式系统中的应用

1DDR SDRAM在高速信号源系统中的应用实例。

    在该系统中,由FPGA完成各模块之间的接口控制。FPGA接收从前端传送过来的高速数字信号,并将其存储在DDR SDRAM中;13SP通过FPGA读取DDR中的数据.处理后再送回到DDR SDRAM,最后由FPGA负责将数据分两路输出。


    该系统对存储器的要求是能够高速地存储大量的数据,
DDR SDRAM正好能满足这一要求。此时,FPGA是否能对DDR SDRAM进行有效控制就成为影响系统性能的关键。最后的试验结果表明,FPGA是能够胜任这一任务的。

 

2  DDR SDRAM的工作方式

DDR SDRAM能够被存取数据之前,需要先对其初始化。该初始化流程是预先定义好的,不正确的操作将导致无法预料的结果。初始化的过程中将设置DDRSDRAM的普通模式寄存器和扩展模式寄存器,用来制定DDR SDRAM的工作方式。这些设置包括突发长度、突发类型、CAS潜伏期和工作模式以及扩展模式寄存器中的对DDR SDRAM内部DLL的使能与输出驱动能力的设置。模式寄存器可以被再编程,这时需要DDRSDRAM的各个区(bank)处于空闲状态,从而改变存储器的工作模式。如果操作正确,对模式寄存器的再编程不会改变存储器内存储的数据。


    初始化完成之后,
DDR SDRAM便进入正常的工作状态,此时便可对存储器进行读写和刷新。DDR SDRAM在一对差分时钟(CLKCLKn;CLK的上升沿与CLKn的下降沿的交点被认为是CLK的上升沿)的控制下工作。命令(地址和控制信号)在每个时钟(CLK)的上升沿被触发。随着数据一起传送的还包括一个双向的数据选通信号,接收方通过该信号来接收数据。DQS作为选通信号在读周期中由DDR SDRAM来产生,在写周期中由存储器控制器来产生。该选通信号与数据相关,其作用类似于一个独立的时钟,因此也需要满足相应的时序要求。读周期中,DQS与数据是边沿对齐的;写周期中,DQS与数据是中心对齐的。存储器输入的数据在DQS的两个沿都触发.输出的数据也是以DQS的两个沿作为参考,同时还要以时钟CLK的两个沿作为参考。因此,由于接口在时钟的两个沿的触发下工作,其数据宽度(n)是存储器数据宽度(2n)的一半。图2描述了DDR SDRAM的工作方式。

DDR SDRAM的读和写操作是基于突发的:从一个选定的地址单元开始,连续存取设置好长度的地址单元。该长度就是所谓的突发长度。DDR SDRAM提供的可编程的读或写的突发长度为248。数据的存取以一个激活命令(ACTlVE commandRAS_n low)开始,接着便是读(CAS_n low)或写(CAS_n low and WE_n low)命令。与激活命令一起被触发的地址位用来选择将要存取的区(bank)和页(或行)}与读或写命令一起触发的地址位用来选择突发存取的起始列单元。使用控制器读取DDR SDRAM的仿真波形示意图如图2所示。读命令被触发后,数据将在153个时钟周期之后出现在数据总线上。这个延迟就是所谓的CAS潜伏期(CAS latency),即从DRAM内核读出数据到数据出现在数据总线上所需要的时间。CAS潜伏期的大小与SDRAM的速度和存储器的时钟频率有关。


    当要存取一个不同行的地址单元时,需要通过一个预充电
(PRECHARGE)操作关闭当前行。自动刷新(AUTO-REFRESH)命令用来周期性地刷新DDRSDRAM,以保持其内部的数据不丢失。

 

3  DDR SDRAM控制器的设计

DDR SDRAM控制器的功能就是初始化DDRSDRAM;将DDR SDRAM复杂的读写时序转化为用户方简单的读写时序,以及将DDR SDRAM接口的双时钟沿数据转换为用户方的单时钟沿数据,使用户像操作普通的RAM一样控制DDR SDRAM;同时,控制器还要产生周期性的刷新命令来维持DDR SDRAM内的数据而不需要用户的干预。


3.1  DDR SDRAM
控制器的控制流程

DDR SDRAM提供了多种命令,整个控制状态机非常复杂。但很多应用场合中,并不需要用到所有的命令,因此为了简化设计,但同时又兼顾尽可能多的应用场合,在控制器的设计中制定了如下几种功能:DDR SDRAM的初始化,可变长度的突发读写,自动刷新功能,预充电以及模式寄存器的重置(reload)。图3是控制器整个状态转移图。

系统上电后,DDR SDRAM处于空闲状态(Idle),在对存储器进行读写操作之前,需要先对其进行初始化。初始化的过程中,将设置突发长度,突发类型,CAS潜伏期等参数。DDR SDRAM的初始化有一个固定的步骤,错误的操作将导致DDR SDRAM进入不确定状态。在控制器中使用了一个专门的初始化状态机来对DDR SDRAM进行初始化。


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


    控制器同时提供了一个自动刷新
(auto refresh)计数器,每隔一定的时间间隔(DDR SDRAM的刷新周期,根据所使用的存储器而定,可在控制器中设定),便会产生一个刷新请求。如果此时DlDR SDRAM处于空闲状态,控制器便会发出一个自动刷新命令来对DDR SDRAM进行刷新;如果此时DDR SDRAM正在进行读()