1.仿真出的波形没有SDRAM初始化阶段的command。如下图,直接在202270ns处初始化完成。
首先初始化完成时间: INIT_END_TIME = T_IPT + T_RP + T_RFC * 2 + T_MRD =(20000+26=时钟数)*10ns=2002260ns,再加上等待时间20000ns,与仿真出来的时间基本吻合。没有问题。
在放大init_done附近的波形后找到初始化的命令部分,由于初始化过程中命令开始变化是在仿真过程等待期加上上电后初始化的稳定期,时间比较长,在靠近init_done附近才有。
放大后的波形如下图:
2. 观察仿真波形发行rd_opt_done与wr_opt_done一致,同时rd_opt信号出错。重新检查代码,发现,rd_opt_done是复制的写部分的代码,部分判断信号没有修改过了,导致最后输出错误。写代码时还是应该仔细一点的。
3.写代码过程中还是应该一个小模块完成后仿真一个,这样每次仿真工程量较小,全部检查信号,容易发现问题。