现在有一个项目用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不是很熟悉。
请教大神是什么原因导致的该问题。谢谢! |