DDR3 memory支持六种写命令:
WR : BL8或BC4固定burst长度写;
Mode register0 的A1,A0: 00, fixed BL8;10, fixed BC4
WRS4/WRS8: BC4 or BL8 on the fly, 通过A12来区分:0, BC4; 1, BL8
Mode register0 的A1,A0: 01
WRA : BL8或BC4固定burst长度写, 支持auto precharge
WRAS4/WRAS8: BC4 or BL8 on the fly, 通过A12来区分:0, BC4; 1, BL8。支持auto precharge
Mode register0 的A1,A0: 01
Lattice DDR SDRAM controller写操作相关的两组信号:
1)写命令信号,包括:
cmd[3:0] 写命令,支持WRITE,WRITEA,LOAD_MR等命令,详细参见Lattice DDR SDRAM controller手册。参见:https://download.csdn.net/download/tbzj_2000/11007077
cmd_valid: 该信号有效时,表示cmd,addr都有效。逻辑设计上可以用cmd_rdy=1来拉低cmd_valid, 表示DDR controller已
接收到命令,用户可以开始产生另一条命令。
addr: 写地址或读地址。
cmd_rdy: 该信号为单周期长度的脉冲信号。当DDR controller正在执行一个需要较长周期的命令或命令组合时(如周期性
的刷新命令组合:1个precharge all banks(PREA)+ 8个refresh命令),或两条或多条命令间隔太短时,cmd_rdy信号都会被拉
低一段时间。其他情况下cmd_rdy几乎是一个连续的周期性脉冲。
2)写数据信号,包括:
write_data:写数据
datain_rdy: ddr controller准备好接收数据。比如采用了x16 DDR3 1Gb memory, data bus为32 bits,即需要两片
memory,则:
DDR controller的写数据输入通道为128 bits,一次BL8 burst写为例,数据总量是256bits,则datain_rdy信号将维持两个
周期,完成128 * 2=256 bits数据的接收。
总结:一般一旦判断到如AXIbus发起一个burst写,就可通过DDR controller的写命令信号发起一次写;然后等待,写数据
信号的datain_rdy一旦有效,则开始向DDR controller写入写数据。