当前位置:首页 > 申请书大全 > DDR2,SDRAM控制器的设计及FPGA验证_控制器IP验证报告
 

DDR2,SDRAM控制器的设计及FPGA验证_控制器IP验证报告

发布时间:2019-02-16 04:43:00 影响了:

  摘要:根据DDR2 SDRAM的技术规范,介绍了DDR2的基本特征和工作原理,提出了一种DDR2控制器的设计方法,详述了DDR2控制器的工作原理和功能结构,并在FPGA上验证了设计的正确性。
  关键词:DDR2,控制器,FPGA,验证
  
  The Design of DDR2 SDRAM Controller
  and Implementation in FPGA
  
  lIU Guan-nan1,OU Ming-shuang2,SONG He-juan1
  (1.East China Research Institute of Electronic Engineering, Hefei 230031,China;
   2.Hefei University of Technology, Hefei 230031,China )
  
  Abstract: The basic characteristics and working features of DDR2 SDRAM is introduced in this paper. Then a kind of DDR2 controller is discussed in this paper. Finally, the function and implementation of the DDR2 controller is analyzed and validated on FPGA.
  Keywords: DDR2, Controller, FPGA, validation
  
  1 DDR2 SDRAM的结构与特点
  
   1.1 DDR2 SDRAM概述
  DDR2(Double Data Rate2)是由JEDEC(电子设备工程联合委员会)开发的新生代内存技术标准。DDR2内存与DDR内存的数据采集方式相同,都是在时钟的上升沿和下降沿进行数据传输,但是DDR2采用4位预取技术,即相同的内核频率下,DDR2的数据传输速率是DDR的两倍[1]。DDR2的工作电压为1.8V,在增加存储密度的情况下又降低了功耗。
  对比DDR,DDR2的结构还有一些新的特性[2]:
   a) 离线驱动调整(Off-Chip Driver):通过调整上拉/下拉电阻来补偿I/O接口端的电压,提高了信号的完整性。
   b) 片内终结电阻(On Die Termination):主板上使用了大量的终结电阻来消除数据线终端反射信号,这大大增加了主板的制造成本。实际上,不同的内存模组对终结电路的要求是不一样的,因此,主板上的终结电阻并不能很好地匹配内存模组,还会在一定程度上影响信号品质。DDR2将终结电阻放在存储器内部,可以根据自己的特点内建合适的终结电阻,不仅降低了主板成本,还提高了信号品质。
   c) 前置CAS(Posted CAS):将CAS信号提前到RAS信号后面的一个时钟周期发送,可以有效解决DDR2中指令冲突问题,提高了DDR2总线的利用率。
  
   1.2 DDR2 SDRAM的工作方式
  DDR2 SDRAM在正常使用前要进行初始化操作,根据实际应用对DDR2的工作模式和时序参数进行设置,初始化过程需要按照严格的时序步骤来完成。
  初始化完成后,就可以对DDR2进行正常的读写操作了。DDR2内部的存储单元是按bank进行管理的,根据容量大小一般分为4或8个bank[3]。每个bank中又分为行和列,bank的位宽就是存储芯片的位宽。DDR2工作时,每个bank只允许打开1行,即只允许对打开的行进行读写操作,如果要对同一bank中的其他行进行读写操作,则必须先用预充电(precharge)命令关闭已经打开的行,再用激活(active)命令打开需要进行读写操作的行。发送激活命令时要同时给出bank地址和行地址,选定需要打开的行,等待一定的时序间隔后再给出列地址。DDR2的行列地址线是复用的,通过列地址选通信号CAS(Column Address Strobe)可以区分行地址与列地址。
  DDR2采用突发方式进行数据传输,即对同一行中相邻的存储单元连续进行数据传输,连续传输所涉及的存储单元(列)的数量就是突发长度(Burst Lengths)。工作时只要给出起始地址和突发长度,DDR2就会依次自动对后面相应数量的列进行读写操作。DDR2支持的突发长度为4和8。
  DDR2采用电容存储数据信息,电容的漏电造成数据必须要定时刷新才不会丢失。为了保存内部数据,DDR2每隔一定的时间就要对每一行进行刷新。根据DDR2的JEDEC标准,最多每隔7.8μs就要刷新一次,用来保持DDR2内部数据的正确性。DDR2有两种刷新模式:自刷新(self-refresh)和自动刷新(auto-refresh)。自刷新通常工作于所有bank都处于空闲的状态,功耗低,但是进入自刷新模式和退出自刷新模式都要经过复杂的时序步骤来完成,控制复杂。自动刷新模式由定时器产生刷新命令,易于控制,因此一般选择自动刷新模式。
  DDR2的工作频率很高,因此数据窗口很窄,为了能准确采集数据,DDR2使用差分信号DQS、DQS_N来采集数据。写操作中,DQS信号由控制器发出,DQS信号与数据窗口中央对齐;读操作中,DQS信号由DDR2存储器发出,DQS信号与数据窗口边沿对齐,控制器接收到DQS信号后,要将DQS信号与数据窗口相位偏移90°,使DQS信号与数据窗口中央对齐。DQS信号对相位要求很严格,在实际使用中,考虑连线延迟、管脚延迟等因素,在高频率下进行数据采集变得很困难,一般由专门的PHY(Physical Layer Interface)来完成。
  
  2DDR2控制器的功能与设计
  
  DDR2 SDRAM需要专门的控制器才能与不同的芯片逻辑进行数据传输,综合上述DDR2存储器的工作方式,结合实际的使用需求,文章所设计的DDR2控制器主要实现以下几个功能:
   (1)实现突发长度为4的读写操作
   (2)自动发送激活和预充电命令,用户只需要发送读写命令而不用关心其他相关命令的发送时序
   (3)完成对DDR2的初始化操作[4],且初始化的相关参数可配置
   (4)与DDR2连接的数据通道为64bit
   (5)自动执行刷新操作
  
   2.1 DDR2控制器的功能与结构
  DDR2控制器主要由初始化模块、自动刷新模块、时序控制模块、DQS管理模块和主状态机构成,结构图如图1所示。
   初始化模块负责DDR2存储器的初始化操作,初始化过程中用到的时序参数可以在初始化之前进行配置。初始化过程具有最高的优先权,当初始化操作完成后,会发送信号给用户端,表示可以对DDR2存储器进行正常的读写操作了。
  自动刷新模块负责DDR2存储器的刷新操作。设计中采用自动刷新模式,便于控制。刷新控制器每隔一定的时钟周期就准备发送刷新命令,执行刷新命令时,控制器会将用户端的操作应答信号失效,通知用户在此期间不应再发送读写命令;刷新操作完成后,控制器会再次使能操作应答信号,用户可以继续发送读写命令。执行突发长度为4的读写操作,最快也要两个时钟周期(写操作),如果是跨行操作则需要更多的时钟周期。因此,可能出现有刷新需求时命令还未执行完毕的情况,在这种情况下,控制器会将刷新请求向后延迟,等命令操作完成后再执行刷新命令。为了实现这种情况下的正常操作,在设置刷新周期时要留有一定的余量来满足最长的命令执行周期,否则DDR2中数据可能会因为没及时刷新而丢失。
  DQS/DQ管理模块主要负责数据及数据选通信号的管理。DDR2控制器设计的数据通道为64 bit,因为DDR2在上升和下降沿都传输数据,所以将数据输入端设计为128 bit。DQS管理模块在写操作时发送DQS使能信号,在读操作时根据DQS信号在时钟的上升和下降沿采集数据。
  主状态机是整个控制器的核心部分,主状态机结合bank管理模块、时序控制模块完成最终的命令和数据发送操作。
  
   2.2 状态机的工作流程
  用户端发送的是线性地址,而不同类型的DDR2存储器所规定的行列地址及bank地址所占用的位宽是不相同的[3],因此,要将输入的线性地址根据所使用的DDR2存储器进行地址映射,将最终发送给DDR2的各类地址分离出来,供状态机使用。
  状态机根据发送的地址和命令进行判断,决定应该执行何种操作。状态机的工作流程如图2所示。
   上电后控制器首先执行的是初始化过程,然后才是读写操作。在读写过程中,会遇到刷新请求,刷新的优先权要高于读写操作。如果刷新操作与读写操作冲突,则控制器会先通知用户停止发送读写命令,并等待现有的读写操作完成,然后进行刷新操作。
  执行读写操作时,控制器会先根据映射的行地址来判断操作所需要的行是否已经激活,如果已经激活,则直接发送列地址;如果没激活且在不同的bank中,则先发送激活命令再发送列地址和读写命令;如果没激活且在相同的bank中,则先要发送预充电命令关闭已经打开的行,然后依次发送激活命令和读写命令。
  如果执行读操作,则在读命令发出后,要等待读数据传回,根据DQS信号来接收读数据,将双速率的64 bit数据转换成单速率的128 bit数据送给用户端口。
  
  3DDR2控制器的FPGA验证
  
  使用Altera公司的Stratix II GX开发板来验证所设计的DDR2控制器。该开发板上有4片Micron公司的DDR2存储芯片,型号为MT47H32M16,每片有16 bit数据通道,满足设计所需要的64 bit数据位宽。编译工具用Quartus II7.2,仿真工具为ModelSim SE6.1。
  验证所用的结构图如图3所示。
   验证中需要使用Quartus软件的megacore功能调用开发板自带的PHY作为DDR2控制器和DDR2存储器的接口,来保证读写过程中DQS信号能够以精确的相位偏移发送和采集数据。因为PHY的接口信号并不完全与设计的DDR2控制器的输出信号相匹配,因此,在验证中需要在两者之间做一个接口模块,使两者信号能够正确交互,完成DDR2控制器的功能。
  验证中需要一个验证模块作为整个验证平台的驱动逻辑[5-6]。验证模块主要由写命令控制模块和读命令控制模块组成。写入DDR2中的数据和地址分别存储在两个ROM中,写操作时,两个ROM中的数据分别输送到两个FIFO中,通过控制从两个FIFO中读取数据的时序,来实现命令、数据与地址的时序匹配。写操作完成后,会发出读操作使能信号,开始执行读操作,读操作的地址与写操作的地址相同,即将刚才写入的数据重新读回,读出的数据存储在一个RAM中。读写操作的实现与中断由controller发出的应答信号来控制。当读操作完成后,比较写数据ROM与读数据RAM中的数据,看两者是否相同,如果相同,则设计的DDR2控制器的功能是正确的。
  验证中,DDR2的读写时序如下:
  
  4结论
  
  文中设计的DDR2控制器在FPGA验证中得到了正确的信号时序关系,比较写入数据和读出数据,两者相同,DDR2控制器达到了设计要求。在FPGA验证中,DDR2控制器在时钟频率267 MHz下仍能正确地进行操作,实现较好的性能。
  (下转第71页)
  参考文献
  [1] JEDEC solid state technology association, JEDEC STANDARD:DDR2 SDRAM SPECIFICATION, May 2006
  [2] 张凯, 李云岗. 基于AMBA总线的DDR2 SDRAM控制器研究与实现. 计算机工程与应用. 2005
  [3] Micron technology INC. 1GB, 2GB, 512Mb DDRII SDRAM datasheet. 2006
  [4] 赵天云, 王洪迅, 郭雷, 毕笃彦. DDR2 SDRAM 控制器的设计与实现. 微电子学与计算机. 2005. Vol.22,No.3
  [5]刘勤让, 邬江兴. 总线数据宽度可配置DDR传输的FPGA设计与实现. 计算机工程与应用. 2005
  [6]须文波, 胡丹. DDR2 SDRAM控制器的FPGA实现. 江南大学学报(自然科学版), 2006 Vol.5,No.2.
  
  作者简介
  刘冠男,中国电子科技集团第38研究所助理工程师,主要研究方向:DDR2存储器的传输及控制。

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3