文档库 最新最全的文档下载
当前位置:文档库 › 基于FPGA的DRR2SDRAM控制器接口的简化设计方法及实现

基于FPGA的DRR2SDRAM控制器接口的简化设计方法及实现

测试测量技术

2008第11期

基于FPGA 的DRR2SDRAM 控制器接口的

简化设计方法及实现

The Simplify Design and Realization of DDR2SDRAM Controller Based on the FPGA

任颖,黄建国(电子科技大学自动化学院,四川成都610054)

Ren Ying,Huang J ian-guo (College of Automation ,University of Electronic Science and Technology of China ,Sichuan Chengdu 610054)

摘要:DDR2SDRAM 是由DDR SDRAM 发展而来的一种新型大容量存储器,正在被越来越多的应用在高速

存储系统中。文中介绍了利用M IG 软件工具在Xilinx Spartan-3A 系列FPGA 中实现DDR2SDRAM 控制器的设计方法,详细叙述了其基本原理,并给出了硬件测试结果。

关键词:DDR2SDRAM 控制器;FPGA ;Spartan-3A ;M IG 中图分类号:TP333.8

文献标识码:B

文章编号:1003-0107(2008)11-0031-03

Abstract:DDR2SDRAM is a new kind of mass memory developed from DDR SDRAM and is becoming popular,and will be used more and more in the designs of high speed access memory.This paper describes the method of realizing DDR2SDRAM controller in the X il-inx Spartan-3A FPGA series with MIG software tools,gives a detailed description of its basic principle and the hardware test results.Keyw ords:DDR2SDRAM controller;FPGA;Spartan-3A;MIG CLC num ber:TP333.8

Docum ent code:B

Article ID:1003-0107(2008)11-0031-03

1引言

DDR2SDRAM 是由JEDEC (电子设备工程联合委员会)

规范了的一种全新的下一代DDR SDRAM 内存技术标准,是

DDR 内存的换代产品.DDR2内存相比DDR 内存拥有更少

的能耗和发热量,更高的密度和频率.更好的高速效能,拥有两倍于DDR 的预读取能力(即4位预存取技术),能以4倍于外部总线的速度进行数据的读取,及四倍于内部控制总线的速度运行。因此,DDR2SDRAM 已经取代DDR SDRAM 成为主流的存储器配置。

FPGA 设计人员在满足关键时序余量的同时力争实现更

高性能,在这种情况下,存储器接口的设计一向是一个艰难而耗时的挑战。但是并不是所有的系统都在追求存储器接口的性能极限。当低成本是主要的决定因素,而且存储器的比特率达到每引脚333M b/s 已经足够时,

Spartan-3A 系列FPGA 配之以Xilinx 软件工具,

就能提供一个易于实现、低成本的解决方案,从而使接口设计变得更简单、更可靠。

文中以Xilinx 的Spartan-3A 系列FPGA 和Hynix 的

DDR2SDRAM 芯片HY5PS121621为硬件基础,介绍如何使

用Xilinx 提供的软件工具,简单可靠的实现DDR2SDRAM 控制器的设计和应用。

2DDR2SDRAM 控制器的设计原理

基于FPGA 的DDR2SDRAM 控制器设计主要由四个部分组成:用户界面模块(User Interface )、时钟生成模块

图1DDR2SDRAM 控制器设计原理框图

DDR2SDRAM Controller

User Interface

Cmd Addr

DM Output data Input data Burst_don User_cmd_ack

Init_done

Ar_done

U_data_val sys_clk

clk_in Write Data Read Data

Command Controller Write Data path

Read Data path

Data Path Clock

Generator

CK/CK#

DQS/DQS#DM DQS

CMD/ADDR

DDR2SDRAM

31

(Clock Generator)、数据接口模块(Data Path)和存储控制模块(Controller)。DDR2SDRAM控制器的设计原理框图如图1(见上页)所示。

用户界面是一种握手型的界面。用户发出一条读或写命令,如果是写命令的话还包括地址和数据,而用户界面逻辑以User_cmd_ack信号回应,于是下一条命令又可以发出。

时钟生成模块用来产生控制器中所有模块的时钟信号。它由数字时钟管理器(DCM)进行控制,输出0度和90度的时钟。该模块还包含一个延迟校准监视器,用来校准读数据(DQ)对读数据选通脉冲(DQS)的延迟,以便读数据选通脉冲边沿能够正确对齐DQ有效窗口的中间位置。

读写数据接口模块是整个控制器设计的关键,它负责将用户要写入的数据DQ和DQS按照DDR2SDRAM的时序要求发送给DDR2,DDR2在DQS的每一个时钟沿采集写数据。在Spartan-3A系列FPGA中,使用可配置逻辑块(CLB)中的LUT的双端口分布式RAM来实现读数据采集(如图2)。在读数据过程中,DDR2将读数据选通脉冲(DQS)及相关数据按照与读数据(DQ)边沿对齐的方式发送给FPGA。LUT RAM被配置成一对FIFO,每个数据位都被输入到上升边沿(FIFO0)和下降边沿(FIFO 1)的FIFO中。通过异步FIFO,可以将读数据从DQS时钟域传输到存储器控制器时钟域。在存储器控制器的时钟域中,可以从FIFO_0和FIFO_1同时读出数据。FIFO的读指针在FPGA 的内部时钟域中生成。写使能信号(FIFO_0 WE和FIFO1_WE)的生成通过DQS和一个外部回送(亦即归一化)信号完成。

DDR2控制模块主要实现的功能为:在系统上电过程及系统意外复位发生时,与初始化模块配合。对控制器和所控制的DDR2SDRAM进行初始化设置、复位延时保护等;在系统正常工作时,进行系统读/写请求指令的接收、应答、对系统访问地址的采样与同步、完成所需的所有状态转换、任务调度、总线仲裁、时序同步,并为接口模块、数据通道产生相应的控

制信号,为系统提供控制器状态指示信号。控制器的状态机结构如图3所示。

系统上电后,在对存储器进行读写操作之前,需要先进行初始化操作,设置突发长度,突发类型,CAS潜伏期等参数。存储控制器中使用专门的初始化状态机来对DDR2SDRAM进行初始化。初始化完成后才能对DDR2SDRAM 寻址并进行读、写或其他操作。寻址包括行激活(确定Bank地址和行地址)和列激活(确定列地址),在确定具体要访问的地址后就可对该地址进行突发读/写操作。

3DDR2SDRAM和FPGA的接口设计

如图4(见下页)所示,DDR2SDRAM与FPGA接口信号线可以分为4组:时钟信号线CK/CK#;数据传输信号线DQs、DQS/DQS#、DM;地址/命令信号线ADDR、BA、RAS、CAS、WE;控制信号线CS、CKE、ODT。

差分时钟CK/CK#为DDR2SDRAM提供工作时钟,在CK的上升沿图2基于Spartan3A FPGA的DQ采集FIFO实现

DQ

IOB Delayed DQS CLB

FIFO1

FIFO0

FIFO_1_WE

Read data_f

FIFO_0_WE

Read

data_r

图3DDR2SDRAM控制器状态转换示意图

P roduct Des ign

产品设计

32

测试测量技术

2008第11期

锁存地址和命令控制信号;双向差分信号DQS/DQS#数据选通脉冲,在写入时用来传送DDR2控制器发出的DQS 信号,读取时则由DDR2产生DQS 向控制器发送。DM 作为数据屏蔽信号在突发写传输时对不想存入的数据进行屏蔽;RAS 、

CAS 、WE 作为命令信号线对DDR2发出读、写、刷新或预

充电命令;片内终结信号线ODT 控制是否需要DDR2进行片内终结。

4DDR2SDRAM 的控制器的设计实现及应用

Xilinx 公司提供的IP 核生成器CORE Generator 中集成的

存储器接口生成器(M IG )工具,为存储器的应用提供了强大和丰富的接口选择。作为设计者,可以在短短几分钟之内方便的利用经过硬件验证的解决方案,快速的生成DDR2

SDRAM 的控制器模块。经过简单的修改就可以应用的自己

的系统中去,大大缩短整个系统的开发周期。

用户可以在M IG 软件工具的GUI 图形界面,根据所选用的存储器件型号选择相对应的模板、总线宽度和速度级别,并设置CAS 延迟、突发长度、引脚分配等关键参数,

M IG 即可生成控制器的RTL 代码(HDL 代码)和UCF 文件

(约束文件)。如果设计者所选器件与M IG 所列模板不相符,可在代码生成后灵活修改这些代码,以达到系统的要求。论文选用的DDR2SDRAM 芯片HY5PS121621与M IG 提供模板

M T47H32M 16相似,关键参数完全相同,故选用此模板参考

设计作为系统DDR2控制器模块设计。

在将代码添加到整个系统之前需要对DDR2SDRAM 存储器的控制器部分进行硬件验证。M IG 生成的HDL 代码中包含了存储器校验的可综合测试平台,该测试平台可以向存

储器发出一系列的写命令和读回命令,同时可以在FPGA 内

部产生相应的数据和地址,并对写入数据和读回数据进行比较,用户可以通过这个比较信号(led_error )验证控制器的正确与否,在检测出读写数据相同时该信号输出低电平。用

Xilinx 提供的片上调试工具ChipScope 抓取的读出数据以及指示

和相关控制信号如图5所示,读写比较信号(led_error )输出电平始终为低,说明存储控制器读写数据相同,硬件验证通过。

但是该测试代码仅仅访问了存储器一下部分的存储空间,设计者可以对地址产生模块进行修改,实现存储器的遍地址访问,提高存储器的利用率。同时也可由DSP 进行灵活的控制,对指定的存储单元写入或是读出给定的数据。为了保证控制器能够很好的达到时须要求,可以在设计系统硬件之前就完成DDR2SDRAM 部分RTL 代码(HDL 代码)和

UCF 文件(约束文件)的生成工作,然后按照生成的UCF

文件进行硬件的排版布线,尽量减少走线长度带来的误差,减少时序上的错误。

硬件验证通过后,设计者就可以把这些代码导入到系统工程中,同时把M IG 生成的约束文件内容添加到系统约束文件中,设计者可以参考存储器的校验测试代码,来设计存储器与系统中其它器件之间的接口模块。设计者只需输入相应的命令(包括读、写和初始化命令),控制器模块将自动产生命令和控制信号并按照DDR2的读写时序要求送给DDR2,命令发送完毕后提供给用户一个命令应答信号(User_cmd_ack ),设计者可以根据这一信号判断是否可以发送下一个命令。整个过程中用户完全不用干涉存储器的自动刷新、激活和预充电过程,这些控制命令和过程都会由控制器自动发出和完成。

5结束语

本论文通过M IG 软件工具进行辅助设计,在Xilinx 公司的Spartan-3A 系列FPGA 中,快速生成速度最高达到133M 的

DDR2SDRAM 控制器,设计者在这础上进行系统开发,将大大

缩短系统开发周期,满足了大多数低成本系统设计的要求。

参考文献

[1]隋良杰,王厚军.基于Spartan-3A 的DDR2接口数据采集

[J].国外电子元器件,2008(1

):26-28.[2]Hynix.HY5PS121621Data Sheet.[3]Hynix .D DR2SDRAM DeviceOperation &Timing Diagram,2007.

[4]Xilinx Co Ltd.M emory Interfaces M ade EasywithXilinxFPGAsandtheM emory InterfaceGenerator,2007.

[5]Xilinx Co Ltd.Xilinx M emory Interfaces Generator(M IG007)UserGuide,2005.

图4DDR2与FPGA 的接口示意图

Spartan-3A FPGA

DDR2SDRAM

CK/CK#DOS/DOS#

DQs DM ADDR/BA RAS/CAS/WE CS/CKE/ODT

图5硬件测试抓取的数据

33

相关文档