DDR2 SDRAM指令
(1)所有DDR2 SDRAM指令均是在CKE为上升沿的时候,由CS#,RAS#,CAS#,WE#的状态定义的。DDR2 SDRAM指令的真值表如下:
(2)在同一块bank中的状态转换如下表:(此时CKE一直保持高电平)
a,现在状态的定义:Ilde:bank完成了precharge且tRP被满足。
Row Active:在该bank里面的这一行已经被激活,且tRCD被满足。在进程中没有数据或寄存器存取。
Read:READ的触发已经完成初始化,且auto precharge无效。
Write:WRITE的触发已经完成初始化,且auto precharge无效。
b,状态转换:
Precharge:开始于执行PRECHARGE指令,结束于tRP被满足。一旦tRP被满足了,该bank跳转到 idle 状态。
Row Activating:开始于执行ACTIVE指令,结束于tRCD被满足。一旦tRCD被满足了,该bank跳转到row active状态。
Read with Auto Precharge Enabled:开始于执行READ指令且auto precharge有效,结束于tRP被满足。一旦tRP被满足了,该bank跳转到 idle 状态。
Write with Auto Precharge Enabled:开始于执行WRITE指令且auto precharge有效,结束于tRP被满足。一旦tRP被满足了,该bank跳转到 idle 状态。
Refreshing:开始于执行LOAD MODE指令,结束于tRFC被满足,一旦tRFC被满足,DDR2 SDRAM的所有bank均跳转到idle 状态。
Accessing Mode Register:开始于执行LOAD MODE指令,结束于tMRD被满足,一旦tMRD被满足,DDR2 SDRAM的所有bank均跳转到idle 状态。
Precharging All:开始于执行PRECHARGE ALL指令,结束于tRP被满足。一旦tRP被满足了,所有bank跳转到 idle 状态。
c,WRITE命令在完成READ触发之后执行。
(3)在不同bank之间的状态转换如下表:(此时CKE一直保持高电平)
3a:在read with auto precharge 有效或 write with auto precharge 有效的状态下,在两个时期可能被中断:一是存取期间,一是预存取期间。对于read with auto precharge,预存取期间定义为如果在auto precharge失效的情况下相同的触发被执行,此后最早的可执行的PRECHARGE指令到所有数据存取的期间。对于write with auto precharge,预存取期间定义为开始于tWR结束,且tWR检测到auto precharge失效。存取期间开始于寄存器的指令,结束于tRP开始。
芯片支持同时发生的auto precharge,例如当read with auto precharge有效或者write with auto precharge 有效的时候,对于别的bank的其他命令是允许的,只要该命令不会中断当前进程里面已经被传送的read或write的数据。
在当read with auto precharge有效或者write with auto precharge 有效的时候,对于别的bank的其他命令的最小延时时间的算法如下表(其中CL=CAS Latency;BL=burst length;WL=WRITE Latnecy):
AVTIVE 指令用来激活在特定bank里面的一行,为了接下来的存取。变量BA1,BA0用来选择bank,A0-A12用来选择在bank里面的行。这一行一直保持激活的状态一直到PRECHARGE指令在该bank被执行。PRECHARGE指令必须在相同的bank里面激活一个不同的行之后执行。开启AVTIVE 指令的时钟和使能信号如下图所示:
在这一行被AVTIVE 指令激活之后,该行才能进行READ和WRITE指令操作,在AVTIVE 指令和READ和WRITE指令之间必须满足tRCD。之后再对该bank的另外一行执行AVTIVE 指令,必须先关闭先前被激活的行。对相同的bank执行连续AVTIVE 指令之间的最小时间间隔由tRC决定。当上一个AVTIVE 指令的数据正在被存取的时候对不同的bank执行随后的AVTIVE 指令会导致一部分数据减少。对不同的bank执行连续AVTIVE 指令之间的最小时间间隔由tRRD决定。
下图所示的是满足了tRRD(min)和tRCD(min)下的指令执行情况: