您好,请问您异步FIFO的溢出操作时怎么样判断的?

 我来答
bigmagicer
2011-07-09 · 超过13用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:35万
展开全部
一般情况下FIFO的长度为2的n次方,这样地址位可以全部使用上,有利于FIFO的循环使用。判断溢出和读空的方法有很多,网上也有介绍,我只在这里说一下我认为比较好的一个方法,就是FIFO的地址位设为n+1位(如:{n+1, n}),这样地址的低n位指向FIFO的实际空间,最高的那个n+1位可以做判断用。初始化时读地址和写地址都清空,设为相等值,读时读地址+1,写时写地址+1,如果读写地址完全相同,表示FIFO为空,此时禁止读;如果低n位相同,但是n+1位相反,表示FIFO为满,此时禁止写,如果不禁止的话就是溢出了(如果地址转换成格雷码,那么FIFO的状态比较就要参考高2位地址信息了)。另外异步FIFO要注意信号的跨时钟域同步问题,一般采用双锁存器同步法,可靠性适中,方法简单。
always @ (posedge Wr_CLK) //注意是写时钟频率信号
begin
Rd_Addr2 <= Rd_Addr1; //Rd_Addr2就是同步到写时钟频率上的读地址
Rd_Addr1 <= Rd_Addr; //Rd_Addr就是在读时钟频率上的读地址
end
当然用三寄存器锁存的方法可靠性更高,但是性能会受到影响。
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式