DDR3存储器的ODT是什么,ODT同步模式,ODT动态模式又分别指什么?xilinx_wiki6年前发布1901 最近用FPGA调DDR3,虽然IP已经成功读写(在厂家的DDR3 DEMO上修改而来),跑起来也没什么问题,但是看到控制器IP里面那一堆的选项,好多名词都不知道是啥意思。
什么是ODT?
ODT —— On-Die Termination,是从DDR2 SDRAM之后才有的功能,之前的DDR,终端电阻是做在板子上的,但是效果不好而且占用PCB空间,到了DDR2 SDRAM,终端电阻做到了DDR芯片内部,也就称为On Die Termination,Die上的终端电阻,Die是硅片的意思,也就是DDR颗粒。用户可以通过读写MR1寄存器,来控制DDR3 SDRAM内部终端电阻的连接或者断开。
ODT的目的很简单,是为了让DQS、RDQS、DQ和DM信号在终结电阻处消耗完,防止这些信号在电路上形成反射,进而增强信号完整性。一个DDR通道,通常会挂接多个Rank,这些Rank的数据线、地址线等等都是共用;数据信号也就依次传递到每个Rank,到达线路末端的时候,波形会有反射,从而影响到原始信号;可以参看
高速电路信号完整性分析与设计四–反射分析 。
需要使用ODT的情况:
ODT操作模式简介
ODT同步模式
ODT同步操作模式是最常用的操作模式,只要DLL处于开启且是锁定状态,就处于同步ODT模式。当DLL处于关闭状态时,不可使用直接ODT(Direct ODT)功能。此时,必须通过持续置ODT引脚为低电平,并将RTT_Nom电阻值置为0(set MR1{A9,A6,A2} to {0,0,0} )。
在同步ODT模式下,RTT会在ODT被采样为高电平的那个时钟上升沿之后的ODTLon个时钟周期被打开,同时,RTT会在ODT被寄存为低电平(采样并被寄存)之后的ODTLoff个时钟周期被关闭。其中,ODT的潜伏期(Latency)取决于写潜伏期(WL):ODTLon=WL-2;ODTLoff=WL-2;
ODT动态模式
当向内存写入数据时,如果只有一条内存,那么这条内存就自己进行信号的终结,终结电阻等效为150Ω。如果为两条内存,那么他们会交错的进行信号的 终结。第一个模组工作时,第二个模组进行终结操作,等第二个模组工作时,第一个模组进行终结操作,但等效电阻为75Ω。当有三条内存的时候,三条会交替进 行信号终结,但等效电阻为50Ω。对于省略终端电阻的DIMM(因为支持ODT,所以可以省略),也是同样的道理。假设使用同步模式ODT,且终结电阻被设置为150Ω,当向内存写入数据时,如果只有一个内存颗粒,那么这条内存就自己进行信号的终结,终结电阻等效为150Ω。如果为两个内存颗粒,那么他们会交错的进行信号的 终结。第一个内存颗粒工作时,第二个内存颗粒进行终结操作,等第二个内存颗粒工作时,第一个内存颗粒进行终结操作,但等效电阻为75Ω。当有三个内存颗粒的时候,三个会交替进行信号终结,但等效电阻为50Ω。
这样一来,信号完整性就会受到不同程度的影响,为了能够保持等效电阻一致,我们希望ODT的RTT(终结电阻)是可以动态修改的,而不需要每次都要通过MRS Command进行修改。这就是接下来要介绍的动态ODT模式。
以上内容分别来自聊一聊DDR3中的ODT
DDR3中的ODT同步模式详解
DDR3中的ODT动态模式详解