参考文档:
TMS320DM36x Digital Media System-on-Chip (DMSoC) DDR2/Mobile DDR
(DDR2/mDDR) Memory Controller Users Guide
DDR工作是有一定的schedule的。
通过一定的时序完成某个命令,按照schedule完成各个命令。附命令
ACTV : Activates the selected bank and row (激活选择的bank与row)
DCAB : Precharge all commad .Deactivates all banks (对所有命令预充电,关闭所有bank)
DEAC : Precharge single command. Deactivates a single bank (对单独命令与充电,关闭正在预充电的bank)
DESEL :Device Deselect.
EMRS : Extended Mode Register set
MRS : Mode Register set
MOP : NO Operation.
Power Down : Power Down mode
READ : Input the starting column address and begins the read operation (输入起始列地址开始读操作)
REFR : Autoreflesh cycle
WRT : input the starting column address and begins the write operation (输入起始列地址开始写操作)
以READ命令为例:
首先说明在READ命令之前必须操作ACTV命令。根据文档,读命令需要从DDR中突发读取数据(a burst length of 8)为8,操作之前必须先发出激活BANK命令(也就是ACTV:该命令同时送行地址),接着发出read命令。
说明一下ACTV命令(文档上有介绍)中的tRCD:发送列读写命令时必须与前面的ACTV命令有一个时间间隔,这个间隔就定义为tRCD--RAS to CAS Delay(行选通到列选通间隔)。这是根据芯片存储阵列内部响应时间所需要的延时,由硬件决定。
说明一下READ与WRT命令中的Latency:发送列读写命令后需要经过一段时间才读取数据,即读取列地址到数据稳定的时间定义为Latency。
根绝该文档Read Latency=CAS Latency+ additive Latency 。而DDR2 内存控制器经常配置additive Latency为0,所以如下图Read Latency=CAS Latency=3 时钟周期
所以发送ACTV命令到读取到数据的时间间隔应为tRCD+Read Latency。
在bank的tRDC期间可以插入其他bank的激活命令,注意两个bank激活周期(两个BANK的ACTV间隔:RAS有效间隔)需要大于等于BL/2(改BL等于8)。否则会出现数据冲突。