作者: 硬码农二毛哥
DDR读写流程
DDR完成上电初始化后,将数据写入DDR要经过如下过程:ACT->WR->PRE
1、运行ACTIVATE命令 打开DDR指定bank和group中的一行(row)
2、运行WRITE 命令,将数据写入DDR
3、PRECHARGE 命令关闭打开的row
将数据从DDR读出要经过如下过程:ACT->RD->PRE
1、运行ACTIVATE命令 打开DDR指定bank和group中的一行(row)
2、运行READ命令,从DDR中读取数据
3、PRECHARGE 命令关闭打开的row
在运行读写指令过程中要定时对DDR进行刷新REFRESH。
DDR中指令与参数
ACT
ACTIVATE命令用来激活DDR特定bank中的行,为后续读写操作做好准备。ACT命令中BG和BA可以设置,通过地址A[17:0]选择特定bank中的行。在未发送PRE命令前激活的行一直保持激活状态。
tRRD
连续发送两个ACT命令之间要有一定时间间隔。不同的bank group间隔为tRRD_S,相同的bank group间隔为tRRD_L。
tFAW
连续发送五个ACT命令,第五个命令厚道tFAW间隔限制。
WR
tCCD_S与tCCD_L
突发写之间间隔,不同bank group是tCCD_S,相同bank和group间隔是tCCD_L。
tRCD
ACT与WR或RD之间间隔,运行ACT命令后,要经过tRCD时间后才能尽心给写或读操作。
RD
tCCD_S与tCCD_L
突发读之间间隔,不同bank group是tCCD_S,相同bank和group间隔是tCCD_L。
PRE
PRECHARGE命令用来关闭在特定bank中打开的行,或者关闭所有bank中打开的行。发送PRE命令后,经过tRP时间后,才能再进行激活操作。读写命令中使用自动预充电命令属于例外情况。
REF
DDR要求按照特定的周期运行REFRESH命令。再运行REFRESH命令前,要保证DDR中所有bank都完成预充电,并且经过tRP时间后才能进行刷新。
完成REFRESH命令后,DDR所有bank处于空闲状态,要间隔tRFC时间后,才能运行其他命令(除DES)。
DDR需要每隔tREFI时间间隔,就要发出一次REFRESH命令。
当DDR运行再x1模式是,可以最大发出8个REFRESH命令,DDR发送REFRESH命令间隔为9xtREFI。
tREFI与tRFC