CPU与FPGA数据交互问题

[复制链接]
2186|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 | 显示全部楼层
大哥,太贵了啊!穷人一个啊,给解释一下吧!我只是想不明白读怎么会影响到原来的数据。
jdog 发表于 2015-12-4 19:32 | 显示全部楼层
1、cpu的读和 ale信号,在进入fpga内后做下时钟同步处理
2、读内部8个字节数据,通过ale和地址作为信号标志,有检测到这个信号标志的时候,就把把计数器内的数据锁存到一个8字节缓存,后面8个字节的读操作只读这个缓存内数据。
ar_dong 发表于 2015-12-4 21:22 | 显示全部楼层
上代码吧
王重阳 发表于 2015-12-9 17:37 | 显示全部楼层
异步处理肯定会有问题 ,一个寄存器,你正在写入,同时又读取 ,不变错 才怪了呢。
zhaojingzb 发表于 2015-12-12 16:44 | 显示全部楼层
这是因为FPGA内部没有对数据做锁存,导致两次读取的数据不是同一个时刻值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

184

帖子

0

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