最近在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命令)来将其内容驱动到DQ上。

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

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是何含义。

DDR4 Spec第四章 4.10 MPR(Multi Purpose Register)相关推荐

  1. DDR4 Spec 第四章 4.19-4.23

    文章目录 4.19 DDR4关键时序 4.20可编程的前导时钟 4.20.1 写前导 4.20.2 读前导 4.20.3 读前导的训练 4.21 后导 4.21.1 读后导 4.21.2 写后导 4. ...

  2. DDR4 Spec第四章 4.7-4.9

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

  3. DDR4 Spec 第四章 4.14-4.15

    4.14 Per DRAM Addressability 假设4个DRAM颗粒组成一个rank,那么PDA指的就是在一个rank中对每个颗粒进行控制.调节.设定等.例如对rank中的每个颗粒进行Vre ...

  4. DDR4 Spec 第四章 4.1-4.3

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

  5. DDR4 Spec 第四章 4.17-4.18

    文章目录 4.17 CA校验(Command Address Parity) 4.17.1 CA Parity的错误log的读出 4.18 Gear down模式(其意义何在?) 4.17 CA校验( ...

  6. DDR4 Spec 第四章 4.26-4.27

    4.26 刷新命令 刷新命令用于DDR4 SDRAM正常操作时发送,这命令发送过后,并不是持续地刷新,而是刷新一段时间后停止刷新,所以需要在每次需要刷新的时候发送该命令.DDR4中,两个刷新命令的平均 ...

  7. 内温的整体优先效应实验_第四章 知觉10.ppt

    第四章 知觉10 知觉信息加工过程 觉察(detection): 发现事物的存在,而不知道它是什么. 分辨(discrimination): 把一个事物或其属性与另一个事物或其属性区别开来. 确认(i ...

  8. DDR SDRAM 学习笔记 —— DDR4 内存初始化过程 之 Multi Purpose Register (MPR Read)

    DDR4 Multi Purpose Register (MPR) 我是谁?-- MPR 简介 MRP 其实是物理上真是存在的寄存器,简单理解就是存储 0/1 的器件.所以啊,它设计时,是独立于 ce ...

  9. DDR4 Spec 第五章 终端电阻

    ODT(On-Die Termination,终端电阻)是DDR4的一个特点,对于x4和x8器件,其允许DRAM改变每个DQ,DQS_t,DQS_c和DM_n的终端电阻阻值,对于x8器件,当MR1的A ...

最新文章

  1. 【微信小程序之画布】终:手指触摸画板实现
  2. linux中ftp的用法,linux中的ftp命令用法(7页)-原创力文档
  3. REGULAR NOMINATION AGGRESSIVE NOMINATION
  4. 关于印发《会计电算化管理办法》等规章的通知
  5. 数学建模清风第三次直播:excel在数学建模中的应用
  6. PHP日期、时间戳相关的小程序
  7. Python_模拟登录(爬取教务系统信息并制作查询界面)
  8. Python3多进程与多线程区别及使用(1.进程)
  9. docker专题(2):docker常用管理命令(下)
  10. Qt控件背景图片自适应
  11. 【图像识别】基于ORL数据库的PCA人脸识别系统matlab源码
  12. Java语言的发展简史
  13. 首都师范 博弈论 5 4 2 Shapley值应用案例
  14. windows服务器设置开机启动的几种方式
  15. MLP,GCN,GAT,GraphSAGE, GAE, Pooling,DiffPool
  16. 名片管理系统python详解_取名字大全_免费男孩女孩起名字
  17. 论文解读|2020TPAMI|Deep High-Resolution Representation Learning for Visual Recognition
  18. 深度清理C盘空间,让你的C盘多出20G
  19. 一篇文章说完Flutter页面路由导航及传参
  20. java虚拟机最新安卓版apk

热门文章

  1. JavaWeb html+js创建购物车表单以及连接数据库部分代码提示
  2. CocosCreator物理小游戏实战-别离开碗(二)
  3. OpenJudge 1.13-51:古代密码 题解
  4. 2022年危险化学品生产单位安全生产管理人员考题模拟考试平台操作
  5. java hive和hbase整合,Hive入门3–Hive与HBase的整合
  6. Python:如何绘制带有色块的折线图
  7. Django实例 信息反馈平台(一)
  8. 每日培训——华微软件的培训制度
  9. 农业度“伏”黑科技——农业气象站
  10. Mac电脑误删谷歌Chrome书签该如何恢复?