|
The Implementation Of DDR SDRAM Controller Based On Xilinx FPGA Abstract:The DDR SDRAM uses a double data rate architecture to achieve high-speed operation. But it can not communicate with DSP or FPGA directly expect through a given DDR SDRAM controller. Because of the ChipSync source-synchronous technology of Xilinx VirtexTM-4 FPGAs, this design uses it as the platform of the DDR SDRAM controller. This controller uses direct clocking technique to capture the data, this technique is also the key point of this paper. Keywords: DDR SDRAM controller;FPGA;state machine;data capture using direct clocking technique 摘要:DDR SDRAM使用双倍数据速率结构,它能获得比SDRAM更高的性能。DDR SDRAM需要特定的DDR控制器才能完成与DSP、FPGA之间的通信。由于Xilinx VirtexTM-4系列FPGA具备ChipSync源同步技术等优势,本设计采用它来实现DDR SDRAM控制器。该DDR SDRAM控制器采用直接时钟数据捕获技术,本文将重点阐述该技术。 关键词:DDR SDRAM控制器;FPGA;状态机;直接时钟数据捕获 1 引言 在高速信号处理系统中,需要缓存高速、大量的数据,存储器的选择与应用已成为系统实现的关键所在。DDR SDRAM是一种高速CMOS、动态随机访问存储器,它采用双倍数据速率结构来完成高速操作。SDR SDRAM一个时钟周期只能传输一个数据位宽的数据,因此在相同的数据总线宽度和工作频率下,DDR SDRAM的总线带宽比SDR SDRAM的总线带宽提高了一倍[1][2]。 Xilinx VirtexTM-4 FPGA具备ChipSync源同步技术等优势。它的输入输出模块(IOB)提供了封装引脚与内部可配置逻辑之间的接口,无论是输入路径还是输出路径都提供了一个可选的SDR和DDR寄存器。VirtexTM-4的IOB专门针对源同步设计进行了优化,包括每一位的偏移校正、数据的串行化和解串行化、时钟分频以及专用的本地时钟资源等,而且它在每一个I/O模块中都提供了64-阶延迟线。这些特性使得VirtexTM-4 FPGA能够更好的实现DDR SDRAM控制器的逻辑设计,准确可靠的捕获数据。 实验板选择专为DSP应用而优化的Virtex-4 SX35作为DDR SDRAM控制器的实现平台,选用Micron MT46V8M16P-75Z DDR SDRAM。 2 DDR SDRAM控制器工作原理 DDR SDRAM控制器的主要功能就是完成对DDR SDRAM的初始化,将DDR SDRAM复杂的读写时序转化为用户简单的读写时序,以及将DDR SDRAM接口的双时钟沿数据转换为用户的单时钟沿数据,使用户像操作普通的RAM一样控制DDR SDRAM;同时,控制器还要产生周期性的刷新命令来维持DDR SDRAM内的数据而不需要用户的干预[3][4]。该控制器的模块化表示如图1[5]。
 应用层接口是DDR控制器与FPGA用户设计的接口。对于DDR控制器的用户来说,只需要了解如何使用应用层接口,通过应用层接口给DDR控制器发出指令、数据,并且接收数据。这种模块化设计增加了DDR控制器的可移植性,也使用户使用起来更简单。 控制层和物理层是真正意义上的DDR控制器。控制层的主要功能是:完成存储器的初始化,接收并解码用户指令然后产生读、写、刷新等指令。控制层的逻辑设计主要是由一个状态机管理的。物理层是直接与DDR SDRAM通信的平台,它的主要功能是:捕获DDR SDRAM发出的数据、以及通过输入输出缓存发送所有DDR SDRAM的控制信号、地址信号以及数据信号。 2.1控制层工作原理 控制层主要由一个状态机来控制DDR SDRAM控制器的状态转移。状态机如图2所示。
 DDR SDRAM上电后必须按照规定的程序完成初始化的过程。在初始化过程中一定要注意普通模式寄存器与扩展模式寄存器的值是否正确。普通模式寄存器用来设定DDR SDRAM的工作方式,包括突发长度、突发类型、CAS潜伏期和工作模式;扩展模式寄存器主要实现对DDR SDRAM内部DLL的使能和输出驱动能力的设置。在本实验板中选择的是Micron MT46V8M16P-75Z型号的DDR SDRAM,该型号芯片CAS潜伏期只能为2或者2.5。 初始化完成之后,DDR SDRAM进入正常的工作状态,此时可对存储器进行读写和刷新操作。在本设计中为了计算读数据延迟量引入了一个假读操作(Dummy Read),这将在下一节中详细分析。DDR SDRAM在一对差分时钟的控制下工作。命令在每个时钟的上升沿触发。随着数据一起传送的还包括一个双向的数据选通信号DQS,接收方通过该信号来接收数据。该选通信号与数据相关,其作用类似于一个独立的时钟。DQS作为选通信号在读周期中由DDR SDRAM来产生。读周期中,DQS与数据是边沿对齐的。读操作时,DDR控制器采用直接时钟获取的方式捕获数据。读命令触发后,数据将在CAS延迟之后出现在数据总线上。DQS在写周期中是由DDR控制器产生的。写周期中,DQS与数据是中心对齐的。读写操作时序如图3(DQ指传输的数据)。
 在进行读写操作之前需要先执行ACTIVE命令(激活命令),与激活命令一起被触发的地址用来选择将要存取的区(bank)和页(或行)。与读或写命令一起触发的地址位用来选择突发存取的起始列单元。在激活指令之前还有一个预充电(PRECHARGE)操作,预充电操作关闭之前进行操作的存储区或行,此操作之后DDR SDRAM才能对新的区或者行进行读写操作。 DDR SDRAM需要用自动刷新(AUTO REFRESH)命令来周期性的刷新DDR SDRAM,以保持其内部的数据不丢失。自动刷新必须在所有区都空闲的状态下才能执行。128Mb的DDR SDRAM执行自动刷新的周期最大为15.625µs。 写操作是由FPGA向DDR SDRAM写入数据,只需按照DDR SDRAM的工作要求发出相应的指令即可,逻辑设计相对简单,因此下面我们将详细介绍读操作中的数据捕获技术。 2.2物理层数据捕获技术及数据通道电路 物理层的主要功能是获得DDR SDRAM发出的数据、以及通过输入输出缓存发送所有DDR SDRAM的控制信号、地址信号以及数据信号。数据捕获技术及数据通道电路是DDR SDRAM控制器的技术核心。 DDR SDRAM接口是源同步接口,即数据与传输时钟是边沿对齐的。因此,为了在FPGA中可靠捕获数据要么延迟时钟要么延迟数据,使数据与时钟中心对齐。本设计采取直接时钟数据捕获技术。 所谓直接时钟数据捕获技术[6]就是利用DQS信号计算数据延迟量,通过延迟数据使数据中心与FPGA内部时钟沿对齐,然后用该内部时钟直接读取数据。DQS是由DDR发出的数据选通信号,它与FPGA内部时钟频率相同。此项技术的关键是确定数据的延迟时间。相对于其他的数据捕获技术,这种直接时钟数据捕获技术可以应用于更高的时钟频率,精确性和稳定性都高于其他方法。  图4 边沿检测原理图 为了得到数据应该延迟的时间量,首先要对DQS进行边沿检测。控制器发出Dummy_rd_en信号(即假读信号)使DDR SDRAM发出DQS信号,当延迟量计算完毕时,置Dummy_rd_en为低。 由图4可以直观的看出: 脉冲中心宽度 = (第二个沿延迟量 – 第一个沿延迟量)/2 (1) 式中,脉冲中心宽度表示DQS的中心宽度,因此数据应该延迟的时间为: 数据延迟量 = 第一个沿延迟量 + 脉冲中心宽度 (2) 延迟后的数据就是与FPGA内部时钟中心对齐的,直接用该时钟就可以准确地读取数据。 在Xilinx VirtexTM-4 FPGA中实现该延迟检测电路是非常容易的,因为设计可以直接利用FPGA内部的IDELAY与IDELAY_CTRL电路。图5表示了边沿检测以及数据通道电路。
 在该电路中,DQS输入到IDELAY模块,延迟量初始化为0,然后延迟量逐次递增,在这个过程中不断检测延迟后的DQS的跳变沿,并将延迟量TAP值记录下来,以便计算数据DQ的延迟量。在图中可看出,边沿检测和控制逻辑发出DLYRST、DLYCE和DLYINC三个信号来控制IDELAY延迟模块的工作模式。 由于IDELAY模块的最大延迟阶数为64,且在Xilinx VirtexTM-4 FPGA中,延迟模块的精度 为75ps,所以延迟时间最大为75ps*64=4.8ns,因此当时钟频率低于200MHZ(周期为5ns)时,不可能检测到两个跳变沿,此时必须采取适当的措施来获得数据延迟量。当64阶延迟量完成时只检测到一个跳变沿时,我们认为数据延迟量为检测到第一个跳变沿时的延迟量加上16,因为四分之一个200MHZ时钟周期大约为16阶延迟量(16*75=1.2ns)即: 数据延迟量 = 第一个沿延迟量 + 16 (3) 当时钟频率低于110MHZ(周期为9.1ns)时有可能出现没有检测到跳变沿的情况,这时我们认为数据延迟量为32阶(32*75=2.4ns)大概为时钟周期的四分之一: 数据延迟量 = 32 (4) 延迟后的数据经过IDDR触发器分别得到上升沿对应的数据和下降沿对应的数据,然后再通过异步查找表FIFO使读进FPGA的数据与FPGA内部时钟同步方便用户使用。 3 控制器实验结果及结论 该DDR控制器设计总共占用751个4输入LUT,占总LUT资源的2%。另外,设计还使用了3个DCM。DDR控制器在Xilinx ISE8.1i编程环境下实现,结合ModelSim SE6.1b进行仿真。板上调试时时钟选为100MHZ,经测试数据传输及捕获准确无误。 经实验验证该DDR控制器工作稳定可靠、确实可行,占用逻辑资源较少,且具有较高的可移植性,以及简单方便的用户接口。该DDR控制器经过简单的修改就可以控制其他型号的DDR SDRAM芯片,因此可以极大地提高信号处理板的存储容量,很好的用于高速信号处理系统中。 本文的创新观点是基于Xilinx VirtexTM-4 FPGA,利用DCM及内部延迟线等优势,采用直接时钟捕获技术实现DDR SDRAM控制器。 参 考 文 献 [1] 施周渊,戴庆元.DDR SDRAM控制器的FPGA实现.电子技术应用,2003 Vol.29 No.11 P.61-63 [2] 胡为.DDR SDRAM在嵌入式系统中的应用.单片机与嵌入式系统应用,2006(03) [3] 田丰,邓建国,李巍,贾治华. SDRAM控制器的设备与VHDL实现,电子技术应用, 2005 (02) [4] 吴健军,初建朋,赖宗声.基于FPGA的DDR SDRAM控制器的实现,微计算机信息,2006年第1-2期,P156-157 [5] Maria George.Memory Interface Application Notes Overview.XAPP802(v1.6),Xilinx, Inc,2005 [6] Maria George.Memory Interfaces Data Capture Using Direct Clocking Technique.XAPP701(v1.3),Xilinx,Inc,2005 作者简介: 夏玉立(1982-),女(汉族),博士研究生,研究方向:SAR系统研究与信号处理; 通信地址:北京市海淀区北四环西路19号中国科学院电子学研究所2室,邮编:100080, Email: xiayuliyun@sohu.com; xiayuli@mails.gucas.ac.cn雷宏(1963-),男(汉族),研究员,研究方向:星载、机载合成孔径雷达 黄瑶(1981-),女(汉族),博士研究生,研究方向:SAR动目标检测及信号处理 |