一、前言
我们的都知道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的值仍然是上一次同步过来的,也就是符合满条件的值,此时就会出现假满现象!
-
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?