《Verilog HDL高级数字设计》中异步FIFO采用脉冲同步器的思路错误

本文分析了《Verilog HDL高级数字设计》中关于异步FIFO使用脉冲同步器的适用性问题。指出在异步FIFO的满信号检测中,同步正确结果并非关键,只需避免空读满写即可。通过多种情况讨论,证明了5.38(b)场景在异步FIFO中的多余性,并推荐参考Clifford E. Cummings的文章。格雷码被强调为异步FIFO的核心,其无连续跳变的特性避免了同步问题。对于特定时钟周期差异,采用格雷码分析表明,脉冲同步器并非必需。
摘要由CSDN通过智能技术生成

5.38(b)中脉冲同步器的应用场景是为了同步一个比时钟周期短的窄脉冲,原理是展宽短脉冲到满足下一个时钟的setup&hold time之后,最终目的是同步出正确结果,但是异步FIFO并不关心同没同步出正确结果,只要不空读满写就行:比如现在是要写,需要同步读指针后和当前写指针对比是不是差一圈得出满信号,

举例子:
读指针从0110变为0111,0位的0跳变成1出现了一个上升沿,但是也就仅有一个上升沿而已,并不是一个短脉冲。作者的意思是想用5.38(b)同步出这个1的跳变,怕同步丢了,所以要先展宽后再巴拉巴拉,但是按几种情况分析:

情况A:此跳变满足当前读时钟的setup&hold time,直接打两拍不用解释。5.38(b)多余。

情况B:此跳变不满足当前读时钟的setup time,如果此后一段时间(本质上是指满足下一个读时钟的setup&hold time需求)没有变化,那么下一个读时钟直接采用打两拍就同步出正确结果了,5.38(b)多余;这种情况下无论当前读时钟同步出的是0110还是0111都可以,前者最差的情况可能会导致虚满,后者是正确读指针

情况C:此跳变不满足当前读时钟的setup time,一直维持到下个读时钟前却又发生了一个跳变而且超级倒霉,这个新的跳变又不满足下个读时钟的setup time,对于下个读时钟重新回到情况B分析,至于当前读时钟同步出的的结果也与情况B分析一致

情况D:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值