|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
最近在ML605的开发板上使用MIG时遇到一些问题:生成MIG:
1、前期根据UG生成MIG,突发模式为BL=8,长度为64,DDR3 SDRAM,时钟为差分,使用掩码,存储器频率为400M,读顺序为strict
2、根据开发板案例设计中提供的UCF对生成的MIG进行验证,更改过了。
3、根据开发板提供的参考设计将MIG下的2个.v文件进行更改,主要是由于板上没有400M差分时钟,为使用200M差分时钟进行的改动。
!!想法是学习实验通过MIG对板上的DDR3进行读写。
写操作:(先给命令,再给数据,命令数据间隔不超过2个时钟)
1、BL=8,通过计数器产生两个256bit的数据作为写入数据,起始地址为0,相邻的写入地址间隔为8;
2、在init_done高有效时,发起写操作,通过状态机产生app_cmd,app_en,app_addr,然后进入下个状态判断app_rdy是否为高,为高则输出app_wen和第一个写数据(256bit),然后进入下个状态判断app_wrdy是否为高,是则给剩余的256bit数以及wr_end、wr_en,并继续对app_wrdy进行检测。若rdy信号不为高,则把相应的命令或数据保持。
3、通过以上方式想写入20个512bit的数据到DDR。
读操作:
1、发起读操作命令
2、产生app-en,app_addr,app-cmd,然后进入下个状态判断app_rdy是否为高,(地址从0,8,16...)
3、以此类推想把写入的数据从DDR中读取出来。
问题:
读出的结果不对,试着将读命令的时间间隔调整也不对(间隔2,4,8,10个时钟都试过),有的时候前面几个读出的顺序对,后面的都不对,有的时候只有512bit数据中的前256bit,总之结果就是不对。感觉读写时序都是照着UG弄的,实在想不明白为啥,希望用过的高手们能给点建议,谢谢了!! |
|