《ddrsdram控制器的设计与实现》由会员分享,可在线阅读,更多相关《ddrsdram控制器的设计与实现(4页珍藏版)》请在金锄头文库上搜索。
1、第28卷第2期 2007年2月微 计 算 机 应 用 M ICROCOMPU IER APPL ICATI ONSVol . 28 No. 2 Feb. 2007DDR SDRAM控制器的设计与实现陈 昊 孙志刚 卢泽新(国防科技大学计算机学院 长沙 410073)摘 要:DDR SDRAM存储器已经得到广泛的应用。本文详细分析了DDR SDRAM控制器的结构和关键技术,并介绍了基于Altera FPGA的DDR SDRAM控制器实现。我们在深入分析DDR存储控制器工作原理及其内部结构后,直接使用Altera公司提供的IP核,在QuartusII5. 0开发环境中调用MegaCore(Alte
2、ra公司的IP core) ,根据具体应用需求进行了DDR SDRAM控制器的设计并加以实现。关键词:控制器 IP核 逻辑模块The Design and I mplementation of DDR SDRAM ControllerCHEN Hao, SUN Zhigang, LU Zexin(School of Computer Science, NationalUniversity ofDefense Technology, Changsha, 410073, China)Abstract:Double Data Rate SynchronouslyDynamic RAM (DDR SD
3、RAM) is a kind of high - capacity and high - speed ram chip. Butthe standard ofDDR DRAM interface or the timing relationshipsmaybe incompatible with other logic device, so the article describes itsworking features, the implementation of the DDR SDRAM controller via Altera FPGA and IPcore is analyzed
4、 and some details are alsogiven. After analyzing the construction and principle ofDDR controuer,we used the IP core ofAltera compang directly,with the Quar2tusII5. 0 develop enviroment and according to our application reguire ment, the DDR controller designhas i mplemented.Keywords: DDR SDRAM, FPGA,
5、 VHDL, IPcoreDDR SDRAM是在原有的SDRAM的基础上改进而来。 “ 双倍数据率 ” 通俗的说就是在每个时钟周期的上升与下降沿都进行数据的传输。DDR SDRAM的内部存储单元仍然是基于SDRAM,只是在速度和容量上有了明显的提高。DDR SDRAM相对于SDRAM具有更高的同步性能,使得其地址定位、 数据传输独立执行,同时与访问它的逻辑器件保持同步。DDR SDRAM以其高速、 大容量、 运行稳定与高性价比等优点已经成为目前的主流。1 DDR SDRAM控制器的关键技术内存控制器的功能是监督控制数据从内存载入/载出,并对数据的完整性进行检测。图1是DDRSDRAM控制器的顶
6、层框图。框图左边的信号为用户端的接口信号,用“U -” 表示;框图右边的信号为DDRSDRAM端接口信号,用“ddr_” 表示。框图1主要由时钟锁相环、 控制模块、 地址译码和数据通道4部分组成。111 数据通路 数据通道模块为DDR SDRAM与用户端提供数据接口。用户端的数据宽度是DDR SDRAM数据宽度的两倍,这是因为DDR SDRAM数据接口在时钟的两个边沿均触发数据。在读方向,DQ pins上的double - rate数据被送到一个上升沿触发和一个下降沿触发的边沿触发器,在DQS信号的两个边沿采样数据。接着,这些信号通过另外一套可配置的寄存器被传递,把它们返回到系统 时钟域。本文
7、于2005 - 11 - 01收到。2期陈 昊 等:DDR SDRAM控制器的设计与实现171 在写方向,用户端写数据寄存器的输出按照系统时钟(CLK)被送入控制器中的寄存器,然后就被放到DQ pin上。控制器中的寄存器以写时钟(write clock) (写时钟的相位比系统时钟提前90)作为触发时钟,因而数据通道模块产生的DQS信号的边沿就会出现在DQ pin上数据信号的中央。图1 DDR SDRAM控制器顶层图112 刷新控制DDR SDRAM需要不断进行刷新,以保留住存放的数据。存储体中电容的数据有效保存期上限是64ms (1 /1000s) ,也就是说每一行刷新的循环周期是64ms。这
8、样刷新速度就是:行数量/64ms。DDR SDRAM有 多种刷新模式, Self Refresh通常工作于所有数据块处于空闲的状态,功耗低,但是会使内部时钟和所有输入 缓冲无效,且控制复杂。Auto Refresh由定时器产生,易于控制。因此一般选择Auto Refresh模式。通常设 计一个计数器以计算时间间隔,达到刷新周期时,产生刷新信号,实现刷新时序。DDR SDRAM要求在刷新之前所有的块都处于空闲状态,但实际应用中,有可能从任意一个状态进入刷新状态,因此不能保证所有的 块都处于空闲状态,因此,在刷新之前,首先对所有的块预充电,然后刷新。控制器内部有刷新定时器和刷 新计数器进行刷新的控
9、制,根据用户端的需要发出刷新命令对内存进行刷新。113 时钟控制 控制器所涉及到的时钟信号有四个:系统时钟、 写时钟、 再同步时钟与后同步时钟。系统时钟是整个控 制器的工作时钟,驱动控制器的状态机和用户端接口时序,系统时钟在控制器内部还被转换成几对差分信号作为DDR内存的时钟输入;写时钟落后系统时钟270(即提前系统时钟90) ,写时钟用来触发写数据和 写数据掩码寄存器,使其与DQS信号有相位偏移;再同步时钟提供从DQS时钟域到系统时钟域转换所需的 时钟,触发再同步寄存器;后同步时钟为DQS后同步逻辑提供时钟,以禁用DQS采样寄存器,保证在DQS读 后同步信号结束后其状态过渡为高阻,确保已经获
10、得的数据不会被损坏,也就是防止噪声与干扰。114 控制模块控制模块的主要作用是将用户命令转化为控制DDR SDRAM设备的总线命令。根据DDR SDRAM规 范,总线命令利用信号CS_N, RAS_N, CAS_N,WE_N (“_N” 表示低电平有效)的组合来控制DDR SDRAM 器件,共有八种总线命令。 对DDR SDRAM的读写访问是突发方式的,突发长度可以为2、4或8,由突发控制子模块控制。访问开 始于激活(ACTI VE)命令的发出,随后是读(READ)或写(WR ITE)命令。与ACTI VE命令一起发出的地址位用来选择要访问的体和行,与READ或WR ITE命令一起发出的地址位
11、用来选择突发访问的起始列单元。如 果控制器想访问不同的行,它将用PRECHARGE命令先关闭已打开的体,然后再打开它。在正常操作前,DDR SDRAM被初始化。172 微 计 算 机 应 用2007年2 DDR SDRAM控制器的FPGA实现图2 系统总体逻辑框图211 IP核的使用 在Quartus II5. 0开发环境中调用MegaCore(Altera公司的I Pcore) ,根据需要可以创建适应不同应用需求的DDR SDRAM控制器。系统总体逻辑 图如图2所示。 打开MegaW izard Plug - In Manag2er后,在参数配置(Parameterize)中,根据所用内存的
12、型号和参数设置其中的 各个选项,如内存时钟差分对的个数、 数据位宽、 片选个数、 地址位宽以及一 些必要的内存时序参数等等。在约束 配置(Constrains)中,根据具体设计的需要为DDR SDRAM的字节组(包括DQ、DQS和DM)在FPGA的BANK(3、4或7、8BANK)上选择合适的位置。在建立模拟(Set U PSimulation)选项里可以根据需要选择模拟输出文件为Verilog或者VHDL类型,以便用模拟工具(如ModelSim)进行模拟。最后用Generate生成控 制器。212 具体实现 数据通路的实现框图如图3。图3 数据通路实现 在写方向上, datain信号被锁存并
13、传递到I/O单元中的寄存器中。在I/O单元中, datain被复合到dq管脚,并由相移时钟锁存,以便dqs信号出现在dq管脚上数据的中心。信号dqs也是数据通道中产生。在读方向上,从dq管脚来的双倍速率数据被送入上升沿触发寄存器和下降沿触发寄存器,由数据触发信号dqs的两个边沿来进行采样。时钟锁相环主要是为DDR SDRAM和FPGA本身提供时钟,并降低它们之间的偏移。Stratix II具有En2hanced PLL,可以提供DDR SDRAM所需的差分时钟和FPGA内部所需的时钟。通过Enhanced PLL (增强型锁相环)对时钟源(如晶振)进行倍频产生所需的时钟信号给控制器,控制器就将
14、该时钟转换为差分信号作为DDR内存的时钟输入。图4为DDR SDRAM控制器的时钟配置情况。图中寄存器A代表控制器的命令2期陈 昊 等:DDR SDRAM控制器的设计与实现173 图4 锁相环及其外围信号配置和地址输出,由Enhanced PLL的C0输出时钟触发;寄存器B在输入输出单元( I OE)中,由读数据触发信号(DQS)触发将数据读入控制器;寄存器C由PLL的c0输出时钟触发,并代表由系统时钟域取回的数据;寄存器D产生写数据,并由PLL的c1输出时钟触发。C0和c1的输出时钟在相位上相差90 。为了确保DQS到系统时钟域的正确转换,避免建立和保持时间冲突,要寄存器C配置为在下降沿采样
15、。对锁相环的配置,打开MegaW izard Plug - In编辑工程目录下的PLLs文件(如ddr_pll_stratixii .v)。可以灵活调整输入时钟源的频率和倍频数以满足自己的设计需要,还可以调整输出时钟(控制器系统时钟C0、 写数据时钟C1)的参数,在多数情况下,控制器系统时钟(clk)和写数据时钟(write_clk)被用来作为再同步时钟( resynch_clk -读操作时需要)与后同步时钟(postamble_clk -防止DQS PI N上的噪声干扰) ,因此在锁相环配置中可以去掉个别的时钟输出(如C2、C3)。3 仿真验证用IPcore生成控制器之后就可以进行编译,在编
16、译的过程中将在工程目录里自动产生testbench文件夹,里面包括 3_tb. v的测试顶层文件和一个modelsi m目录(放有模拟测试时需要调用的各种库文件)。首先要获得我们所选用的DDR SDRAM的model(用Verilog编写,在内存厂商的网站上下载) ,把该model文件放到testbench目录下,然后启动ModelSim模拟器,把工作路径设置到 testbench modelsim,在 3_tb. v中编辑内存的实例使其与内存model相匹配,最后用命令set memory_model 、source_ddr_sdram_vsim. tcl进行模拟。4 结束语本文给出了基于FPGA利用IP核进行DDR SDRAM控制器的设计。从仿真的结果中可以看出,这种结构的DDR控制器有着很高的性能,因此将得到广泛的应用。参 考 文 献1 Rufino Olay ,Designing a Spartan - 3 FPGA DDR Memory Inte