你真的理解异步FIFO读写中的空满现象吗?

本文探讨了异步FIFO中空满现象的原因,特别是在wclk和rclk时钟域不同的速度下,可能出现的假空和假满情况。并解释了为何要在wclk时钟域判断满,在rclk时钟域判断空,以避免影响FIFO的正常工作。此外,文章还分析了wclk速度比rclk快时,FIFO是否会overflow的问题,指出wptr不会超过rptr,从而保证FIFO的安全运行。
摘要由CSDN通过智能技术生成

一、前言

我们的都知道FIFO中有两个特别重要的信号,那就是空满信号。在异步FIFO中,空满信号的判断要比同步FIFO稍微复杂一些,因为它的地址使用的是格雷码。具体如何判断空满可以参考之前的一篇文章:手写异步FIFO。

看完之后可能你会觉得也没那么复杂,其实如果只是单纯的写一个异步FIFO,那么会按照文章中介绍的方法进行判断就够了。但是这里面还有一些问题需要注意:那就是假空和假满现象,以及为什么要在写时钟域进行判满操作,在读时钟域进行判空操作。

二、假空假满现象

无论是wclk和rclk谁快谁慢,都可能产生假空假满现象,但是情况稍有不同,因此下面我们分两种情况进行讨论。需要注意的是,之所以会产生假空假满现象,主要是因为wptr和rptr的同步问题导致的。因为无论是将wptr同步到rclk时钟域还是将rptr同步到wclk时钟域都有一定的延迟。

1、假设wclk比rclk快

  • 假满现象:当wclk比较快时,rptr很快就能同步到wclk时钟域,在同步过程中认为不会再有读数据的操作。但是如果同步的这个rptr刚好是FIFO满之后变化的新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耐心的小黑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值