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

 

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

 

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

 

 

 

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

 

 

问题就解决了。