XAPP709(v2.0)2006年10月27日©2004–2006Xilinx,Inc.Allrightsreserved.AllXilinxtrademarks,registeredtrademarks,patents,andfurtherdisclaimersareaslistedat:Xilinxisprovidingthisdesign,code,orinformationasis.Byprovidingthedesign,code,orinformationasonepossibleimplementationofthisfeature,application,orstandard,Xilinxmakesnorepresentationthatthisimplementationisfreefromanyclaimsofinfringement.Youareresponsibleforobtaininganyrightsyoumayrequireforyourimplementation.Xilinxexpresslydisclaimsanywarrantywhatsoeverwithrespecttotheadequacyoftheimplementation,includingbutnotlimitedtoanywarrantiesorrepresentationsthatthisimplementationisfreefromclaimsofinfringementandanyimpliedwarrantiesofmerchantabilityorfitnessforaparticularpurpose.提要本应用指南描述了在Virtex™-4XC4VLX25FF668-10C器件中实现的DDRSDRAM控制器。该实现运用了直接时钟控制技术来实现数据采集,并采用自动校准电路来调整数据线上的延迟。DDRSDRAM器件是低成本、高密度的存储资源,在很多存储器供应商处均可获得。本参考设计使用SDRAM器件和DIMM开发而成。DDRSDRAM描述DDRSDRAM规范的详情可在电子工业联盟(ElectronicIndustriesAlliance,EIA)成员JEDEC机构的网站上获得,网址为。DDRSDRAM规范刊载在参考文件JESD79E下的JEDEC文档。DDRSDRAM器件是硅片存储器资源,现在昀经常用于各种系统,包括从消费产品到视频系统的各类应用。DDRSDRAM器件的频率高达200MHz或DDR400。DRAM可以使用器件或模块的配置。DDR控制器命令表1所示为控制器发出的命令。这些命令通过使用下列控制信号传输到存储器:•行地址选择(RAS)•列地址选择(CAS)•写使能(WE)•时钟使能(CKE)(器件配置后始终置为高)•芯片选择(CS)(器件运行期间始终置为低)应用指南:Virtex-4系列XAPP709(v2.0)2006年10月27日使用Virtex-4FPGA器件实现DDRSDRAM控制器作者:RichChiuR表1:DDRSDRAM命令信号编号功能RASCASWE1加载模式寄存器(LoadModeRegister)LLL2自动刷新(AutoRefresh)LLH3预充电(Percharge)(1)LHL4选择组激活行(SelectBankActivateRow)LHH5写命令(WriteCommand)HLL6读命令(ReadCommand)HLH2(v2.0)2006年10月27日DDRSDRAM描述R命令功能模式寄存器(ModeRegister)模式寄存器用于定义DDRSDRAM特定的运行模式,包括突发长度(burstlength)、突发类型、CAS延迟(CASlatency)和运行模式的选择。图1所示为此控制器所用的模式寄存器的功能。组地址(BankAddress)BA1和BA0用于选择模式寄存器。图1显示了组地址位配置。扩展模式寄存器模式寄存器控制范围之外的功能由扩展模式寄存器控制。这些附加功能是用于DDRSDRAM接口的DLL使能/禁能和输出驱动强度,如图2所示。7空操作(NoOperation,NOP)HHH注:1.地址信号A10在预充电所有组期间设定为高,在单个组预充电期间设定为低。表1:DDRSDRAM命令(续表)信号编号功能RASCASWE图1:DDR400的模式寄存器定义BA1BA0A12A11A10A9A8A7A6A5A4A3A2A1A0000DLL0CASLatencyBTBurstLengthA2A1A0BurstLength001010011Others248ReservedA6A5A4010011110Others23(DDR400)2.5ReservedCASLatencyA8DLL0NormalOperation1ResetBA1BA00001ModeRegisterModeRegister(MR)ExtendedMREMR1x709_01_090304DDRSDRAM描述XAPP709(v2.0)2006年10月27日初始化顺序此控制器状态机使用的初始化顺序遵循DDRSDRAM规范。配置顺序分为两步:第一步由硬件在上电时处理;第二步由FPGA存储器控制器设计处理。图3所示为针对初始化而发出的命令顺序。初始化顺序完成后,控制器向DDRSDRAM存储器器件发出虚读命令。该过程允许数据通路模块在Virtex-4输入延迟模块中选择正确的tap数量。数据通路模块使用存储器在此虚读命令周期发出的数据选通脉冲(DQS)来确定输入的DQS和内部系统时钟(CLK0)之间的关系。数据通图2:DDR400的扩展模式寄存器BA1BA0E12E11E10E9E8E7E6E5E4E3E2E1E0010E1DriveStrength0Normal1ReducedDSE0DLL01EnableDisabledDLLx709_02_032405图3:使用Virtex-4器件的DDRSDRAM初始化顺序VDDandVDDQCKELowWaitfor200µsWait200clockcyclesPRECHARGEALL(DESELECTorNOP)PRECHARGEALLCKEHighLOADMODEREGISTERBA01LOADMODEREGISTERBA00BoardLevelAUTOREFRESHAUTOREFRESHLOADMODEREGISTERBA00DLLnoresetFPGADesign(handledbythecontroller)x709_03_020206VREFandVTT4(v2.0)2006年10月27日DDRSDRAM描述R路模块确定所要求的正确数量的延迟tap后,一个Tap_select_done信号便被发送到控制器。然后控制器进入空闲状态。读使能校准DQS校准后,控制器发出一个命令,向存储器写入一个预定义数据模式(pattern)。写操作结束后,数据被读回,并与已写的数据进行比较。一个模块会计算发出读命令后,在该模块中接收到有效数据所需的时钟周期数。该数值用于在读使能信号上建立正确的内部延迟,以保证正常的读操作。预充电(PRECHARGE)命令预充电命令用于取消特定组中活动行的活动状态。在预充电命令发出的一定时间(tRP)后,此组在接下来的行激活命令中可以使用。输入A10确定对一个组还是全部组进行预充电。自动刷新(AUTOREFRESH)命令DDR器件需要每7.8µs刷新一次。要求自动刷新计数器的电路放置在控制器内。控制器将DCM的CLKDV输出用于刷新计数器。该输出提供自动刷新计数器需要的低频率时钟。要节省DCM的CLKDV输出使用的BUFG,设计人员可以使用DCM的高频CLK0输出或DCM的CLK/4输出(用于IDELAY电路)作为时钟来驱动刷新计数器。如果自动刷新电路的时钟改变,mem_interface_top_parameters_0.v文件中的max_ref_count也应做相应改变。auto_ref信号标志出需要一个待发的自动刷新命令。在控制器发出自动刷新命令之前,此信号一直为高。在发出自动刷新命令前,控制器要完成当前活动组中的事务。激活命令激活命令激活一个组中的一行,允许任何读或写命令发送到存储器阵列中的一个组。行被激活后,读或写命令就可以按照tRCD规范发送到行。当控制器发现输入的地址是关于组内某行而非当前活动行时,即会发出地址冲突信号。预充电命令也由控制器发出,取消活动行的活动状态。控制器还会向新行发出另一个激活命令。读命令读命令用于发起对活动行的突发式读访问。BA0和BA1上的值选择组地址,而A0-Ai上提供的地址输入选择起始列位置。读突发结束后,只要还未预充电,此行仍可用于后面的访问。图4所示为一个附加延迟为零的读命令示例。因此,在该示例中,读延迟与CAS延迟相同,在DDR400规范中为三个时钟周期。DDRSDRAM描述XAPP709(v2.0)2006年10月27日写命令–写命令用于发起对活动行的突发式访问。BA0和BA1上的值选择组地址,而地址输入A0Ai的值选择活动行内的起始列位置。写延迟的值等于一个时钟周期。图5所示为一个写延迟为1的写突发。写命令和DQS信号的第一个上升沿之间的时间间隔由写延迟确定。时序分析本Virtex-4DDR参考设计利用该器件独特的I/O和时钟控制功能,可昀大限度地提高性能和时序余量。作为此参考设计基础的物理层采用了直接时钟控制方法。图4:DDRSDRAM读访问波形CK#T0READNOPNOPNOPNOPNOPT1T2T3T3nT4T4nT5CKCOMMANDADDRESSDQSDQBanka,ColnDON'TCARETRANSITIONINGDATADOnCL=3X709_04_013006图5:DDRSDRAM写命令波形T0T1T2T2nT3CK#CKCOMMANDADDRESSDQSDQDataMask(DM)DOnX709_03_110805WRITENOPNOPNOPtDQSS(NOM)tDQSSBanka,Colb6(v2.0)2006年10月27日DDRSDRAM描述R有关详情请参阅XAPP701:。本部分针对地址/控制通路、写数据通路及读(或采集)数据通路给出一个时序分析示例。地址/控制通路地址和控制信号在CLK180上保持同步,为与时钟CLK0有关的存储器器件确保充足的建立及保持时间余量。表2所示为频率为165MHz时,DDR接口的地址和控制信号时序分析。设计人员必须把其它与特定电路板相关的情况考虑进来,例如在速度级别为-10的Virtex-4器件中的实现,时钟和地址/控制网络的负载会有差别。写数据通路写数据通路与CLK90保持同步。但是,写数据字是作为DDR值被发送的,所以对于CLK180的上升沿和下降沿都必须有充足的建立及保持时间余量。相应地,写数据通路的时序分析结合了存储器时钟的昀大占空比失真,如表3所示。该分析也适于速度级别为-10的Virtex-4器件。表2:以165MHz运行时的地址和控制信号时序分析参