SDR SDRAM行首数据出错

[复制链接]
 楼主| luyaker 发表于 2014-3-23 19:44 | 显示全部楼层 |阅读模式
本人在用modelsim做功能仿真时,发现读SDR SDRAM第0行、第0列的数据错了,实际读的是第2行第0列的数据;而读取第1行第0列的数据实际是第0行第0列的,第2行第0列读出来的是第1行第0列的。
而其他非行首的数据正确,本人用的是突发读取8个数据的方式。
请问有可能是什么原因呢?
zhaojingzb 发表于 2014-3-24 08:44 | 显示全部楼层
那就是地址送错了,直接分析一下接口时序就可以了
 楼主| luyaker 发表于 2014-3-24 09:03 | 显示全部楼层
zhaojingzb 发表于 2014-3-24 08:44
那就是地址送错了,直接分析一下接口时序就可以了

我一开始也是这么想的,不过我想不通为什么其他数据是对的
ifpga 发表于 2014-3-24 09:13 | 显示全部楼层
没有什么想不通的,一定是地址哪一位给错了
zhaojingzb 发表于 2014-3-24 12:04 | 显示全部楼层
luyaker 发表于 2014-3-24 09:03
我一开始也是这么想的,不过我想不通为什么其他数据是对的

要么是写数据的时候就写错了,要么就是读地址送错了。
很好定位问题的,把SDRAM初始话一组地址数进去,然后只通过总线读,确认。
这个对照器件datasheet看一下代码的地址控制部分,很容易看出问题来的。
 楼主| luyaker 发表于 2014-3-24 19:00 | 显示全部楼层
ifpga 发表于 2014-3-24 09:13
没有什么想不通的,一定是地址哪一位给错了

嗯,确实
 楼主| luyaker 发表于 2014-3-24 19:08 | 显示全部楼层
本帖最后由 luyaker 于 2014-3-24 19:39 编辑
zhaojingzb 发表于 2014-3-24 12:04
要么是写数据的时候就写错了,要么就是读地址送错了。
很好定位问题的,把SDRAM初始话一组地址数进去,然 ...

果然啊。之前我写数据的时候,写的一直是对的,现在修改读的部分,自认为没有动写的部分。结果再次仿真发现,写的时候没写对。写地址0x100时写入的是0x000,而写0x200时,实际写入地址是0x100。原因是,行地址输入的时候,地址尚未自增一,列地址输入的时候地址却已经自增一了,属于我的地址没控制好。我突发写的时候,每次屏蔽掉后七个数,所以只有行首的数据出错。

 楼主| luyaker 发表于 2014-3-24 20:02 | 显示全部楼层
经过修改之后,烧写到FPGA中,运行正确,多谢两位的指导!
zhtoad2 发表于 2014-3-25 17:50 | 显示全部楼层
请问,你用的quartus的什么版本,我看了一下网页版本的quartus不支持cycone 和cyclone 2了,只支持3以上的,
是这样吗?
如果用cyclone2的器件,最好用什么软件版本呀?谢谢。
 楼主| luyaker 发表于 2014-3-25 21:30 | 显示全部楼层
免费版13.0sp1还支持cyclone 2呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

104

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部