异步fifo设计中的一些疑惑

自己在看Vijay A.Nebhrajani关于异步fifo结构文章时,存在的两个疑惑,在这里记录一下.

困惑:读写时钟肯定会有快慢关系的存在,而用格雷码同步后的信号,发送到慢时钟一端,也有可能会采不到,需不需要做一个展宽处理?但是,做展宽处理,你就必须知道时钟快慢关系,这样,设计的异步fifo是不是不具有通用性. 困惑:例如读慢写快的fifo,会不会因为做同步的关系,导致写地址同步到读数据一端,有可能会造成遗漏,影响空满判断?

思路:我们用格雷码做同步,相邻只有1bit会发生变化,这样,其他的几位是可以保证百分之百被慢时钟采到的(前提是这几个位恰好被慢时钟采到),那么我们采到的位。例如:0110和0010,0110是0010后面的地址.
0110是满足full条件的地址,如果发生亚稳态,0110变成0010,这样,意味着full会晚一点到来,不会有错误产生.
首先,要理解空满条件
满,是当同步过来的读地址等于当前的读地址,这是一个近乎满的条件;因为实际的读地址是滞后同步过来的读地址的,实际的读地址可能早已发生了变化.
读慢写快,要达到空条件的一个隐含条件是读追写,写要很长时间才写一个,或者停下.
读慢写快,写地址肯定会被遗漏下的.如果,写停下了,读追上写的话,那么写停下的地址不会发生变化,肯定会被采到,这样判断空条件没有一点问题。
如果,读到了写同步的地址是4,写立刻就又开始写入数据了,下一时刻,读的地址是4,但写的地址可能是8,10之类的,但也不会发生空标志的满足条件了。
读慢写快着重于full条件的判断,即可。判断空条件,因为遗漏的写地址不会造成空标志判断错误,所以不需担心.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 学习链接:https://www.cnblogs.com/IClearner/p/6579754.html跨时钟域...
    简柏舟阅读 2,228评论 0 1
  • by yang 最近准备数字IC岗时复习整理的知识点,参考了比较火的fpga面试题,和一些相关知识。主要是写着自己...
    Yuhan尽量笑不露齿阅读 8,183评论 0 4
  • 本文首发于个人博客 1.设计目标 设计一个参数可配置的异步FIFO,要求: FIFO深度从4开始在2的幂次方连续可...
    月见樽阅读 2,015评论 0 0
  • 异步FIFO通过比较读写地址进行满空判断,但是读写地址属于不同的时钟域,所以在比较之前需要先将读写地址进行同步处理...
    li_li_li_1202阅读 3,178评论 0 1
  • FIFO是一种现先进先出的数据缓冲器,特点是没有外部的读写地址。根据满和空信号设计写使能和读使能来写/读FIFO,...
    黑心的一涛阅读 4,279评论 0 3