博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
友晶Sdram_Control_4Port的全页操作Bug?
阅读量:4570 次
发布时间:2019-06-08

本文共 908 字,大约阅读时间需要 3 分钟。

以前在学校初学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的,友晶做了改动,删减了一些信号,贸然使用友晶的源码可能导致数据读写出错,除非你的板子和友晶的一模一样。要用友晶的必须根据需要把必要的信号、命令补完整。

转载于:https://www.cnblogs.com/edaplayer/p/3678897.html

你可能感兴趣的文章
Codeforces Round #564(div2)
查看>>
python协程
查看>>
IaaS基础设施资源管理架构与openstack各组件对应关系
查看>>
PHP SplObjectStorage使用实例
查看>>
使用sencha cmd打包extjs4.2.2
查看>>
Python之路—Day2作业
查看>>
方法重载
查看>>
在windows中使用VMWare安装Mac OS 10.7
查看>>
windows下通过idea连接hadoop和spark集群
查看>>
BZOJ 1822 Frozen Nova 霜冻新星
查看>>
2016041601 - linux上安装maven
查看>>
Android游戏可能遇到的3个问题及解决方案
查看>>
DataBase First创建数据库
查看>>
真事儿!——我们官网被全站拷贝了!
查看>>
边工作边刷题:70天一遍leetcode: day 27-1
查看>>
清理C盘的一个新发现,Visio Studio在调试过程中产生的垃圾文件
查看>>
抽象类及抽象方法
查看>>
Canvas基本绘画学习
查看>>
要习惯用vector代替数组
查看>>
Django ORM 最后操作
查看>>