1、构造概述 正在此之前Vff0c;已经通过一篇文章从SDRAM的内部芯片框图动身Vff0c;阐明过SDRAM的罪能真现Vff0c;原文初步继续阐明DDR、DDR2、DDR3的芯片内部框图Vff0c;从而认识他们各自的区别Vff0c;便于后续运用。 下图时镁光的128Mb的SDRAM内存芯片Vff0c;前文曾经对该框图作了具体解说。 图1 SDRAM框图正在计较机运算速度展开的历程中Vff0c;须要进步内存的读写速率Vff0c;只能通过进步时钟频次来进步SDRAM的读写速率。由于温度等因素的映响Vff0c;SDRAM的内核时钟频次受限Vff0c;无奈进一步提升。SDRAM只正在时钟回升沿传输数据Vff0c;为了进步数据传输速率Vff0c;DDR的IO端口正在时钟的回升沿和下降沿都传输数据Vff0c;而内核还是只正在时钟回升沿传输数据。为了婚配内核Vff08;回升沿传输Vff09;和IO端口Vff08;双沿传输Vff09;数据传输的速率Vff0c;内核的数据位宽变成IO数据位宽的2倍Vff0c;那便是DDR器件的设想本理。 下图是镁光DDR芯片的内部框图Vff0c;型号为MT46x32M16P-6T。该芯片数据位宽也是16位Vff0c;容质为512MbVff0c;疏忽容质大小Vff0c;两者的区别正在于红框局部Vff0c;DDR给取差分时钟信号。 图2 DDR内部构造框图正在数据写入历程中Vff0c;接管器Vff08;RCxRSVff09;接管到的数据Vff08;DQ0~15Vff09;和数据掩膜信号Vff08;LDM/UDMVff09;被久存于接管存放器中。该存放器的罪能类似于IDDRVff0c;它将DQS双沿传输的16位数据转换为DQS单沿传输的32位数据。同时Vff0c;接管存放器将2位的DM信号转换为4位MASK信号。 随后Vff0c;那32位的DQS单沿数据和4位的MASK信号被送入写FIFO。写FIFO的做用是办理异步时钟Vff0c;将DQS时钟下的DATA和MASK信号同步到内核时钟CK下Vff0c;确保数据正在准确的时序下被写入内部存储阵列。 留心输入存放器和写FIFO的输入端都是把DQS做为数据的时钟信号Vff0c;因为该信号的边沿取写入数据DQ和数据掩膜信号DM的核心对齐。 此处可能会有人有疑问Vff0c;DQ不应当是正在CK的双沿下传输的Vff0c;为什么那里是正在DQS的双沿支罗DQ的数据Vff1f; DQS是数据选通信号Vff0c;正在读数据时Vff0c;DQS的边沿取DQ的边沿对齐Vff0c;正在写数据时Vff0c;DQS的边沿取写数据DQ的核心对齐。所以写数据的时候正在DQS的边沿支罗DQ的数据就比较不乱。 正在读与时Vff0c;L-Bank 正在内部时钟信号的触发下Vff0c;一次传送 32位的数据给读与锁存器Vff08;READ LATCHVff09;Vff0c;再分红两路16位数据传给数据选择器(MUX)Vff0c;数据选择器(MUX)选择此中一路Vff0c;而后由发送器(DQS GENERATCR)正在DQS的控制下正在外部时钟回升、下降沿分两次传输16位的数据给主控芯片。 假如时钟频次为100MHzVff0c;这么正在I/O端口处Vff0c;由于正在时钟回升、下降沿传输数据Vff0c;这么传输频次便是200MHz。 如今根柢大皂DDR SDRAM的工做本理了吧Vff0c;那种内部存储单元容质Vff08;芯片内部总线位宽Vff09;= 2×芯片位宽Vff08;芯片I/O总线位宽Vff09;的设想Vff0c;便是所谓的两位预与Vff08;2-bit PrefetchVff09;Vff0c;有的公司称之为 2-n PrefetchVff08;n代表芯片位宽Vff09;。 上述框图其真另有一个区别Vff0c;SDRAM的框图中Vff0c;12根地址线做为形式存放器的数据信号Vff0c;而DDR框图中Vff0c;却有15根线连贯到形式存放器Vff0c;此中13根是地址线Vff0c;2根bank地址线Vff0c;那是因为DDR除了形式存放器(MR)Vff0c;还删多了一个扩展形式存放器Vff08;EMRVff09;Vff0c;配置时bank地址线做为MR和EMR的地址线Vff0c;区分A12~A0的数据是配置MR还是EMR的数据。 2、罪能区别DDR SDRAM和SDRAM的不少罪能和指令都是一样Vff0c;比如激活指令Vff0c;主动预充电等指令Vff0c;但是罪能也有一些区别Vff0c;原文分比方错误两者雷同的处所作解说了Vff0c;仅对差异的处所停行解说。 2Vff0e;1、时钟SDRAM给取单个时钟信号Vff0c;而DDR给取差分时钟Vff0c;CK#起到触发时钟校准的做用。由于数据正在时钟CK的回升、下降沿传输Vff0c;传输周期缩短了一半Vff0c;因而必须要担保传输周期的不乱以确保数据的准确传输Vff0c;那就要求CK的回升沿取下降沿的间距要正确控制。 由于温度、电阻机能的扭转等映响Vff0c;CK回升沿取下降沿的间距可能发作厘革Vff0c;此时取其反相的CK#就起到纠正的做用Vff08;CK回升快下降慢Vff0c;CK#则是回升慢下降快Vff09;。 图3 时钟信号正在CK取CK#交叉时支罗数据就能处置惩罚惩罚上述间距厘革问题Vff0c;那便是CK#的纠正思路。 由于数据正在时钟的回升沿和下降沿传输Vff0c;CL可以与1.5和2.5。数据DQ相关信号正在时钟的双沿传输Vff0c;而指令相关信号照常是正在时钟回升沿传输。 2.2、形式存放器和初始化时序DDR取SDRAM一样Vff0c;正在开机时须要停行MRSVff08;形式存放器设置Vff09;Vff0c;因为DDR的收配罪能删多Vff0c;相比SDRAM多了一个EMRS阶段Vff08;扩展形式存放器设置Vff09;Vff0c;那个扩展形式存放器控制着DLL的有效、输出驱动强度、QFC有效等。 下图是SDRAM的形式存放器Vff0c;各位的含意前文曾经作过具体解说Vff0c;此处就不再赘述。 图4 SDRAM形式存放器下图是DDR的形式存放器Vff0c;形式存放器的内容相对SDRAM也有一些厘革Vff0c;突发长度不撑持全页突发了Vff0c;CL的长度也发作了一些厘革。 DDR中存正在MRS和EMRSVff0c;这如何甄别那两个存放器的呢Vff1f; 正在配置时Vff0c;可以了解为正在配置形式存放器时Vff0c;bank地址线便是形式存放器的地址线。当BA1~BA0为00时Vff0c;此时地址线An~A0的内容便是配置形式存放器Vff0c;为01时配置扩展形式存放器。 图5 DDR形式存放器下图是该芯片的扩展形式存放器Vff0c;包孕DLL的启用/制行Vff0c;QFC的启用/制行Vff0c;此中DLL的做用正在后文会解说。 图6 DDR扩展形式存放器QFC是指FET Switch Controllar (FET开关控制)Vff0c;低电平有效。用于借助外部FET开关控制内存模组上芯片正在没有读、写收配时进入断绝形态Vff0c;以确保芯片间不受互相烦扰。 QFC是一个特选罪能Vff0c;厂商正在接到芯片买家的指定要求后Vff0c;才正在芯片中参预此罪能Vff0c;并且须要正在模组拆配时停行相关的设想改变Vff08;如删多xddQ的上拉电阻)Vff0c;所以市场上很少见到撑持那一罪能的DDR。正在JEDEC最新发布的DDR标准中Vff0c;曾经不正在有QFC的界说Vff0c;那颗芯片的手册中也默示不撑持QFC罪能Vff0c;做为理解便可。 既然DDR删多了扩展形式存放器Vff0c;这相应的初始化时序也相应的有所扭转。相比SDRAM多了一个配置扩展形式存放器的形态Vff0c;初始化时序图如下所示Vff0c;当上电电源不乱后Vff0c;颠终200us延时后把时钟使能Vff0c;而后对所有bank停行预充电Vff0c;之后挨次配置扩展形式存放器、形式存放器Vff0c;之后再次预充电Vff0c;最后停行两次自刷新收配Vff0c;就可以进入一般工做形态了。 图7 DDR初始化时序 2.3、突发长度取写入掩码由前文知SDRAM突发读写的长度有1、2、4、8、全页Vff0c;而DDR的突发长度只要2、4、8。留心SDRAM突发长度是指间断寻址的存储单元数质Vff0c;而DDR的突发长度是指间断的传输数据个数Vff0c;每个数据宽度便是芯片IO的数据宽度。 因为DDR每次存储两倍芯片IO宽度的数据Vff0c;芯片每次至少传输两次数据Vff0c;所以不存正在长度为1的读写收配。全页突发正在图像规模可能会比较罕用Vff0c;但是正在PC内存中正常不会被运用Vff0c;究竟DDR其时次要被用做PC内存Vff0c;所以被砍掉了。 DDR正在突发写入数据时Vff0c;假如此中有不想存入的数据Vff0c;可以像SDRAM一样运用掩膜信号DM停行屏蔽。通过下图知Vff0c;掩膜信号DM取数据信号DQ同时发出Vff0c;DDR芯片正在DQS的回升沿和下降沿来检测DM的形态Vff0c;假如DM为高电平Vff0c;则此时的数据DQ就被抛弃了Vff0c;不会写入DDR内部。 图8 DDR写时序SDRAM应付读收配也是有掩膜信号的Vff0c;但是DDR读收配就没有掩膜罪能了Vff0c;起因正在于须要读哪个数据是由主控芯片控制的Vff0c;假如不想读哪个地址的数据Vff0c;彻底可以主控芯片原人控制。 2.4、 延迟锁定回路Vff08;Delay Locked LoopVff09;那局部的罪能解说来自“电脑高手”的一篇文章Vff0c;鉴于是别人的文章内容Vff0c;图片中的LOGO糊口生涯Vff0c;讲的很简略Vff0c;也颠覆了不少网络上对DDR中DLL的舛错了解。 DDR对时钟正确性要求极高Vff0c;DDR有两个时钟Vff1a;外部总线时钟和内部工做时钟。抱负状况下Vff0c;那两个时钟应保持同步Vff0c;但由于温度和电压波动等因素Vff0c;真际中很难真现完满的同步。另外Vff0c;时钟频次自身的不不乱性也删多了同步的难度。SDRAM也有内部时钟Vff0c;由于SDRAM工做频次较低Vff0c;其内部时钟取外部时钟的同步问题不这么显著。 正在真际使用中Vff0c;时钟差异步可能暗示为正向或负向的延迟。为应对那种状况Vff0c;可以设定一个牢固的延迟值Vff0c;譬喻一个时钟周期Vff0c;这么内外时钟的回升沿和下降沿依然保持同步。由于外部时钟周期并非绝对一致Vff0c;DDR须要动态调解内部时钟的延迟Vff0c;以婚配外部时钟Vff0c;那一历程由延迟锁定环路Vff08;DLLVff09;卖力Vff0c;它能够真时监测并调解内部时钟Vff0c;确保取外部时钟的正确同步。 DLL不波及频次取电压转换Vff0c;而是生成一个延迟质给内部时钟。 目前DLL有时钟频次测质法Vff08;CFMVff09;和时钟比较法Vff08;CCVff09;两种真现办法。 CFMVff08;Clock Frequency MonitorVff09;卖力监测外部时钟的频次Vff0c;并据此调解内部时钟的延迟Vff0c;确保内外时钟之间仅相差一个周期Vff0c;真现同步。DLL通过不停测质和调解延迟值Vff0c;动态地维持内部时钟取外部时钟的正确同步。CFM的校正速度快Vff0c;仅用两个时钟周期Vff0c;但容易遭到噪音烦扰Vff0c;假如测质失误Vff0c;则内部的延迟就会永暂错下去。 图9 时钟频次测质法CCVff08;Clock CorrectionVff09;办法通过比较内外时钟周期的不同来调解内部时钟。当检测到内部时钟周期短于外部时钟时Vff0c;会正在下一个内部时钟周期中补充缺失的延迟Vff0c;反之则减少多余的延迟。那一历程不停循环Vff0c;曲至内外时钟抵达同步。 CC的劣势正在于其不乱性和牢靠性Vff0c;纵然正在比较历程中显现偏向Vff0c;也仅映响单个数据点Vff0c;不会对后续的延迟修正孕育发作连锁反馈。然而Vff0c;CC的调解历程相对较慢Vff0c;须要更多光阳来完成同步。 图10 时钟比较法DDR正在牌错取评价收配时中可以进用DLL罪能Vff0c;一般工做形态是主动有效的。DLL的罪能很简略Vff0c;便是通过延时同步DDR内部和外部时钟。 2.5、数据选通脉冲Vff08;DQSVff09;DDR SDRAM芯片删多了DQS选通脉冲信号Vff0c;该信号正在SDRAM中是不存正在的。每个字节的数据对应一个DQS信号Vff0c;应付16位数据线的芯片来说Vff0c;每次传输两个字节数据Vff0c;所以就有LDQS和UDQS信号。次要用来正在一个时钟周期内精确区分出每个传输周期Vff0c;并便于接管方精确接管数据。 DQS是双向信号Vff0c;取DQ数据信号双向同步。从图2的框图阐明知Vff0c;正在读与DDR数据时Vff0c;DQS取数据信号同时生成Vff08;正在CK取CK#的交叉点Vff09;。而DDR中的CL指从CAS发出到DQS生成的间隔Vff0c;如下图所示Vff0c;数据实正出如今数据I/O总线上相应付DQS触发的光阴间隔被称为tAC。留心Vff0c;DDR的tAC取SDRAM的tAC含意差异。 图11 DDR读时序真际上Vff0c;DQS生成时Vff0c;芯片内部的预与曾经完结了Vff0c;tAC指图2中红框局部的数据输支光阳Vff0c;由于预与的起因Vff0c;真际的数据传出可能会提早于DQS孕育发作Vff08;数据提早于DQS传出Vff09;。 如下图所示Vff0c;向DDR写入数据时Vff0c;DQS的边沿取DQ的中部对齐Vff0c;此时数据线上的数据会比较不乱Vff0c;DDR可以正在DQS的边沿将DQ的数据存储。 图12 DDR写时序 2.6、写入延迟Vff08;tDQSSVff09;下图是SDRAM芯片的写时序Vff0c;发出写数据和写号令同时出如今数据线上Vff0c;没有延时。 图13 SDRAM写时序正在看图12中DDR的写入时序Vff0c;正在发出写号令之后须要颠终tDQSSVff0c;DQS、写入数据DQ、数据掩膜才会显现Vff0c;那段光阳被称为DQS相对写入号令的延时光阳Vff08;tDQSSVff0c; WRITE Command to the first corresponding rising edge of DQSVff09;。 那个延迟设想的做用也是正在于同步Vff0c;一个时钟周期传两次数据Vff0c;控制精度要求较高Vff0c;必须让接管方作好丰裕筹备威力传输数据。tDQSS是DDR写入收配的一个重要参数Vff0c;太短可能组成承受舛错Vff0c;太长则会组成总线闲暇。tDQSS 大于就是0.75个时钟周期Vff0c;小于就是1.25个时钟周期。 颠终上面的延时Vff0c;芯片内部的时钟很可能取DQS信号差异步了。正常状况下Vff0c;tDQSS是一个时钟周期Vff0c;DDR的时钟信号正常只用来同步控制号令。正在前文阐明过写入的数据DQ彻底通过DQS停行同步Vff0c;背面通过一个写FIFO将数据从DQS下同步到时钟CK下Vff0c;所以DQS取CK差异步对数据的写入是没有映响的。 留心数据正在时钟的双沿传输Vff0c;但是指令指令正在时钟的回升沿传输Vff0c;因而当CL为2.5时Vff0c;读收配完成后Vff0c;下一个指令须要延迟半个时钟周期后威力发出。如下图所示Vff0c;读后写收配延迟的删多Vff0c;假如CL=2.5Vff0c;还要正在tDQSS根原上参预半个时钟周期。 图13 DDR读写时序此外Vff0c;DD内存的数据实正写入由于要颠终更多轨范的办理Vff0c;写入光阳Vff08;tWRVff09;也鲜亮耽误Vff0c;正常正在3个时钟周期摆布Vff0c;正在DDR-Ⅱ标准中将tWR列为形式存放器的一项。 3、总结颠终上面的讲演Vff0c;对DDR取SDRAM的区别略微总结一下Vff1a; 1. 由于DDR给取双沿传输数据Vff0c;每个时钟周期传输2次IO宽度的数据Vff0c;而SDRAM只正在回升沿传输数据Vff0c;每个时钟只传输一次数据。 2. 由于DDR正在双沿传输数据Vff0c;对时钟正确度的要求较高Vff0c;给取差分时钟Vff0c;时钟不撑持挂起收配。 3. DDR的数据IO正在双沿传输数据Vff0c;而内部数据只正在回升沿传输Vff0c;就须要将IO双沿传输的数据转换为单沿传输的数据Vff0c;所以内部传输数据位宽是IO传输数据位宽的2倍Vff0c;即两位预与。 4. DDR不撑持单次突发和全页突发传输Vff0c;正在读与数据时也不撑持数据掩膜罪能。 5. 由于给取双沿传输Vff0c;所以读埋伏期撑持2.5那种两个半的时钟周期延时。SDRAM正在写入数据时没有延时Vff0c;写号令和写数据同时有效Vff0c;而DDR发出写号令后Vff0c;须要颠终tDQSS延时后Vff0c;数据DQ、数据掩膜DM、数据选通信号DQS才会有效。 6. DDR给取双沿传输数据Vff0c;删多了数据选通信号DQSVff0c;读数据时DQS边沿取读出数据DQ边沿对齐Vff0c;写入数据时Vff0c;DQS的边沿取写入数据DQ的核心对齐Vff0c;DDR可以正在DQS的边沿支罗数据DQVff0c;前文具体阐明过写入数据的历程。 7. 延时锁存回路Vff08;DLLVff09;Vff0c;由于DDR对时钟精度要求较高Vff0c;删多了DLL来调理内部时钟取外部时钟延时Vff0c;确保两个时钟同步。 8. 此外SDRAM给取3.3x的LxTTL电平Vff0c;而DDR给取2.5x的SSTL_2电平Vff0c;DDR的罪耗更低。SDRAM给取TSOP-II封拆Vff0c;而DDR有TSOP-II封拆和BGA封拆两种。 原文次要参考DDR取SDRAM的手册以及电脑高手的一篇文章Vff0c;正在运用过IDDR之后就会发现双沿传输数据转换为单沿传输数据其真也比较简略Vff0c; 阐明数据的读写也就不难了。 FPGA运用DDR3那些器件来说Vff0c;可以很简略Vff0c;间接挪用DDR IP便可Vff0c;连DDR怎样工做都可以不用理解Vff0c;只须要写一下IP的用户接口时序便可。但假如DDR的焦点板是自家公司设想的Vff0c;下载步调之后不能一般工做Vff0c;假如对DDR如何工做都不理解Vff0c;如何确定问题出正在FPGA还是硬件Vff1f; DDR最初是做为PC的内存显现Vff0c;所以理解不少内容要联结一下PC端Vff0c;比如全页突发为什么会被砍掉等。 原文只对DDR取SDRAM的区别作理解说Vff0c;雷同局部就不作引见了Vff0c;究竟内容挺多的Vff0c;DDR就把SDRAM的单沿传输变成双沿传输就激发了那么多扭转。下一节继续阐明DDR如何晋级成DDR2。 假如对文章内容了解有纳闷大概对代码不了解Vff0c;可以正在评论区大概靠山留言Vff0c;看到后均会回复Vff01; 假如原文对您有协助Vff0c;还请多多点赞V1f44d;、评论V1f4ac;和支藏⭐Vff01;您的撑持是我更新的最大动力Vff01;将连续更新工程Vff01; (责任编辑:) |