码迷,mamicode.com
首页 > 其他好文 > 详细

转-友晶Sdram_Control_4Port的全页操作Bug?

时间:2015-04-14 08:24:52      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:

http://www.cnblogs.com/edaplayer/p/3678897.html

 

以前在学校初学fpga的时候碰到sdram就搞不定了,现在突然发现网上有好多现成的代码,友晶的,altera有个Mobile_DRAM_Altera_MAX_II_CPLD_Design_Example版本的,呵呵,拿来主义确实不错,以后有机会再自己试着写写。

但是在用Sdram_Control_4Port的时候发现,全页写的时候图像数据出错,刷屏位置与预期有很大出入,而且只有vga横条显示是正常的,竖条和分形图都完全变形,看起来肯定不是同一个mom生的。问题到底出在哪里,我试着画半条单线看看,发现居然超出了屏幕一半的位置,这明显不科学。 抓波形看了,发送数据进fifo是正常的,那看来是sdram存储或输出数据出问题了,把sdram代码全部研究了一遍,依然无果,最终百度 sdram 页写,看到特权提到,sdram页读写要通过发送突发停止命令来结束操作,否则读写会从当前操作地址继续循环读写!Oh,mygod。最后查看关键的代码,发现突发停止命令根本永远不会发送给sdram,就是下面的代码,在command.v文件中。

else if ((do_precharge==1) & ((oe1 == 1) | (rw_flag == 1))) begin 
// burst terminate if write is active //CMD = 110 突发停止
RAS_N <= 1;
CAS_N <= 1;
WE_N <= 0;

看这个过程块的执行条件,(do_precharge==1) & ((oe1 == 1) | (rw_flag == 1)),我怎么找不出什么时候这个条件成立。。。

于是我把do_precharge==1改成 PMSTOP == 1,呵呵,问题解决。

实际上这个sdram controller原始代码是nwlogic的,友晶做了改动,删减了一些信号,贸然使用友晶的源码可能导致数据读写出错,除非你的板子和友晶的一模一样。要用友晶的必须根据需要把必要的信号、命令补完整。

转-友晶Sdram_Control_4Port的全页操作Bug?

标签:

原文地址:http://www.cnblogs.com/ccjt/p/4423930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!