saber酱的抱枕

Fly me to the moon

09/12
01:00
其他

关于FIFO reset的一个细节

收到群发说有人在重置(rst_n)fifo时试图同时重置fifo的内置mem(二维register),但是写的却是mem[write_pointer]<=SIZE'b0,导致了前后仿不一致。

回头查了查 Cliff Cummings那篇,可以注意到他的fifo mem部分根本就没有重置。那一段always里就没有任何rst信号。

这是因为,fifo满还是空还是可读/可写从来就不取决于mem里有什么,仅仅取决于写指针和读指针的关系。只要两指针都正确地回到了0,同时empty置1,fifo mem里面不管是数据也好还是X也好都不重要。反正都要等到写入新数据之后才会读,所以mem的重置是不需要的。

至于最开始那个例子,说是综合后形成了gated reset,我也不懂为什么会这样,也许直接置零整个fifo mem就会是正常的?

当然了本来就不需要的东西何必浪费代码和面积去弄一个呢……


突然意识到一个事,这不是普通的gated reset,而是你在异步的rst_n树上加了一个同步的信号,这就是作死啊。
同步的那就随你玩了吧

关于FIFO reset的一个细节

评论 locationiskey 撤销评论