verilog异步fifo设计,仿真(代码供参考)

本文探讨了异步FIFO的设计与仿真,重点在于不同时钟域之间的信号同步处理和二进制到Gray码的转换,以减少错误概率。内容包括FIFO的空满状态判断、Verilog实现及仿真结果分析,同时也提出了实际设计中应注意的问题,如格雷码对称性和时钟域转换等。
摘要由CSDN通过智能技术生成

异步fifo设计,仿真

前面研究了同步fifo,并进行了仿真验证,有关同步fifo问题可以参考本人上一篇博客,本次主要对异步fifo进行设计仿真验证。
与同步fifo相比,异步fifo主要不同之处在于读写时钟不同,因此异步fifo需要处理的问题较为复杂,通常需要处理注意的问题点有以下几点:

    1. 不同时钟域之间信号的同步化处理。
    1. 异步fifo的空状态与满状态的判断。

fifo主要有两个目的,速度匹配或者数据宽度匹配。需要进行满状态,空状态的判断,实现复杂。

异步fifo框图

异步fifo

不同时钟域之间信号的同步化处理。

针对读写时钟域的不同采用寄存器打两拍来实现同步化处理。另外由于二进制在两个时钟域之间传递,考虑到这个问题将二进制转换为gray(格雷码),由于gray
相邻两位之间只有一位不同,因此在不同域之间传递减小了出错的概率。(两种方式结合都是为了较小亚稳态)

二进制转换为gray方法

在这里插入图片描述
verilog 实现二进制转gray

//---------------gray----------
assign r_gray = (r_reg2 >> 1) ^r_reg2;
assign w_gray = (w_reg2 >> 1) ^w_reg2;

判断fifo的空满状态

判断fifo

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值