关键词不能为空

当前您在: 主页 > 英语 >

FPGA 对DDR 的控制研究

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-13 22:42
tags:

-

2021年2月13日发(作者:冰河时期)


基于


FPGA



DDR


内存条的控制研究与设计



发布


:


2010-7-09


07:00


|


作者


:


——


|


来源


:


电子工程世界



|


查看


:


41




TAG:


DDR


内存条




1


内存条的工作原理





DDR


内存条是由多颗粒的


DDR


SDKAM


芯片互连组成,


DDR < /p>


SDRAM


是双数据率同步动


态随机存储 器的缩写。


DDR


SDRAM


采用双 数据速率接口,也就是在时钟的正沿或负沿都需要对数


据进行采样。

在本设计中采用的内存是


hynix


公司的


lGB



HYMD564M646CP6-J



内存条的工作原


理与单颗粒内存芯片的工作原 理一样,主要的控制信号以及控制信号完成的主要功能如表


1


所 示。






以上的控制信号及地址信号都是由差分时钟信号中


CK


的正沿触发。


DDR


SDRAM


必须按


照一定的工作模式来完成初始化,完成初始化后才能进入到读写过程。


DDR


SDRAM


的控制流程如



1


所示。






初始化 的过程为:


(1)


上电后,延时


200 us


等待时钟稳定,然后将


CKE


拉高 ,执行一次


N


OP


或者


DESELECT


操作。


(2)


执行一次


precharge


all


操作。


(3)


设置扩展模式寄存器


( BAl


为低电平


BA0


为高电平


)


使能


DLL



(4)


设置模式寄存器


(BAl

< p>


BA0


均为低电平


)< /p>


复位


DLL



( 5)


执行一次


pre-ch


arge


all


指令。


(6)

< br>再经过


2


个自刷新


(Auto


refresh)


指令后再次设置模式寄存器设置操作模式。< /p>


(7)




20 0


个周期才能进行读操作。


DDR


S DRAM


的扩展模式寄存器和模式寄存器的定义如图


2


和图


3


所示。






完成初 始化后进入图


1


中的


IDEL


状态,此时可以进行读写操作。在进行写操作时,首先


要进入

< p>
Row


active


状态,此时选中要操作的< /p>


bank



row


。然后执行


NOP


操作等待


tRCD


的时间后


可以进入写状态。



2


内存条电路设计





由于


DDR


SDRAM


采用的时钟频率较高,


加上


DDRSDRAM


的数据率为时钟速率的两倍,


DDR


SDR AM


对时钟质量的要求很高,必须保证时钟上升沿的时间小于


5


%的时钟周期。


DDR


SD


RAM


的数据线与相对应的数据采样信号


(DQ S)


的长度要尽量相等,来保证数据的采样窗口尽量要大


一些。 由于信号质量要求高,我们将所有的信号线都采用微电线和带状线来传输。使用


FPGA


和内


存条的


IBIS

< br>模型进行仿真来保证设计中信号的完整性,我们将信号分为


3

类,第一类,由


FPGA



DDR


SDRAM


的时钟差分信号;第二类,由


FPGA



DDR


SDRAM


的控制线;第三类,


FPGA


< p>
DDR


SDRAM


之间的双向传输线。对三类< /p>


IBIS


模型的


herperlinx< /p>


仿真如图


4









通过仿真我们可以确定


3

< p>
类信号线中带状线和微带线板厚,铜厚,以及信号线的线宽,线


长等参数。



3


FPGA



DDR


SDRAM


的控制





本设计中使用的

< br>FPGA



ALTERA


公司的


cyclone


II


系列的


EP2C20F484C6


。对内存条


的工作模 式设置为


BL=4



CL=3


,如图


7



FPGA< /p>



DDR


SD- RAM


的控制模块框图。






其中,


C lkin


为外部输入的时钟信号,


为了使


FPGA



DDR


SDRAM


的两对时钟信号的质


量尽量好,使用


FPG A


内部的两个锁相环输出差分时钟信号。为了保证锁相环输出的两路差分信号

< p>
相位一致,


在设计


PCB


时我们使晶振输出到


FPGA


两个


PL L


输入的布线距离相等,


为了保证两个锁


相环输出信号到达


DDR


SDRAM


接口时相位一致,由


FPGA


锁相环输出到

< br>DDR


SDRAM


的接口布


线 长度相等。




控制模块采用的工作模式是按照图


2


所示的状态来跳转,上 电以后首先是对


DDR


SDRA


M< /p>


进行初始化,初始化完成以后就可以进出等待工作的状态。此时刷新计数器开始计数,等待


7



8


us


后给出刷新请求,在空闲状态时


(IDEL)

< br>刷新请求的优先级最高,响应刷新请求后执行


REFR-ESH

< br>指令同时复位刷新计数器。初始化后如果


FIF00


的读 空标志为


O


说明


FIF00

< p>
中有数据,此时可以进


入到写状态。由于采用的是


BL=4


的工作状态,写操作每次都写入


4


64


位的数。所以,我们将输


入 的数据进行并位成


256


位的数,每次写操作只需要从


FIF00


中读出一个


256

< br>位的数。假设我们采



1OOMHz

的时钟,每写


4



64

< p>
位的数大概需要


10


个时钟周期。如果输入的数据 位宽为


16


位,


那么由外部传给


FPGA


的数据率要小于


160

< p>
MHz


。写操作完成的时候进入空闲状态,等待刷新标志

< br>或者读空标志。读的时候需要等待系统发出读命令


(read)

< br>,然后进入读状态,读出的数据由


Ddrout[1


27



O]


送到


F IF01



FIF02


中。通过控制< /p>


FIF01



FIF02


的写请求信号来实现将数据分别写入。读


的时候


BL= 4


每次读出


4



64


位数,


执行一次读操作大约需要


10


个时钟周期。


如果输出的数据位宽



16


位,


那么数据由


FPGA


向外传输的速率要小于


160


MHzo


控制模块在读写内存条的时候控制数


据模块 来实现数据率为时钟速度的两倍,


数据模块使用两个时钟一个是系统时钟一个是


2


倍的系统时


钟。





因为


DDR


SDRAM


的控制相对复杂,我们可以使用内存条的


vefilog

模型,通过对内存条



vefilog

仿真,我们可以知道自己程序的正确性,图


8


< p>
modelsim


中的仿真波形。如果仿真过程


正 确,我就可以对程序进行编译,布局布线,然后下载到


FPGA


中,由于布局布线的延时,输出的


信号波形与仿真波形不一致,此时,可以通过调整


FPGA


内部的锁相环来调整时序,实现对内存条

< br>的控制。






4


结束语


-


-


-


-


-


-


-


-



本文更新与2021-02-13 22:42,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/653251.html

FPGA 对DDR 的控制研究的相关文章