为什么FIFO 第一轮读出数据正确,第二轮读出数据的时候读出的是x?FIFO 读出数据有误

为什么FIFO 第一轮读出数据正确,第二轮读出数据的时候读出的是x?FIFO 读出数据有误仿真如下所示,第一轮写入12345678读出来都是对的,后来写91011…等,读出来就是x了,这是为什么呢?这说明指针在指到FIFO尽头以后出了什么问题。。。。。最后发现是这里指针的位宽是3,结果定义为了4位,这样的话,当你指针累计到111的时候并没有返回到00

大家好,欢迎来到IT知识分享网。

仿真如下所示,第一轮写入1 2 3 4 5 6 7 8 读出来都是对的, 后来写9  10 11…等, 读出来就是x了, 这是为什么呢?

 

为什么FIFO 第一轮读出数据正确,第二轮读出数据的时候读出的是x?FIFO 读出数据有误

 这说明指针在指到FIFO 尽头以后出了什么问题。。。。。

 

最后发现是这里指针的位宽是3 ,结果定义为了4位,这样的话,当你指针累计到111的时候并没有返回到000,而是指到了1000。而FIFO深度只有8, 所以会读出是x。

 

为什么FIFO 第一轮读出数据正确,第二轮读出数据的时候读出的是x?FIFO 读出数据有误

 

 

所以把源代码改写为: (因为前面已经定义了  BUF_SIZE=8)

为什么FIFO 第一轮读出数据正确,第二轮读出数据的时候读出的是x?FIFO 读出数据有误

 

 

问题就解决了。

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27822.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信