基于FPGA的DDR SDRAM控制器的设计.docx

上传人:b****7 文档编号:26325405 上传时间:2023-06-17 格式:DOCX 页数:35 大小:390.91KB
下载 相关 举报
基于FPGA的DDR SDRAM控制器的设计.docx_第1页
第1页 / 共35页
基于FPGA的DDR SDRAM控制器的设计.docx_第2页
第2页 / 共35页
基于FPGA的DDR SDRAM控制器的设计.docx_第3页
第3页 / 共35页
基于FPGA的DDR SDRAM控制器的设计.docx_第4页
第4页 / 共35页
基于FPGA的DDR SDRAM控制器的设计.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

基于FPGA的DDR SDRAM控制器的设计.docx

《基于FPGA的DDR SDRAM控制器的设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的DDR SDRAM控制器的设计.docx(35页珍藏版)》请在冰豆网上搜索。

基于FPGA的DDR SDRAM控制器的设计.docx

基于FPGA的DDRSDRAM控制器的设计

 

 

题目:

基于FPGA的DDRSDRAM控制器的设计

 

摘要

随着半导体技术的发展,A/D采样的速率越来越高,相应需要越来越大容量的存储器。

存储器是目前数字系统中的关键部件之一,DDRSDRAM(DoubleDataRateSDRAM,双倍数据率同步动态随机存储器)以其大容量、高速率和良好的兼容性以及低成本在计算机、消费类电子、通信等领域得到了相当广泛的应用。

DDR控制器实际上就是用户端与DDR存储器之间进行数据传输的一个桥梁,通过DDR控制器,用户端命令被转化成DDR存储器所支持的命令格式,从而实现用户端对DDR的访问。

本文对DDRSDRAM及其控制器的结构、接口和时序进行了深入研究与分析,得出一些DDRSDRAM控制器的关键技术特性,然后基于Altera公司CycloneII系列的FPGA芯片EP2C8Q208C8平台,利用Verilog硬件描述语言设计实现了DDRSDRAM存储控制器。

编写自动生成自加数据的模块,将自加数据写入到SDRAM中,再从SDRAM中读回,从UART发送出去并在串口调试工具上显示。

【关键词】可编程逻辑门阵列DDRSDRAM存储控制器通用异步收发器

Abstract

Alongwiththedevelopmentofsemiconductortechnology,A/Dsamplingrateishigherandhigher,requiringmorecapacityofcorresponding.Storageofmemoryisoneofthecrucialdevicesinthedigitalsystematpresent,theDDR(DoubleDataRate)SDRAMhasmanyadvantagesforit'slargecapacity,highspeedandthelowcost,ithasbeenusedinquiteanumberoffields,suchastheServer,theWorkStation,thePersonalcomputerandtheconsumerelectronics,thecommunicationandotherareas.DDRcontrolleractuallyisabridgebetweenclientandDDRmemoryfordatatransmission,throughtheDDRcontroller,clientcommandwasconvertedintotheDDRmemorywhichsupportcommandformat,soastorealizethevisitofDDRclients.

ThepivotaltechnologiesofDDRSDRAMandmemorycontroller,suchasStructure,InterfaceandTimingareexploredinthisarticle,afteraresearchonthemainfeatureinsidetheDDRcontroller,severalfunctionalmodulesofthecontrolleraredesignedout,andthenbasedonFPGAchipCycloneIIAlteracompanyEP2C8Q208C8platformseriesusedVeriloghardwaredescriptionlanguage.Writeautomaticgenerationandadddatamodules,withdatafromthedatawrittentoaddSDRAM,andagainreadbackfromSDRAM,senditoutfromUARTanddisplayonserialportdebuggingtools.

【Keywords】FPGA;DDRSDRAM;MemoryController;UART

1绪论2

1.1DDRSDRAM的现状及发展趋势2

1.1.1DDR内存的现状2

1.1.2DDR内存的发展趋势3

1.2课题研究的意义3

1.3课题研究的要求2

1.4本文的安排2

2DDRSDRAM技术介绍4

2.1DDRSDRAM的分类4

2.2DDRSDRAM的基本概念4

2.2.1DRAM存储原理5

2.2.2DDRSDRAM的逻辑BANK与芯片位宽5

2.2.3DDRSDRAM芯片容量5

2.2.4DDRSDRAM内存刷新6

2.3DDRSDRAM的命令6

2.3.1初始化6

2.3.2DDRSDRAM指令7

2.4DDRSDRAM读写操作时序8

2.4.1读操作时序8

2.4.2写操作时序8

3FPGA和QuartusII简介10

3.1FPGA技术简介10

3.1.1FPGA基本结构10

3.1.2FPGA的基本特点10

3.1.3FPGA芯片的选择11

3.2QuartusⅡ简介11

3.3QuartusII的设计流程11

4系统硬件设计13

4.1系统整体框架13

4.2自动累加数据产生模块13

4.3DDRSDRAM控制器模块14

4.3.1DDRSDRAM控制器整体状态分析14

4.3.2DDRSDRAM控制器总体架构15

4.3.3输入/输出FIFO模块16

4.3.4控制接口模块设计17

4.3.5控制接口模块设计19

4.3.6数据通路模块设计21

4.4串口读数据模块23

5系统控制器的功能验证26

5.1系统控制器的功能仿真26

5.1.1系统控制器Testbench设计26

5.1.2系统控制器Testbench总体架构26

5.1.3DDRSDRAMControllerTestbench顶层模块设计26

5.1.4DDRSDRAMControllerTestbench仿真波形27

5.2串口读取数据验证28

6总结29

参考文献30

致谢31

1绪论

1.1DDRSDRAM的现状及发展趋势

1.1.1DDR内存的现状

目前DDR内存市场占有量非常大,尤其是近些年随着市场需求的高速增长使得加入该行业和研究该技术的人员也越来越多,DDR控制技术处于高速发展阶段。

和显卡、主板等差异化较大的市场相比,内存市场由于有着强大的JDE

DC把持,并且产品本身形态较为单一,因此各家产品性能和设计差距都不太大,同质化现象较严重。

不过,同质化并不意味着发展速度慢,相反,也正是由于有了统一的JEDEC规范,内存一直按部就班地发展着。

对于DDR系统来说,DDR控制器的研究是其关键核心,该部分要完成读写控制、地址控制等功能。

1.1.2DDR内存的发展趋势

第一代DDR200规范并没有得到普及,第二代PC266DDRSDRAM(133MHz时钟×2倍数据传输=266MHz带宽)是由PC133SDRAM内存所衍生出的,它将DDR内存带向第一个高潮,其后来的DDR333内存也属于一种过度,而DDR400内存成为目前的主流平台选配,双通道DDR400内存已经成为800FSB处理器搭配的基本标准,随后的DDR533规范则成为超频用户的选择对象。

现在DDR2/3都在扩大产量,DDR3量产后,供应将大增,而成本将会降低,所以DDR3将会降价,这样也能促进普及,而普及又会促使厂商增加产量,产量增加又会进一步摊薄成本降低价格。

随着人们要求的变高,速率更快容量更大的内存不断会涌现出来。

1.2课题研究的意义

DDR内存遍布于各种电子产品,正渐渐成为现代社会中不可或缺的信息存储载体。

存储器对现在的数字化系统性能至关重要,是决定系统性能的关键设备之一。

面对越来越多样化的应用需求,存储技术发展得相当迅速,其中DDRSDRAM作为一种在性能与成本之间折中的解决方案,以其高速、大容量、运行稳定与高性价比等优点已经成为目前存储器的主流。

随着电子技术在工业、医疗、商业等领域的发展,人们对数据传输率的要求越来越高,传统的单片机早已不能满足这种高速数据传输的要求。

与此同时,可编程逻辑器件FPGA以其强大的功能,开发过程投资小、周期短,可反复编程修改,开发工具智能化等特点,成为当今硬件设计的潮流;它的集成度高,可完成极其复杂的时序与组合逻辑电路功能,更适用于高速、高密度的高端数字逻辑电路设计领域。

本设计采用FPGA来进行系统设计。

采用传统的单片机编程实现算法的方法虽灵活性较高,但是执行复杂工作时处理速度远远不能满足要求,而且单片机的时序性较差。

要改善这个问题,FPGA是很好的选择之一,它有足够大的逻辑阵列密度(百万门级以上),比较高的速度(400MHZ以上)。

由此可见,采用FPGA完成DDRSDRAM控制器的设计可以使内存上升到一个新级别。

因此对DDR存储控制器的设计研究具有重要意义。

1.3课题研究的要求

本课题要求完成基于FPGA的DDRSDRAM(此SDRAM为SAMSUNG公司的K4S641632H芯片)控制器的设计,实现以下功能要求:

(1)初始化DDRSDRAM;

(2)简化DDRSDRAM的读写时序;

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

(4)控制器还要产生周期性的刷新命令来维持DDRSDRAM内的数据而不丢失。

1.4本文的安排

本文对DDRSDRAM控制器从整体设计到各部分细化设计展开讨论,对系统涉及的各模块的设计进行详细描述,最后对系统功能仿真以及读写数据验证。

全文的内容安排如下:

第一部分为绪论。

简单介绍了内存的现状与发展趋势,并对本课题的研究意义及其要求做了简单论述。

第二部分,介绍了DDRSDRAM相关技术,首先对DDR的存储原理、逻辑BANK、位宽等基本概念进行了大致介绍,然后对其命令进行简单介绍,最后对其读写时序做了详细分析。

第三部分,介绍了FPGA相关知识并对此系统开发平台QuartusII也进行了简单介绍,接着描绘了此系统在开发平台上的设计流程。

第四部分,详细介绍了系统的整体架构包括自动累加数据生成模块、控制器模块、串口读数据模块,并分别重点研究构成控制器的主要模块:

输入/输出FIFO模块、数据接口模块、命令模块、数据通路模块。

第五部分,主要是对控制系统的功能进行验证。

将编写好的测试文件在Modelsim平台上完成功能仿真,并对系统的读写功能进行了串口输出验证。

最后,对系统实现了读写功能进行总结。

2DDRSDRAM技术介绍

2.1DDRSDRAM的分类

DDR的频率可以用工作频率和等效频率两种方式表示,工作频率是内存颗粒实际的工作频率,但是由于DDR内存可以在脉冲的上升和下降沿都传输数据,因此传输数据的等效频率是工作频率的两倍。

按DDR的频率可分为以下几类,如表2.1所示。

表2.1DDR内存分类7

DDR规格

传输标准

实际频率

等效传输频率

数据传输率

DDR200

PC1600

100MHz

200MHz

1600MB/s

DDR266

PC2100

133MHz

266MHz

2100MB/s

DDR333

PC2700

166MHz

333MHz

2700MB/s

DDR400

PC3200

200MHz

400MHz

3200MB/s

DDR433

PC3500

216MHz

433MHz

3500MB/s

DDR533

PC4300

266MHz

533MHz

4300MB/s

2.2DDRSDRAM的基本概念

DDRSDRAM是DoubleDataRateSDRAM的缩写,是双倍速率同步动态随机存储器的意思。

DDR存储器的核心建立在SDRAM的基础上,但在速度和容量上有了提高。

首先,它使用了更多、更先进的同步电路,使用了差分时钟输入;其次,DDR使用了PLL锁相环和数据选通滤波信号(DataStrobesignal),当数据有效时,存储控制器可使用这个数据选通滤波信号来精确定位数据,每8位数据对应输出一次数据选通滤波信号,并且同步来自不同的双存储器模块的数据。

DDR存储器本质上不需要提高时钟频率就能加倍提高SDRAM的速度,它允许在时钟脉冲的上升治和下降沿读出数据,因而其速度是标准SDRAM的两倍。

至于地址与控制信号则与传统SDRAM相同,仍在时钟上升沿进行传输。

DDR存储器的设计可让存储控制器每一组DQ/DQS/DM与DIMM(DualIn-lineMemoryModule,双列直插式存储器模块)上的颗粒相接时,维持相同的负载,减少对主板的影响。

在存储器架构上,传统SDRAM属于8组式,即存储器核心中的I/O寄存器有8位数据I/O,但对于8组

式的DDRSDRAM而言,存储器核心中的I/O寄存器却是16位的,即在时钟信号上升沿时输出8位数据,在时钟信号下降沿时再输出8位数据,一个时钟周期总共可传输16位数据。

DDR芯片内部除了四个存储矩阵(四个逻辑BANK)之外,就是一些控制逻辑、行列缓冲与解码、I/O寄存器或缓冲,使用双向的DQS信号进行源同步计时定位读/写的数据信号2。

DDR存储器可以在不用大量增加管脚的情况下,大幅度提高数据传输的带宽(提高了一倍),并且目前价格也非常便宜,性价比很高,足以满足一般的存储设计需求。

2.2.1DRAM存储原理

DRAM利用MOS管的栅电容上的电荷来存储信息,一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。

但时间一长,由于栅极漏电,代表1的电容会放电,代表0的电容会吸收电荷,这样会造成数据丢失,因此需要一个外设电路进行内存刷新操作。

刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。

2.2.2DDRSDRAM的逻辑BANK与芯片位宽

DDRSDRAM是一种高速CMOS动态随机访问存储器,它在内部被配制成4个BANK的DRAM,外部数据具有4位、8位、16位三种宽度。

DDRSDRAM中每一个BANK中的存储单元被组织成正方阵列,由若干行和若干列组成,这些存储单元通过行和列的地址译码器来寻址。

对于任何一个单元的读操作,整个行均被读出,然后重新写回(刷新)。

对于任何一个单元的写操作,整个行均被读出,然后改变其中一个单元的值,最后将整个行写回。

阵列就如同表格一样,将数据“填”进去,可以把它想象成一张表格。

和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。

对于内存,这个单元格可称为存储单元。

2.2.3DDRSDRAM芯片容量

内存芯片的容量就是所有L-BANK中的存储单元的容量总和,计算有多少个存储单元和计算表格中的单元数量方法一样:

芯片容量=存储单元数量×位宽=(行数×列数×L-BANK数量)×位宽

DDR SDRAM具有如下的容量:

(1)64Mb(即67,108,864位):

16M×4(4M×4×4banks)、8M×8(2M×8×4banks)、4M×16(1M×16×4banks);

(2)128Mb(即134,217,728位):

32M×4(4M×4×4banks)、16M×8(2M×8×4banks)、8M×16(1M×16×4banks);

(3)256Mb(即268,435,456位):

64M×4(4M×4×4banks)、32M×8(2M×8×4banks)、16M×16(1M×16×4banks);

(4)512Mb(即536,870,912位):

128M×4(4M×4×4banks)、64M×8(2M×8×4banks)、32M×16(1M×16×4banks);

(5)1Gb(即1,073,741,824位):

256M×4(4M×4×4banks)、128M×8(2M×8×4banks)、64M×16(1M×16×4banks)

可以发现由于位宽的变化引起了存储单元的数量变化,也就是说在相同的总容量下,可以采用多种不同的位宽设计。

2.2.4DDRSDRAM内存刷新

内存条应该叫做动态DRAM,其中的数据是靠电容特性存储的。

由于电容会放电,要维持数据,就要不断的给它充电。

给动态DRAM定期充电的机制就叫做数据刷新时钟电路,即内存刷新电路。

一般情况下,内存刷新电路必须在数毫秒之内对DRAM刷新一次,否则数据就会丢失。

很像是一个流沙漏斗,一旦不加沙就会完全漏光。

刷新频率由芯片的工作频率以及每个BANK包含的行数决定。

2.3DDRSDRAM的命令

2.3.1初始化

DDRSDRAM是一种易失性存储器器件,也就是说,当器件掉电后,存储在DDRSDRAM中的所有内容及其配置信息将会丢失。

DDRSDRAM每次上电后,必须按一定的顺序来初始化其内部状态机并配置用户定义的操作参数,否则会引起不可预料的操作结果。

在DDRSDRAM能够被存取数据之前,需要先对其初始化

1。

该初始化流程是预先定义好的,初始化的过程中将设置DDRSDRAM的普通模式寄存器和扩展模式寄存器,用来制定DDRSDRAM的工作方式。

这些设置包括突发长度、突发类型、CAS潜伏期和工作模式以及扩展模式寄存器中的对DDRSDRAM内部PLL的使能与输出驱动能力的设置。

模式寄存器可以被再编程,这时需要DDRSDRAM的各个区(BANK)处于空闲状态,从而改变存储器的工作模式。

如果操作正确,对模式寄存器的再编程不会改变存储器内存储的数据。

初始化完成之后,DDRSDRAM便进入正常的工作状态,此时便可对存储器进行读写和刷新。

2.3.2DDRSDRAM指令

DDRSDRAM支持的指令与SDRSDRAM基本一致,本课题将其基本指令分为表2.2和表2.3,表2.2中的操作主要由CSn,RASn,CASn,WEn这四个信号来控制(CKE在这些操作下为高电平),需要由CKE来控制的信号放在了表2.3中,即对DDRSDRAM工作状态的配置必须配合CKE信号来完成。

表2.2DDR基本指令真值表6

命令

符号

CSn

RASn

CASn

WEn

无操作

NOP

L

X

X

X

READ

L

H

L

H

WRIT

L

H

L

L

行激活

ACT

L

L

H

H

自动刷新

REF

L

L

L

H

预充电

PRE

L

L

H

L

写模式寄存器

MRS

L

L

L

L

注:

L代表低电平,H代表高电平,X代表高电平或低电平

操作

符号

CKEn-1

CKE

命令

进入自动刷新

SELF

H

L

REF

退出自动刷新

SRE×

H

H

DSEL/NOP

进入低功耗

PWDN

H

L

DSEL/NOP

退出低功耗

PDE×

H

H

DSEL/NOP

表2.3DDR基本指令真值表

注:

CKEn是CKE信号在第n个clock上升沿的逻辑状态,CKEn-1是CKE信号在第n-1个clock上升沿的状态。

2.4DDRSDRAM读写操作时序

2.4.1读操作时序

读操作的时序图如2-1所示:

图2-1DDRSDRAM读操作时序图

上图的信号:

CK和/CK是一组差分时钟,CK的上升沿对准COMMAND(命令)和ADDRESS(地址)的中央,一般叫做center-align(中间对齐)。

ADDRESS只是一个columnaddress(列地址),行地址已经在前面用ACTIVE命令打开了。

DQ即数据总线,具有双向性,在空闲时为高阻。

DQS可以理解为数据使能信号,和数据同步,在空闲时也为高阻。

DQ和DQS都是和时钟边沿对齐,叫做edge-align(边沿对齐)。

另外上面有一个CL=2.5的标识,CL即CASLatency。

CL是指内存在收到列地址信号(ColumnAddressStrobe)后,要等待多少个系统时钟周期后才进行读取的动作。

注意到上图中在列地址被采样2.5个时钟周期后,数据总线上出现了有效的读数据。

2.4.2写操作时序

在对DDRSDRAM的写操作中,同样以状态机完成其时序控制。

每发起一次写操作,DDRSDRAM存储8个16位的数据,其中控制信号FULL由前端数据缓存(FIFO)产生,当前端缓存中存储的数据达到设定的深度时,FULL被置为高。

控制核以

100MHz的时钟从缓存中读走宽度为16位的数据,当缓存内部的读计数器计数到达设定值时,FULL信号置低,控制器的读操作停止。

在DDR控制接口模块产生的时序配合下以双倍速率完成一次突发写。

和读操作不同是发出写命令(write)后,需要等待tDQS时间才能送出写数据(DQ)和DQS。

tDQS参数是指DQS的第一个跳变沿相对于写命令的延时时间,tDQS有最大值和最小值,就是说在最大最小值之间将DQ/DQS送出来,DDRSDRAM都能够正常接收。

写操作时序图如2-2。

图2-2DDRSDRAM写操作时序图

3FPGA和QuartusII简介

本次设计就是以EDA技术为基础,使用基于FPGA技术,利用Altera公司开发的功能强大的QuartusII9.1开发软件来完成相关的设计。

3.1FPGA技术简介

3.1.1FPGA基本结构

FPGA的结构一般分为三部分:

可编程输入/输出模块、可编程逻辑单元(LE)、可编程内部互连资源(IR)。

LE是FPGA芯片实现逻辑的基本结构,LE之间可以灵活地互相连接。

LE的功能很强,不仅能够实现逻辑函数,还可以配置成RAM等复杂的形式。

FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失。

因此需在FPGA外加EPROM或FLASH,将配置数据写入其中,系统每次上电自动将数据加载到SRAM中。

装载的过程是在FPGA内部的一个时序电路的控制下自动进行的,所以在为FPGA设计电路时,一定要给它配备一个专用的配置芯片。

除了上述构成FPGA基本结构的三种资源以外,随着工艺的进步和应用系统需求的发展,一般在FPGA中还可能包含以下可选资源:

存储器资源(块RAM、分布式RAM);数字时钟管理单元(分频/倍频、数字延迟、时钟锁定);算数运算单元(高速硬件乘法器、乘加器);多电平标准兼容的I/O接口;高速串行I/O接口;特殊功能模块(以太网MAC等硬IP核);微处理器(PowerPC405等硬处理器口核)。

3.1.2FPGA的基本特点

FPGA有以下特点:

采用FPGA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1