异步fifo的设计(一)

本文探讨异步fifo的设计,重点在于解决读写指针的同步化问题和空满状态判断。介绍了两种方法:增加额外bit区分和使用grey码。文章详细阐述了这两种方法的实现,并展示了grey码计数器的设计思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       上一篇文章讲的是同步fifo的设计,这篇文章主要讲一下异步fifo的设计。异步fifo和同步fifo的区别主要在于读写所用的时钟是否一致。异步fifo设计因为读写所用的时钟不一致因而设计比较复杂,会涉及到读指针和写指针的同步化。

       异步fifo设计主要要解决两个问题:

        1)如何产生fifo的读写指针

        2)如何判断fifo的空满状态

       这里fifo的写指针用wr_ptr表示,读指针用rd_ptr表示。首先来解释一下这两个指针的含义:写指针指向fifo中下一个要写入数据的地址;读指针指向下一个要读出数据的地址。这里的关键点在与下一个地址,这样避免了使用两个时钟周期去完成一个写操作或者读操作,其中一个时钟周期确定操作的地址,一个周期用于完成操作。

       如何产生fifo的wr_ptr和rd_ptr是第一个需要解决的问题。也是这篇文章讲解的主要内容。这里先解释一下fifo中空和满的的含义。如果fifo是空的话,意味着该fifo的wr_ptr和rd_ptr的值是相等的。空状态一般有两种情况,一种是复位的时候由于wr_ptr和rd_ptr被清0,所以其值相等;另一种情况时rd_ptr的值增加之后追上了wr_ptr 的值,与其相等。如果fifo是满的话,也意味着wr_ptr和rd_ptr的值是相等的,但是需要注意的是此时wr_ptr实际上是将rd_ptr套圈之后再一次追上r

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值