构架
SDRAM控制器由4个模块组成:SDRAM控制器,控制接口,命令通道和数据通道。SDRAM控制器模块是顶级模块,其instantiates3个低等级模块,将其连成一个整体。控制接口模块从主机接收命令和相关的存储地址,同时对命令解码后传送给命令模块,命令模块从控制接口模块接收命令和地址,生成合适的命令给SDRAM器件,数据通道处理读写命令时的数据通路操作,SDRAM控制器也演示了一个PLL,用于CLOCK_LOCK模式以改进I/O定时。PLL对于SDRAM操作不是必须的,图7给出了SDRSDRAM控制器的方框图。
ControlInterfaceModule
Thecontrolinterfacemoduledecodesandregisterscommandsfromthehost,an————dpassesthedecodedNOP,WRITEA,READA,REFRESH,PRECHARGE,andLOAD_MODEcommands,andADDRtothecommandmodule.TheLOAD_REG1andLOAD_REG2commandsaredecodedandusedinternallytoloadtheREG1andREG2registerswithvaluesfromADDR.Figure8showsthecontrolinterfacemoduleblockdiagram.
控制接口模块
控制接口模块对主机发出的命令解码并寄存,传送已经解码的NOP,WRITEA,READA,REFRESH,PRECHARGE和LOAD_MODE命令和ADDR给命令模块,LOAD_REG1和LOAD_REG2命令解码后,同ADDR一起装入内部的REG1和REG2寄存器。图8给出了控制接口模块的框图。
Thecontrolinterfacemodulealsocontainsa16-bitdowncounterandcontrolcircuitthatisusedtogenerateperiodicrefreshcommandstothecommandmodule.The16-bitdowncounterisloadedwiththevaluefromREG2andcountsdowntozero.TheREFRESH_REQoutputisassertedwhenthecounterreacheszeroandremainsasserteduntilthecommandmoduleacknowledgestherequest.TheacknowledgefromthecommandmodulecausesthedowncountertobereloadedwithREG2andtheprocessrepeats.REG2isa16-bitvaluethatrepresentstheperiodbetweenREFRESHcommandsthat
Forexample,ifanSDRAMdevicethatisconnectedtotheSDRSDRAMControllerhasa64-ms,4096-cyclerefreshrequirement,thedevicemusthaveaREFRESHcommandissuedtoitatleastevery
64ms/4096=15.625ìs.
IftheSDRAMandSDRSDRAMControllerareclockedbya100-MHzclock,themaximumvalueofREG2is15.625ìs/0.01ìs=1562d.
theSDRSDRAMControllerissues.Thevalueissetbytheequationint(refresh_period/clock_period).
控制接口模块也含有一个16位的减法计数器,和用于给命令模块产生周期刷新命令的电路,16位的减法计数器装入REG2中的数值,并递减到0,但计数器为0时,执行REFRESH_REQ输出给命令模块,该命令一致输出直到命令模块响应该刷新请求。收到命令模块的刷新请求后,减法计数器重新装入REG2中的数值,重复以上过程。REG2是一个表示SDRSDRAM控制其发出的REFRESH(刷新)命令之间的时间间隔周期,数值等于refresh_period/clock_period的整数。
例如,如果使用的SDRAM器件具有64ms,4096周期刷新要求,器件必须必须至少每15.62509us,
因为:64ms/4096=15.62509μs.
如果SDRAM和控制器工作在100Mhz的时钟周期,REG2的最大数值是15.625μs/0.01μs=1562d.,该数值在发出LOAD_REG2命令是同步出现在ADDR上。
CommandModule
Thecommandmoduleacceptsdecodedcommandsfromthecontrolinterfacemodule,refreshrequestsfromtherefreshcontrollogic,andgeneratestheappropriatecommandstotheSDRAM.Themodulecontainsasimplearbiterthatarbitratesbetweenthecommandsfromthehostinterfaceandtherefreshrequestsfromtherefreshcontrollogic.Therefreshrequestsfromtherefreshcontrollogichavepriorityoverthecommandsfromthehostinterface.Ifacommandfromthehostarrivesatthesametimeorduringahiddenrefreshoperation,thearbiterholdsoffthehostbynotassertingCMDACKuntilthehiddenrefreshoperationiscomplete.Ifahiddenrefreshcommandisreceivedwhileahostoperationisinprogress,thehiddenrefreshisheldoffuntilthehostoperationiscomplete.Figure9showsthecommandmoduleblockdiagram.
命令模块
“命令模块”接收“控制接口模块”输出的已经解码的命令,和周期性输出的刷新请求,并产生合适的命令给SDRAM器件,模块含有一个简易的仲裁电路用于仲裁主机的命令和刷新控制逻辑所产生的刷新请求。从刷新控制逻辑电路发出的刷新请求比主机接口的命令的优先级别高。如果主机命令和隐含的刷新操作同时出现,仲裁电路在刷新操作完成之前就不发出CMDACK应答。如果主机操作在进行中,收到了刷新命令,刷新操作将延时到主机操作完成后执行,图9给出了命令模块的框图。
Afterthearbiterhasacceptedacommandfromthehost,thecommandispassedontothecommandgeneratorportionofthecommandmodule.ThecommandmoduleusesthreeshiftregisterstogeneratetheappropriatetimingbetweenthecommandsthatareissuedtotheSDRAM.OneshiftregisterisusedtocontrolthetimingtheACTIVATEcommand;asecondisusedtocontrolthepositioningoftheREADAorWRITEAcommands;athirdisusedtotimecommanddurations,whichallowsthearbitertodetermineifthelastrequestedoperationhasbeencompleted.
ThecommandmodulealsoperformsthemultiplexingoftheaddresstotheSDRAM.TherowportionoftheaddressismultiplexedouttotheSDRAMoutputsA[11:0]duringtheACTIVATE(RAS)command.ThecolumnportionisthenmultiplexedouttotheSDRAMaddressoutputsduringaREADA(CAS)orWRITEAcommand.
TheoutputsignalOEisgeneratedbythecommandmoduletocontroltristatebuffersinthelaststageoftheDATAINpathinthedatapathmodule.
在仲裁电路已经接受主机命令后,命令被送到模块的命令发生器部分,命令模块使用3个移位寄存器来产生命令之间的时序,一个移位寄存器用于控制ACTIVATE命令;第二个用于控制READAorWRITEA命令发出的时间;第三个用于对命令的持续时间定时,这样仲裁其就可以判断最近请求的操作是否已经完成。
命令模块也实现SDRAM的地址复用,地址的行部分在ACTIVATE(RAS)命令时复用到SDRAM输出的A[11:0],地址的列部分在READA(CAS)或WRITEA命令时复用到SDRAM地址线上,
控制模块所产生的输出信号OE用于控制数据通路模块的DATAIN通路的三态缓冲。
DataPathModule
ThedatapathmoduleprovidestheSDRAMdatainterfacetothehost.HostdataisacceptedonDATAINforWRITEAcommandsanddataisprovidedtothehostonDATAOUTduringREADAcommands.Figure10showsthedatapathmoduleblockdiagram.TheDATAINpathconsistsofa2-stagepipelinetoaligndataproperlyrelativetotheCMDACKandthecommandsthatareissuedtotheSDRAM.DATAOUTconsistsofa2-stagepipelinethatregistersdatafromtheSDRAMduringaREADAcommand.DATAOUTpipelinedelaycanbereducedtooneorevenzeroregisters,withtheonlyaffectthattherelationshipofDATAOUTtoCMDACKchanges.
数据通路模块
数据通路模块提供了SDRAM和主机之间的数据接口,主机在WRITEA时从DATAIN上输入数据,在READA命令时从DATAOUT上取出数据。图10给出了数据通路模块的方块图,DATAIN通路由2段通路组成,以和对应的CMDACK和送往SDRAM的命令的时序对齐,DATAOUT也由2段通路构成,用于在READA命令期间寄存SDRAM的输出数据,DATAOUT的通路延时能够减少到1次或者不寄存,唯一的影响的是DATAIUT和CMKACK的关系会改变。
Full-PageModeOperation
TheSDRSRAMControllersupportsfull-pagemodeoperationoftheSDRAMdevicesthatitcontrols.TheSDRSDRAMControllerisconfiguredforfull-pageoperationbysettingbit8ofREG1(seesection“LOAD_REG1Command”onpage9).WhentheSDRSDRAMControllerisinfull-pagemode,theauto-hiddenrefreshfunctionisdisabledandREADAandWRITEAcommandsbecomeREAD/WRITE(withoutauto-precharge).TheuserinterfacemusthandlerefreshingtheSDRAMdevicesviatheREFRESHcommand.TheuserinterfacemustalsohandleissuingappropriatePRECHARGEcommandstotheSDRAMdevices,tocloseabankbeforestartingaREADoperationtoadifferentrow.Figure11showsafull-pageREADburstwithaPRECHARGEtoterminatethebursttimingdiagram.Thefollowinglistdetailsthefull-pageREADoperation:
满页模式操作
SDRAM控制其支持SDRAM器件的满页操作模式,控制器通过设置REG1来配置其工作在满页模式,当SDRSDRAM控制器在满页模式时,控制器的隐含的刷新功能被禁止,READA和WRITEA命令变成READ/WRITE(没有自动预充电),用户接口必须通过REFRESH命令来刷新SDRAM器件。用户接口也必须对SDRAM执行预充电命令,在对不同行启动READ命令时,必须关闭一个存储体。图11显示了的满页突发读时,由PRECHARGE中止突发时序的时序图。下面列出了满页操作的详细过程。
■TheuserassertstheREADCommandonCMDandADDR
■TheSDRSDRAMControllerassertsCMDACKtoacknowledgethecommandandsimultaneouslystartsissuingcommandstotheSDRAMdevices
■OneclockaftertheSDRSDRAMControllerassertsCMDACK,theuserassertsNOPonCMD
■(RCD+CL+2)clocksaftertheSDRSDRAMControllerassertedCMDACK,theSDRSDRAMControllerstartsclockingthereaddataoutonDATAOUT
■(CL–1+7)clocksbeforethelastREADdatavalueistoappearonDATAOUT,theuserassertsPRECHARGEonCMD
■4clockslater,theSDRSDRAMControllerassertsCMDACKtoacknowledgethePRECHARGEcommandandsimultaneouslyissuesaPRECHARGEcommandtotheSDRAMdevices
■(CL–1+2)clockslater,theREADburstterminatesonDATAOUT
n用户发出在CMD和ADDR上发出READ命令
nSDRAM控制器执行CMDACK来响应这个命令,同时启动该命令给SDRAM器件
n在SDRAM控制器执行CMDACK后一个时钟,用户执行NOP。
n在SDRAM控制器执行CMDACK的(RCD+CL+2)个时钟后,SDRAM控制器开始在DATAOUT上读出数据
n在最后一个读出数据出现在DATAOUT前的(CL–1+7)个时钟,用户在CMD上执行PRECHARGE.
n4个时钟后,SDRAM控制器执行CMDACK来作为PRECHARGE命令的应答,同时向SDRAM发出PRECHARGE命令。
n(CL–1+2)个时钟后,在DATAOUT上的读突发操作被中止。
Figure12showsafull-pageWRITEburstwithaPRECHARGEtoterminatethebursttimingdiagram.Thefollowinglistdetailsthefull-pageWRITEoperationisasfollows:
nTheuserassertsWRITEonCMDandADDR
nTheSDRSDRAMControllerassertsCMDACKtoacknowledgethecommandandsimultaneouslystartsissuingcommandstotheSDRAMdevices
nOneclockaftertheSDRSDRAMControllerassertsCMDACK,theuserassertsNOPonCMD
n(RCD–2)clocksaftertheSDRSDRAMControllerassertsCMDACK,theuserstartsclockingdataintotheSDRSDRAMControlleronDATAIN
n3clocksbeforethelastWRITEdatavalueistoappearonDATAOUT(应为?DATAIN),theuserassertsPRECHARGEonCMD.Thisdelayis(5clockcommanddelay–tWR),whichis2inthisexample
n4clockslater,theSDRSDRAMControllerassertsCMDACKtoacknowledgethePRECHARGEcommandandsimultaneouslyissuesaPRECHARGEcommandtotheSDRAMdevices
nThefull-pageWRITEburstisterminated
图12给出了满页突发写(WRITE)模式操作被预充电(PRECHARGE)中止的时序,满页写操作的详细过程如下:
n用户在CMD和ADDR上执行WRITE
nSDRAM控制器发出该命令的响应CMDACK,同时向SDRAM器件发出该命令
n在控制器发出CMDACK的1个时钟周期后,用户执行在CMD上发出NOP。
n在控制器发出CMDACK的”RCD-2”个时钟周期后,用户在DATAIN上开始启动输入数据
n在DATAIN上出现最后一个数据的3个时钟周期前,用户在CMD上发出PRECHARGE,该延时(指用户发出PRECHARGE的时间)应该等于“3-tWR”,在本例中该数值为2。
n4个时钟后,SDRAM控制器发出对PRECHARGE的应答CMDACK,同时发出PRECHARGE给SDRAM器件
n此时,满页写突发操作被停止
Simulation,Synthesis,Place-&-Route,&Results
TheSDRSDRAMControllerincludessourcefiles,atestbench,synthesisscripts,andsupportfilesforplace-androuteusingtheQuartus®IIsoftwareversion2.1targetinganEP20K200EFC672-1Xdevice.Table5showstheSDRSDRAMControllerdirectorystructure.
仿真,综合,(印制板)布局和布线,结果
SDRAM控制器包含源文件,测试平台,综合脚本和使用Quartus®II软件V2.1版本的环境支持文件,目标器件为EP20K200EFC672-1X。
表5:SDRAM控制器的目录结构
Simulation
TheSDRSDRAMControllercanbesimulatedbyusingthebehavioralsourcefilesdr_sdram_tb(/simulationdirectory).Thetestbenchperformsthefollowingactions:
nInstantiatestheSDRSDRAMControllerandtwoSDRAMmemorymodels
nConfigurestheSDRAMdevicesandSDRSDRAMController
nRunsaramppatterntestusingallcombinationsofCASlatency,burstlength,andRAStoCASdelaysforagivenclockfrequency
Higherclockfrequencies(e.g.,133MHzvs.100MHz)limittheRAStoCASdelaysandCASlatencychoices.ThetestassumesaninterfacetoaMicronMT481C8M16A2SDRAMdevice(notsupplied).FormoreinformationontheMicronmodels,seehttp://www.micron.com.
仿真
SDRAM控制器可以使用源文件来仿真(/simulation目录),测试平台完成以下工作。
n演示一个SDRAM控制器和2个SDRAM存储模块
n配置存储器和SDRAM控制器
n使用所有给定时钟频率下的CAS延时,突发长度,RAStoCAS延时的各种组合,执行一个”ramp”测试模式
时钟频率越高,对CAStoCAS延时和CAS延时的限制越大(例如133Mhz相对于100Mhz),测试假定使用MicronMT481C8M16A2SDRAM器件。关于Micron存储模块的更详细信息,请参见:http://www.micron.com.
Place&Route
ThetCOandtSUvaluesareimportantparameterstoconsider,ifyouwanttoruntheSDRSDRAMControllerathigherspeeds.InadditionAlterarecommendsplacingdatapinsinonebankandcontrolpinsinanotherbank.
PC133SDRAMdevicestypicallyhaveatCOof5.4nsandatSUof1.5ns.
PCBdelayisgivenbythefollowingequation:
PCBdelay=(clock(ns))–(FPGAsetuptime(ns))–(SDRAMtCO(ns))showstypicalPCBdelays.
Forawriteoperationat133MHz,thePCBdelay=(7.5–1.5–3.5)=0.9ns.
Forareadoperationat133MHz,thePCBdelay=(7.5–1.3–5.4)=1.5ns.
FormoreinformationonPCBdesignforhigh-speedapplications,seeApplicationNote75:High-SpeedBoardDesigns.
(印制板)布局和布线
时间参数tCO和tSU的数值是需要考虑的重要参数,如果你想以较高的速路运行SDRAM控制器,建议将数据引脚在一个BANK,控制引脚在另一个存储体(?)。
PC133SDRAM器件典型的tCO等于5.4ns,tSU等于1.5ns.
PCB延时由以下等式给出:
PCB延时=(时钟周期–(FPGA建立时间–SDRAMtCO(ns).
对于133Mhz的写操作,PCB延时时间=(7.5–1.5–3.5)=0.9ns.
对于133Mhz的读操作,PCB延时时间=(7.5–1.3–5.4)=1.5ns.
关于高速PCB设计的更多信息,请参见ApplicationNote75:High-SpeedBoardDesigns.
Throughput
Maximumthroughputisachievedwithpagebursts.Forrandomoperationthroughputisgivenby:
Throughput=1/clockperiod(ns)×datapathwidth(bytes)×burstlengthofaccess/numberofclockcyclesperaccess
Forexample,ifdatapathwidth=32bits(4bytes),clockcycles=20,burstlengthofaccess=8,
throughput=1/7.5×4×8/20=212Mbytes/s
Note,awritethroughputishigherthanareadthroughput,becauseaWRITEAoperationrequires15clockcycles
Performance
Table6showstheperformanceresultsfortheSDRSDRAMController.TheresultsweregeneratedwiththeQuartusIIsoftwareversion2.1SP1.
数据吞吐率
在页突发模式下数据吞吐率最大,对于随机操作时的吞吐率,由下式给出。
吞吐率=1/时钟周期(ns)×数据宽度(字节)×突发长度/每次访问的时钟数
例如,如果数据宽度为32位,时钟周期为20ns,突发长度为8,则:
吞吐率==1/7.5×4×8/20=212Mbytes/s
注意,写操作时的吞吐率比读操作时的吞吐率高,因为写操作要求15个时钟周期。
性能
表6给出了SDRAM控制器的性能结果,该结果是在使用QuartusIIsoftwareversion2.1SP1.
下得到的。