打印

CPU与FPGA数据交互问题

[复制链接]
1862|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhbsniper|  楼主 | 2015-12-2 14:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在有一个项目用C51的单片机做主控器,外部用FPGA作为数字接口的扩展。CPU与FPGA之间有数据的交互。在FPGA内部定义一个std_logic_vector的64位量sys,sys每1us加1,作为微妙计数器。CPU会隔大约0.5s去读sys。分为8个字节,每次多一个字节。CPU只会去读该数据,不会有写的操作,目前测试过程中发现cpu读该数据时会导致该数据发生错误,数据会突变,变成一个较大的数,每次对于上一次的值基本都是变大了约120000.目前FPGA在ALE下降沿锁存地址信号,对rd信号打了2个拍子。
个人认为即使CPU与FPGA时序上有冲突,也只会造成多出来的数据错误,不会改变sys的值,但现在是sys的值也发生了改变,后面的加1是在sys错误的值基础上 加1。本人对fpga不是很熟悉。
请教大神是什么原因导致的该问题。谢谢!

相关帖子

沙发
feihufuture| | 2015-12-2 15:34 | 只看该作者
才用主从设计

使用特权

评论回复
板凳
xxyyzz123| | 2015-12-2 18:45 | 只看该作者
1000元,给你写一个好了

使用特权

评论回复
地板
zhbsniper|  楼主 | 2015-12-2 20:05 | 只看该作者
大哥,太贵了啊!穷人一个啊,给解释一下吧!我只是想不明白读怎么会影响到原来的数据。

使用特权

评论回复
5
jdog| | 2015-12-4 19:32 | 只看该作者
1、cpu的读和 ale信号,在进入fpga内后做下时钟同步处理
2、读内部8个字节数据,通过ale和地址作为信号标志,有检测到这个信号标志的时候,就把把计数器内的数据锁存到一个8字节缓存,后面8个字节的读操作只读这个缓存内数据。

使用特权

评论回复
6
ar_dong| | 2015-12-4 21:22 | 只看该作者
上代码吧

使用特权

评论回复
7
王重阳| | 2015-12-9 17:37 | 只看该作者
异步处理肯定会有问题 ,一个寄存器,你正在写入,同时又读取 ,不变错 才怪了呢。

使用特权

评论回复
8
zhaojingzb| | 2015-12-12 16:44 | 只看该作者
这是因为FPGA内部没有对数据做锁存,导致两次读取的数据不是同一个时刻值。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

184

帖子

0

粉丝