当前位置:   article > 正文

跨时钟域设计四之异步FIFO(附代码)_fifoip核作为跨时钟域示例代码

fifoip核作为跨时钟域示例代码

异步FIFO

  • 二进制实现指针的问题
  • 同步指针的影响
  • 格雷码实现指针
  • 空满标志的产生
  • 代码实现

1.二进制实现指针的问题

由于空满标志的产生,需要比较写指针与读指针是否相等。而写指针在写时钟域下,读指针在读时钟域下,两者比较需要通过同步器进行。时钟二进制计数器实现指针,可能会导致取样错误。

比如,计数器从FF跳转到00,其中每一位都发生了翻转,虽然能通过同步计数器避免亚稳态,但是仍然能得到不相关的取样值。如果同步时钟上升沿在FF向00转换的中间位置到来,就可能将8位二进制数的任何取样并同步到新的时钟域中。

2.同步指针的影响

图1.FIFO满时序

 wtr_clk在t4上升沿时,wr_ptr与rd_ptr相等产生full标志。由于同步rd_ptr指针的影响,同步到wtr_clk时钟域的rd_ptr_sync在延后两个时钟周期t6、t7才发生变化,取消full标志。但实际在t6周期,fifo就未满。这虽然阻止数据写入的周期,但是对数据的准确性是无害的。

图2、FIFO空时序

与满时序类似,在FIFO空是也只会阻止对FIFO进一步的读访问。 

3.用格雷码实现指针

将格雷值转换为二进制值,根据条件递增二进制值,将二进制值转化成格雷码,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/206789
推荐阅读
相关标签
  

闽ICP备14008679号