主要写了SDRAM的初始化模块,注重文档信息的查找,时序图的设计,SDRAM仿真插件的使用。
? ? ? ? 根据文档说明,SDRAM在使用之前必须先进行初始化
? ? ? ? 初始化之前要进行100us的延迟,在100us内除了INHIBIT和NOP命令,其他命令都不可以执行,
时序图如下:
CLK为系统时钟,根据时序图,在100us的延迟后执行precharge命令,在经过trp时间后进行auto refresh命令 ,经过trc时间后再执行一次auto refresh,再经过trc时间后惊醒寄存器配置命令mode register,到此初始化完成。
阅读手册:
发现Nop模式下 cs_n.ras_n,cas_n.we_n的数据分别为0111/1xxx,同理precharge为0010,auto_ref为0001,
trc的最小时间间隔为63ns,4个周期(80ns——50hz/20ns),
trp的最小时间间隔为20ns,1个周期
配置模式寄存器:选择配置? A0-A11? 分别为0100_0110_0000
根据文档说明画出时序图:
为了稳定设置延迟时间为200us,200us后flag200us拉高,命令计数器cnt_cmd开始计数。