在 DDR 标准中有很多很多时序参数(timing parameter),但当你真的和 DDR4 打交道时,会发现经常访问或者读到的参数也就那么几个,它们相比剩下的参数要常用许多。所以,本文将基于具体的DDR命令,讨论那些经常用到的参数。
这些命令真的很容易忘记,一段时间不怎么用到后,记忆就会马上模糊。本系列的另一篇文章:Timing Parameter Cheat Sheet,可以用作具体时序参数的快速查找手册。
Note:本文所用到的图片都来自于 JEDEC DDR4 标准,或者美光的产品手册,在参考文献部分给出了相应的链接。
激活命令 ACTIVATE Timing
激活命令用于在访问之前打开某个 bank 中的某个 row。在 Understanding the Basics一文中我们了解到每个 bank 有仅有一组 sense amps,所以每个 bank 中可以保持一个 row 处于打开状态。与激活命令相关的常用时序参数共有 3 个,tRRD_S,tRRD_L 以及 tFAW。
1、tRRD_S
row-to-row delay--short
当向多个属于不同 bank group 的 bank 发送 ACT 命令时,ACT 命令之间需要满足 tRRD_S 长度的间隔
2、tRRD_L
row-to-row delay--long
与 tRRD_S 的不同点在于,当向多个属于同一个 bank group 的 bank 发送 ACT 命令时,ACT 命令之间需要满足 tRRD_L 长度的间隔
图-1 tRRD 时序图
3、tFAW
Four Activate Window
限制容纳至多四个 ACT 命令的窗口,在这段时间内最多只能发出四个 ACT 命令。
当连续发送 ACT 命令时,ACT 命令之间一方面需要满足 tRRD_S/L ,另一方面,在发送四个 ACT 命令后,需要等待 tFAW 窗口结束,才能发送第五个 ACT 命令。
图-2 tFAW 时序图
刷新命令 REFRESH Timing
为了确保存储在 SDRAM 中的数据不会丢失,存储控制器需要平均间隔 tREFI ,发送一次 REFRESH 命令。但是在进行刷新之前,SDRAM 所有的 bank 需要进行 PRECHARGE 预充电,并空闲一段时间,这个时长称为 tRP(min) 。在发出 REFRESH 命令后,必须经过 tRFC(min) 的延迟,才能发出下一个命令( DES 命令除外)。
值得注意的是,这里的 tREFI 是刷新命令之间的“平均”间隔,这是因为你可以在周期性发出的刷新命令中,减少一部分,但在后续补上(译注:只需要平均间隔满足 tREFI 即可)。延后刷新功能是 DDR4 标准新增的,用于解决高密度刷新带来的较长命令锁定期影响性能的问题。可延后发出的刷新命令数量取决于当前的刷新模式(1x,2x 和 4x),在模式寄存器 MR2 中设置。
1、tREFI
DRAM 所需的刷新命令的平均间隔
2、tRFC
刷新命令与其他命令(除 DES 命令)之间的延迟
3、tRP
Precharge time
所有 bank 需要在刷新命令前预充电,并保持 tRP 的空闲时间
图-3 刷新时序图
图-4 延后刷新命令
读命令 READ Timing
读命令相关的时序参数可以分为三类
总体读时序 Read Timing
时钟-数据有效信号(Strobe)间的时序关系 Clock to Data Strobe relationship
数据-数据有效信号间的时序关系 Data Strobe to Data relationship
1、Read Timing
CL (CAS latency)
Column-Address-Strobe
当列地址在地址信号上就绪时,CL 是内部读命令与读数据第一个比特之间的延迟时钟周期。
CL 大小定义在模式寄存器 MR0 中。SDRAM 标准定义了不同频率下需要设定的 CL 值大小。
AL (Additive Latency)
AL 延迟允许紧跟激活命令后发出读命令,器件内部将读命令延迟 AL 个时钟周期后执行。
该项特性用于保持器件内部的高带宽与高速率
RL (Read Latency)
总的读延迟,RL = AL + CL
tCCD_S/L
读取不同 bank 之间的延迟,和 tRRD_S/L 类似,访问不同 bank group 的bank相比属于同一bank group 的延迟要小一点,为 tRRD_S (short)
图-5 不同 bank group 间的连续读命令。上图中 AL=0,CL=11,所以 RL=11。值得注意的是两次读数据之间没有间隔,后一次的数据紧接着前一次数据。由于两次读命令的 bank group 不同,所以读命令间的延迟是 tCCD_S
图-6 不同 bank group 间的非连续读命令。
图-7 tCCD_S/L 的不同
2、Clock to Data Strobe relationship (CK & DQS)
tDQSCK(MIN/MAX)
数据有效信号 strobe 上升沿相对于时钟信号 CK_t(上升沿)、CK_c(下降沿) 所允许的延迟范围
tDQSCK
数据有效信号 strobe 上升沿相对于时钟信号 CK_t(上升沿)、CK_c(下降沿) 的实际延迟
tQSH
数据有效信号高电平脉冲脉宽
tQSL
数据有效信号低电平脉冲脉宽
图-8 CK-DQS 间相位关系
3、Data Strobe to Data relationship (DQS & DQ)
tDQSQ
描述 DQ 上升沿相对于 DQS 边沿的最晚时间,(译注,晚于该时刻将影响本次数据采样),在下方的图中可以看到, tDQSQ 指的是 DQS 上升沿至有效 DQ 信号左边沿的时间
tQH
描述 DQ 上升沿相对于 DQS 边沿的最早时间,(译注,早于该时刻将影响前次数据采样),在下方的图中可以看到,tQH 指的是 DQS 上升沿至有效 DQ 信号的右边沿的时间
图-8 续 DQS-DQ 间相位关系
写命令 Write Timing
写命令时序大致上与读命令相同...
1、总体写时序 Write timing
CWL (CAS Write latency)
Column-Address-Strobe Write
写命令与第一个送出第一个写数据之间的延迟
CWL 大小在模式寄存器 MR2 中定义
AL (Additive Latency)
AL 延迟允许紧跟激活命令后发出写命令,器件内部将写命令延迟 AL 个时钟周期后执行。
该项特性用于保持器件内部的高带宽与高速率
WL (Read Latency)
总的写延迟,WL = AL + CWL
tCCD_S/L
写入不同 bank 之间的延迟,和 tRRD_S/L 类似,访问不同 bank group 的 bank 相比属于同一 bank group 的延迟要小一点,为 tRRD_S (short)
2、时钟-数据有效信号(Strobe)间的时序关系 Clock to Data Strobe relationship
tDQSS(MIN/MAX)
数据有效信号 strobe 上升沿相对于时钟信号 CK_t(上升沿)、CK_c(下降沿) 所允许的延迟范围
tDQSS
数据有效信号 strobe 上升沿相对于时钟信号 CK_t(上升沿)、CK_c(下降沿) 的实际延迟
tDQSH
数据有效信号高电平脉冲脉宽
tDQSL
数据有效信号低电平脉冲脉宽
tWPST
Post-write 最后一个数据与有效信号重新置高之间的周期,此时总线并不驱动数据
tWPRE
Pre-write 数据有效信号(strobe)从无效(non-valid)到有效(valid)之间的周期数
图-9 写时序图
模式寄存器时序 Mode Register Timing
通过 SDRAM 的 7 个模式寄存器,可以对 SDRAM 的特性,功能以及设置进行编程。这些寄存器本身通过 MRS 命令编辑。模式寄存器一般在初始化期间进行设定,但也可以在后续正常工作期间进行修改。模式寄存器设置有下列两个时序参数:
1、tMRD
Mode Register Set command cycle time
MRS 命令周期数,指完成寄存器写操作所需要的的周期数,也是两个 MRS 命令之间最小的间隔
图-10 tMRD timing
2、tMOD
Mode Register Set command update time
MRS 命令与其他命令(除 DES)之间的最小间隔
图-10 tMOD timing
审核编辑:黄飞
评论
查看更多