DDR4 Spec第四章 4.10 MPR(Multi Purpose Register)

最近在DDR4方面做了一些工作,但依然对整个流程理解得不够透彻,遂在去年4月阅读DDR4标准的基础上再次阅读该手册,理清了不少含糊的脉络。由于阅读的英文很快便会忘记,加之阅读英文时脑海中不自觉地翻译,遂萌生将其直接翻译的想法。

前两章和第六章之后不翻译,只翻译设计和验证时所需的基本概念,此包括3、4、5章节。翻译过程中结合了不少资料,其中包括CSDN上前辈的翻译:hierro_sic的博客_CSDN博客-DDR4标准,DDR3,SNPS-PHY领域博主

还有些其它的参考博客,分布在各个章节内。

每张时序图和表格都写下了自己的分析。

4.10.1 利用MPR进行DQ训练

DDR4 SDRAM包含四个8bit可编程的MPR寄存器,用于DQ pattern的存储(例如在训练时,可以利用MPR里的数据在DQ上进行发送,存储的数据便为DQ pattern)。一旦这些寄存器被写入,之后在进行link training(连接性训练,这个连接性测试不知是否与4.30章节的Connectivity一致)时可通过MRS读命令(注意是MRS读命令,不是MRS命令,其实就是普通的读命令,只不过指向了MPR中)来将其内容驱动到DQ上。

当MPR模式使能时,即MR3的A2=1,发送MRS命令,通过BA1/BA0选择MR3寄存器,A1/A0选择MPR的某个Page发送普通的读/写命令,此时通过BA1和BA0选择哪里的MPR,例如BA1-0 = 00时选择MPR0。此时DDR4仅允许如下命令发送:MRS, RD, RDA, WR, WRA, DES, REF以及Reset命令。一共有4个MPR,每个MPR有4个Page。

RDA/WRA之后本应该跟随一个auto precharge,但是在MPR模式中,RDA/WRA的功能与READ/WRITE功能一样,最后的auto precharge被忽略。在MPR模式中不允许Power-Down模式和发送自刷新命令。在REF命令后,tRFC内不能发出其他命令,只有当MPR模式启用时才允许1x刷新,且只允许REF1x命令。在进行MPR读或写操作, 其读写操作必须全部完成后才能发送刷新命令(注意不是自刷新命令)。

4.10.2 MR3的定义

通过MR3控制MPR寄存器,用于training。通过CS_n, RAS_n/A16, CAS_n/A15和WE_n/A14为0,ACT_n, BA0和BA1为1,BG1和BG0为0来控制MR3的MPR。下图可以看出,当BG0为0时,通过BA1和BA0选择MRx;通过A12和A11选的读出MPR时的数据格式,有串行、并行、staggered格式;通过MR3的A2选择是否开启MPR模式;通过A1/A0选择四个MPR中的一个。当然注意左下角的脚注:仅仅对x4/x8的器件适用

4.10.3 MPR的读取

可以使用BL8(突发长度为8)或BC4(突发长度为4,且必须为BC4(Fixed)),MPR read不支持BC4 on the fly。

在背靠背的读取每个MPR的Page0的操作中,两个读操作间的时序为tCCD_S或tCCD_L,在背靠背地读取每个MPR的Page1/2/3操作中,不使用tCCD_S时序;在MPR的突发长度为BC4的读操作中,两个读操作之间时序为tCCD_L。

在MPR操作时无需关心A10(因为A10为Auto-Precharge)以及其他的地址pin,BG1和BG0也无需关心。

突发长度为BC4的MPR读操作,其起始列地址只能允许为3'b000和3'b100(A2:A0)。

在MPR读操作期间,DBI不被允许,即在此期间,DRAM忽略Read DBI Enable。

在发送读命令时,通过bank地址BA1-0来指定MPR的位置,也就是说指定读取哪个MPR。每个MPR位宽为8。

具体流程为:

  1. 在发起读MPR操作之前,假如DLL被使能(MR1的A0 = 1),DLL必须lock。
  2. Precharge all。
  3. 等待tRP时序满足。
  4. 发送MRS命令,并将其指向为MR3(通过BA1和BA0为11时选择MR3),其中A2设置为1'b1。指向MR3的MRS命令中的A1-0用于选择具体的某个Page。将后续的所有读写操作定向到MPR的位置。其实英文的动词为Redirect,意为重新指向,因为其A2=0时不是指向MPR,故在此处用了“重新指向”的动词。
  5. 等待tMRD以及tMOD时序满足。
  6. 发送读命令。
  7. 等待read latency之后(RL = AL + CL),DRAM将MPR对应位置的数据传送出来。数据的格式取决于MR3的A0, A1, A11, A12,详见4.10.5。内存控制器重复这个校准性的读取(calibration reads),直到读取的数据能够以最优的方式被内存控制器捕捉到。在发送读命令时,可以发送到不同的MPR位置。

  8. 在最后一个MPR读操作后,等待tMPRR时序后,发送MRS命令,指向MR3,其A2设置为0。

  9. 等待tMRD和tMOD时序满足,继续正常的DRAM操作。

其中,第六步的读操作需要注意:

在发送RD命令时:(MPR的读不支持交错读,只支持顺序读

一、A[1:0] = 2'b00;(data burst order is fixed starting at nibble, always 00b here,此处并不是选择Page);

二、A[2] = 1'b0;对于BL8来说,burst order为固定的0,1,2,3,4,5,6,7顺序;对于BC4来说,burst order为固定的0,1,2,3,T,T,T,T顺序。或者,如果A[2] = 1'b1,此时不支持BL8,对于BC4来说,其burst order为固定的4,5,6,7,T,T,T,T顺序。

三、A12/BC_n = 0或1,MPR操作时,突发长度仅支持BL8(Fixed/OTF)和BC4(Fixed),不支持BC4(OTF)。当MR0中A[1:0]为2'b01时(BC4(OTF) or BL8(OTF)),A12/BC_n必须为1'b1,即只支持BL8。

四、发送RD命令时,其BA1-0选择具体的MPR,例如00选择MPR0,01选择MPR1,10选择MPR2,11选择MPR3。在RD命令发送时,不关心BG1-0,A10以及其它地址位。

下图,即图18为发送MRS命令后,仅发送一个RD命令的时序图,其中PL=0。

下图为发送MRS命令后,发送不止一个RD命令的时序图,即背靠背的RD,其中PL=0。可以认为下图的T1时刻是从图18的Tb0时刻算起。

上图,即图19,有如下说明的几点:

  1. 读前导为1个tCK周期,当然图18中也有一个读前导周期;tCCD_S = 4,即两个RD命令间的间隔为4个CK周期。
  2. 在BL8时,读数据是连着出来的,对应的DQS_t/c也是连续变化的;在BC4时,由于数据量少了一半,故数据在波形上是不连续的,且对应的DQS_t/c在两个BC4数据回传的期间有一定的稳定时期,同时需要注意,在第二个BC4数据回传前,也有一个周期的前导

下图,图20,为发送RD命令后,又对MPR进行WR操作。其中图20的T0时刻可以当成图18的Tb0时刻。当然,读数据回传时也有一个前导时钟,且此图是基于突发长度为BL8而言的。

4.10.4 MPR写操作

DDR4通过A7:A0来写入MPR0/1/2/3寄存器,如表25所示。

具体流程为:

  1. 在发起写MPR操作之前,假如DLL被使能(MR1的A0 = 1),DLL必须lock。
  2. Precharge all。
  3. 等待tRP时序满足。
  4. 发送MRS命令,并将其指向为MR3(通过BA1和BA0为11时选择MR3),其中A2设置为1'b1。指向MR3的MRS命令中的A1-0用于选择具体的某个Page。
  5. 等待tMRD以及tMOD时序满足。
  6. 发送写命令,其中BA1和BA0指定哪个MPR,例如00选择MPR0,01选择MPR1,10选择MPR2,11选择MPR3。A[7:0]指定某个MPR写入的数据。
  7. 等待tWR_MPR时序满足,让DRAM能够完全将数据写入MPR中。
  8. 在最后一个MPR RD操作后(如果有RD命令的话),等待直到tMPRR时序满足。
  9. 发送MRS命令,指向MR3,A2设置为0。
  10. 等待tMRD和tMOD时序满足。

上述操作时序图如图21到图24所示。

下图,图23是为了说明在MPR模式下仅允许1x速率的刷新,图中tRFC对应的时间参数为tRFC(Base)。

4.10.5 MPR读数据的格式

MR3中的A12和A11用于选择MPR读数据的格式的选择。DRAM返回MPR的数据时,会驱动相应的strobe信号(即DQS信号),用于指示数据的有效性。

串行数据格式:
例如8'b0111_1111数据,对于x4器件,从DQ0返回,按时间顺序分别为0,1,1,1,1,1,1,1;从DQ1返回的数据也为0,1,1,1,1,1,1,1;以此类推,对于x8和x16的器件也是如此。下图为x4器件的返回串行数据的格式。

并行数据格式:
只有MPR的Page0能够用并行的数据格式,其它Page不能用并行的数据格式。这里仍须强调,一共有4个MPR,每个MPR有4个Page。假设MPR Page0的数据为8'b0111_1111,对于x4器件,则只有高4bit被用到了,即4'b0111,对于x16器件,复制这一个字节进行传输。当然,x8器件正好是满足8bit,无需截取数据,也无需复制数据。具体如下表所示(x8器件的没有贴图,可以直接对应x16器件的DQ0到DQ7即可)。

交替数据格式:
只有MPR的Page0才能使用交替的数据格式,MPR的Page1/2/3都不能使用交替数据格式。

对于x4器件,当以交替格式读取MPR0时,DQ0上回传的数据为MPR0 Page0的数据,DQ1上回传的为MPR1的数据,DQ2回传MPR2,DQ3回传MPR4。当以交替格式读取MPR1时,DQ0回传MPR1,DQ1回传MPR2,DQ2回传MPR3,DQ3回传MPR0。以此类推。

当然,对于x4的DDR4,很有可能出现背靠背的读操作,例如发送读序列为读MPR0, MPR1, MPR2, MPR3, MPR0, MPR1, MPR2, MPR3,其回传数据的如下表所示。

对于x8和x16器件,其交替顺序如x4一样,但是多余的DQ会重复之前的顺序,如下表所示。

表26之前的一段话说得很清楚,在发送指向MR3的MRS命令中,通过A2打开/关闭MPR操作,通过A1:A0选择Page,通过A12:A11选择读数据的格式。也就是说,先选择Page(通过MRS命令),再选择具体是哪个MPR(通过MRS之后的RD/WR命令)。

四个Page中,只有Page0可以读写,Page1/2/3只能用于读操作。所有的Page0支持三种读出的数据格式,但是Page1/2/3只支持串行读出的数据格式。

上电后,Page0中有其默认值(详见表27,这里不贴图),如果不发送MPR的写命令的话,DRAM将会一直保持这个默认值。对于其它Page,DRAM将会忽略这些Page的写操作。

Page3中有个MAC缩写,在表28和表29有延伸说明,但未说明MAC是何含义。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值