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

技术分类: 嵌入式系统  | 2006-05-25
来源:中电网 | 作者:模式识别与智能控制研究所 胡为

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

       3 DDR SDRAM控制器的设计

       DDR SDRAM控制器的功能就是初始化DDR SDRAM;将DDR SDRAM复杂的读写时序转化为用户方简单的读写时序,以及将DDR SDRAM接口的双时钟沿数据转换为用户方的单时钟沿数据,使用户像操作普通的RAM一样控制DDR SD

RAM;同时,控制器还要产生周期性的刷新命令来维持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 SDRA的刷新周期,根据所使用的存储器而定,可在控制器中设定),便会产生一个刷新请求,如果此时DDR SDRAM处于空闲状态,控制器便会发生一个自动刷新命令来对DDR SDRAM进行刷新;如果此时DDR SDRAM正在进行读(写)操作,控制器将会等到当前的读(写)操作完全之后再发送新命令。在刷新过程中,用户如果有读(写)请求,控制器将在当前的刷新周期完成之后再响应用户的请求。

       正常的操作过程中,当DDR SDRAM处于空闲状态时,用户还可以根据实际的需要来重置存储器的控制寄存器,重新设定存储器的突发长度、突发类型、CAS潜伏期等参数。

       3.2 控制器数据通道的结构

       图4是DDR SDRAM控制器数据通道的结构图。图4中完整的显示了控制器读和写数据通道上DQ与DQS的结构关系。前面提到过,Cyclone系列FPGA没有带DDR触发器的输入输出单元,但完全可以用靠近输入输出引脚处的逻辑资源来实现DDR触发器,而且最后的结果表明,这种实现方式可以满足时序要求。

数据通道结构图

       从图4中也可以看到,控制器内部有两个时钟,clk和clk_90,两者之间的相位差为90°。图中将面向存储器的时钟命名为clk。它是clk_90时钟的90°相位延迟后的信号。clk_90作为系统时钟来驱动整个FPGA,clk时钟驱动存储器接口路。

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

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

正在点播中:电路设计中可预测和不可预测问题的调试技术

时间:2008-06-02 10:00:00-12:00:00
简介:在嵌入式系统设计中,经常会出现一些可预测和不可预测的问题或者低概率事件信号。快速有效地发现这些问题需要不同的技术。8月15日…

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

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会