您当前的位置: 首页 > 

耐心的小黑

暂无认证

  • 1浏览

    0关注

    323博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

耐心的小黑 发布时间:2021-12-18 19:39:32 ,浏览量:1

一、前言

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

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

二、假空假满现象

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

1、假设wclk比rclk快

  • 假满现象:当wclk比较快时,rptr很快就能同步到wclk时钟域,在同步过程中认为不会再有读数据的操作。但是如果同步的这个rptr刚好是FIFO满之后变化的新值,也即FIFO满后又有了读数据操作,此时FIFO已经不满了;那么由于在rptr同步过来之前的这段时间,wclk时钟域的rptr的值仍然是上一次同步过来的,也就是符合满条件的值,此时就会出现假满现象!
关注
打赏
1640088279
查看更多评论
立即登录/注册

微信扫码登录

0.0380s