在设计中fifo为什么会出现under run和over run的情况,如何解决?
最佳回复
1楼
1.你说这个设计的空满信号不能及时释放,这个就是问题,因为正确的FIFO设计应该是空满信号能及时标记,以阻止读信号或者写信号,防止underrun和overrun的出现。我不是很清楚你说的gray encoded fifo是那种FIFO,最好能有代码或者功能的spec,这样的话能说得更清楚些。 2.信号过不同时钟域用2个寄存器是为了防止亚稳态的出现,这个情况感觉主要出现在握手信号等。数据线和地址线过不同时间域情况比较少,不过如果需要也应当通过2个寄存器来保证信号的正确性。
2楼
是不是指空的时候读,满的时候写的情况呢? 不知道你具体的情况是什么,一般除了空满信号外,会有将空或者将忙的信号来提示。
3楼
我不是高手当我想说几句我的理解 FIFO是一定有满空的 首先要了解他的硬件结构,通过指针来判断他的空满 其实你因该了解你做的FIFO的SRAM的大小 不然你怎么判断什么时候是满或空的标志呢 只有自己心理有数才能限制好设计,其实有一个简单的方法就是当读的指针和写的指针相等的时候哪个时候就是满空的时候,现在的FIFO为了不出错误都是在满或空的前几位就开始判断为满空了 你可以借鉴以下