文中在介绍DDR2的工作原理的基础上,给出了一个用VHDL语言设计的DDR2 SDRAM控制器的方法,并且提出了一种在高速图像处理系统中DDR2 SDRAM的应用方案,同时在Virtex-5系列的FPGA上得到了实现。
1 DDR2-SDRAM控制器的 *** 作原理与设计
1.1 DDR2-SDRAM的 *** 作原理
DDR2 SDRAM是运用DDR结构来达到高速 *** 作。本文采用的DDR2-SDRAM是Micron的MT4H3264HY-53ED3。这款DDR2的存储空间为256 MB,由4片容量为512 Mb的内存芯片构成。每个芯片的数据位宽为16 b,有4 bank,13条行地址线,10条列地址线,因此每个内存芯片容量为8 192×
1 024×4×16 b,即512 Mb。4片组成起来就构成了MT4H3264HY-53ED3的64 b位宽。
DDR2 SDRAM的 *** 作主要通过以下控制信号给出:行地址选择信号(),列地址选择信号(
),写使能信号(
),时针使能信号(CKE),片选择信号(
)。各种指令不同的组合方式完成不同的功能。表1为各种指令完成的组合方式。
![高速图像处理系统中DDR2-SDRAM接口的设计,第6张 高速图像处理系统中DDR2-SDRAM接口的设计,第6张](/upload/website_attach/20220725/182555-110H3100546322.jpg)
1.1.1 Load Mode指令
用来配置DDR2内存的模式寄存器,包括一个主模式寄存器及3个扩展模式寄存器,它们被用来设定内存的工作方式,包括突发长度的选择、突发的类型、CAS延迟、CAS附加延迟、DLL使能、ODT设置、OCD设置以及DQS设置等。
1.1.2 Precharge指令
预充电指令是用来重新激活bank中已经打开的行。在预充电指令发出后,当前bank必须等待一个特定的时间(tRP)后才可以再次激活。
1.1.3 自动刷新指令
DDR2 SDRAM内存需要每7.8μs刷新一次。自动刷新不需要外部提供行地址信息,DDR2 SDRAM内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。由于刷新是针对一行中所有的存储体进行,所以无需列地址。在进入自动刷新模式前,所有的bank必须都处于预充电状态,自动刷新指令在预充电指令后延迟tRP才能给出。
1.1.4 AcTIve指令
AcTIve用来激活bank中的某一行。在对DDR2内存进行读/写之前,都必须执行该指令把bank中的某一行激活。激活命令到读/写命令之间的最小延迟由AL决定,当AL为0时,最小延迟由tRCD(RAS to CAS delay)决定。当AL不为0时,激活命令到读/写命令之间的最小延迟就可以不受tRCD限制,读/写命令可以提前,但其实最后数据的读/写并不提前,这样可以提高总线的利用率。
需要注意的是,当要激活同一bank中不同的行时,必须先对原来激活的行进行预充电,才能激活新的行。同一bank中连续的acTIve命令之间的间隔必须受tRC(RAS cycle TIme)的控制。
1.1.5 Read指令
读指令是用来对DDR2内存进行读 *** 作,并对突发读进行初始化。其中BA0和BA1给出bank地址,A0~A1给出起始列地址。突发读结束后,激活的行在预充之前继续保持有效,直到该行被预充电。从列选择到数据输出的延迟为CAS延迟(CL),整个读延迟等于AL+CL。读 *** 作时由内存给出一个与数据同步的数据滤波信号DQS,它的边沿与读取的数据边沿对齐。
1.1.6 Write指令
Write指令用来控制DDR2内存进行写 *** 作,并给出burst写的起始地址。其中BA0和BA1给出bank地址,A0~A1给出起始列地址。整个写延迟为读延迟减去一个时钟周期,即写延迟等于AL+CL-1。写 *** 作时,控制器同样给出一个与数据同步的数据滤波信号DQS,它的边沿与写数据的中间对齐。
1.1.7 Idle指令
用来使DDR2内存处于空闲无 *** 作状态。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)