跨时钟域信号处理(二)——异步fifo的Verilog实现(附同步fifo的实现)

需要回答几个问题:

1.什么是异步FIFO,异步FIFO有什么功能?
跨时钟域的数据交换,防止亚稳态。

2.在产生写满与读空信号时需要进行跨时钟域如何做的,且如何能正确指示空满状态?
寄存器打两拍+格雷码。
格雷码的具体作用1
写读的地址是用二进制表示的,只是在将地址同步到对方的时钟域下得时候才会变成格雷码,因为格雷码相邻只有1位不同,即使在同步过程中同步错误,例如000->001,错误的结果仅仅为将原状态000同步过去,比如读同步到写,结果是在没满的时候会提前报写满,不会覆盖数据:<=满。读的情况一样。

3.异步FIFO的写满与读空信号如何利用格雷码正确产生?

格雷码的具体作用2
另一方面就是如何判断空满,假设fifo空间有8个,0-7,假设读地址是0000,当写地址为8时,实际写地址为1000,对应格雷码是1100,这时候是写满了,读地址的格雷码0000,写地址格雷码1100,二者对应高位与次高位不同,其余位相同,标志写满。
读空是二者格雷码完全相同,这个好理解:读是跟在写后面的,读得再快也是跟上了写,故而‘相同’。

总结:格雷码的唯一目的就是即使在亚稳态进行读写指针抽样,也能进行正确的空满状态指示。

  • 15
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值