最近在DDR4方面做了一些工作,但依然对整个流程理解得不够透彻,遂在去年4月阅读DDR4标准的基础上再次阅读该手册,理清了不少含糊的脉络。由于阅读的英文很快便会忘记,加之阅读英文时脑海中不自觉地翻译,于是大脑不堪重负,忘记速率更快了,遂萌生将其直接翻译的想法。
前两章和第六章之后不翻译,只翻译设计和验证时所需的基本概念,此包括3、4、5章节。翻译过程中结合了不少资料,其中包括CSDN上前辈的翻译:hierro_sic的博客_CSDN博客-DDR4标准,DDR3,SNPS-PHY领域博主
还有些其它的参考博客,分布在各个章节内。
所有的翻译均存于印象笔记与有道云笔记中,今上传互联网。
4.1 命令真值表
a) Note1,2,3,4应用于整个真值表。
b) Note5应用于所有的读写命令。
BG = Bank Group,
BA = Bank Address,
RA = Row Address,
CA = Column Address,
BC_n = Burst Chop,
X = Don't Care,
V = Valid
此表有12个注释,分别如下:
NOTE1:所有的DDR4 SDRAM命令在时钟的上升沿锁存CS_n,ACT_n,RAS_n/A16,CAS_n/A15, WE_n/A14和CKE,并以此确定DDR4的命令。BG, BA, RA, CA的最高位取决于用户使用的哪个器件(x4、x8、x16)。当ACT_n = 1,RAS_n/A16, CAS_n/A15, and WE_n/A14被用于RAS_n, CAS_n, and WE_n,当ACT_n = 0,RAS_n/A16, CAS_n/A15, and WE_n/A14被用于A16, A15, A14。
NOTE2:RESET_n拉低,一般用于异步复位,所以该信号必须在任何除复位功能外的其它功能中保持为高。
NOTE3:一般而言,BG和BA决定选择具体哪个bank,对于MRS命令来说,BG和BA用于选择具体的MR寄存器。
NOTE4:'V'意味着H/L,"X"意味着定义态或非定义态(例如floating态)。
NOTE5:突发读/写不能被打断,或者中断。突发长度或者on-the-fly模式取决于MRS命令。
NOTE6:Power Down模式,即关机后不进行任何刷新操作。
NOTE7:ODT pin的状态并不影响命令,在自刷新期间,ODT功能无用。
NOTE8:内存控制器需保证自刷新同步退出。
NOTE9:VPP and VREF(VrefCA)信号在自刷新期间必须保证有效。
NOTE10:No Operation命令(NOP)必须在Gear Down模式下和Max Power Saving模式退出的情况下发送。
NOTE11:结合表18的CKE真值表一起看。
NOTE12:A17取决于用户用的哪个器件,且在MRS命令中,A17无意义。
4.2 CKE真值表
表18如下所示。
表18后续有18个注释,分别如下:
NOTE1: CKE(N)表示某个时钟沿N的情况下CKE的状态,CKE(N-1)表示在之前一个时钟沿下的CKE的状态。
NOTE2: 表中左上角为Current state,意为紧挨着时钟边沿N之前的DDR4 SDRAM的状态。
NOTE3: COMMAND(N)表示在时钟边沿N处的命令,ACTION(N)为COMMAND(N)的结果,当然,ODT在此表中未包含。
NOTE4: 所有未显示的状态和序列都是非法的或保留的,除非在本文档的其他地方有明确的描述。
NOTE5: ODT的状态并不影响表18的状态。在自刷新时,ODT功能无用。
NOTE6: 在任何CKE的变换中(无论CKE从高到低,还是从低到高),在时序tCKEmin满足之前,CKE的电平持续时间必须为1个CK周期(虽然在此期间,CKE可能会再次变化)。此处原文为:During any CKE transition (registration of CKE H->L or CKE L->H), the CKE level must be maintained until 1nCK prior to tCKEmin being satisfied (at which time CKE may transition again).
NOTE7: DESELECT和NOP操作的定义详见表17。
NOTE8: 在SRE时,必须在tXS期间的每个时钟沿发送DESELECT命令。读命令或ODT命令在tXSDLL满足后才能发出。
NOTE9: 必须在所有bank为idle态的情况下才能进行自刷新。
NOTE10: 必须是一个有效的命令。
NOTE11: 对于Power Down的进入和退出,其有效命令仅为DES。
NOTE12: SRE命令之后的命令只能为DES。对于Gear Down和Max Power Saving exit,NOP命令也可以使用。
NOTE13: 在读写操作过程中,不能进入自刷新状态。详情见4.27和4.28章节。
NOTE14: Power-Down并不会启用任何刷新操作。
NOTE15: "X"意味don't care。
NOTE16: VPP and VREF(VrefCA)信号在自刷新期间必须保证有效。
NOTE17: 在读/写/Precharge命令完成后,如果所有bank都关闭了,那么会进入Precharge Power-Down,否则会进入Active Power-Down。
NOTE18: "Idle state"的定义为所有bank关闭(当然需要满足tRP, tDAL等时序),并且无数据传输,CKE为高,且所有的时序都要被满足,例如tMRD, tMOD,tRFC, tZQinit,tZQoper,tZQCS等等,当然也包括自刷新退出时序和Power-Down退出时序(tXS,tXP等)。
4.3 突发长度,类型以及顺序
在一个给定的突发传输内,对应数据的访问可以被编程为顺序或非顺序(交错的顺序)来访问数据。当对MR0的A3进行配置时,顺序可以被改变。突发传输内的数据顺序的访问由突发长度、突发类型以及起始的列地址决定,如表19所示。突发长度由MR0的A1-A0决定,突发长度包括BC4和BL8,且在读写命令发送期间,可以通过A12/BC_n的值来发送on the fly的BC4和BL8(这个意思是说,假设目前发送的长度为BL8,等下一个读命令或写命令发送时,可以更改读写长度为BC4,或者继续为BL8)。
NOTE1: 在BC4的情况下,相较于BL8,内部的写操作会提前两个时钟周期,这意味着tWR和tWTR的起点将会pulled up两个时钟(pull up具体何意还需参见后文,稍后补上)。在on the fly情况下,tWR和tWTR的起点并不会被pull up两个时钟周期。
NOTE2: CA[2:0]代表第一个读出数据的位置。
NOTE3: 数据的输出驱动和strobes处于高阻态。
NOTE4: V代表0/1,但是各自的输入缓冲会忽略输入pin脚上的电平。(这句话何意?)
NOTE5: X代表don't care
4.3.1 当CRC开启后的BL8突发顺序
当突发长度为BL8(fixed)且CRC开启时,DDR4支持的写突发顺序为A2, A1, A0 = 000。