仿真如下所示,第一轮写入1 2 3 4 5 6 7 8 读出来都是对的, 后来写9 10 11...等, 读出来就是x了, 这是为什么呢?
这说明指针在指到FIFO 尽头以后出了什么问题。。。。。
最后发现是这里指针的位宽是3 ,结果定义为了4位,这样的话,当你指针累计到111的时候并没有返回到000,而是指到了1000。而FIFO深度只有8, 所以会读出是x。
所以把源代码改写为
问题就解决了。
仿真如下所示,第一轮写入1 2 3 4 5 6 7 8 读出来都是对的, 后来写9 10 11...等, 读出来就是x了, 这是为什么呢?
这说明指针在指到FIFO 尽头以后出了什么问题。。。。。
最后发现是这里指针的位宽是3 ,结果定义为了4位,这样的话,当你指针累计到111的时候并没有返回到000,而是指到了1000。而FIFO深度只有8, 所以会读出是x。
所以把源代码改写为
问题就解决了。