zoukankan      html  css  js  c++  java
  • 异步FIFO

     1、一个模块(module)里面最好存在一个clk;因此在fifo_mem模块内只使用w_clk时钟,不使用r_clk时钟。

    2、为判断FIFO的空(empty)、满(full)状态,需将写操作指针(w_ptr)、读操作指针(r_ptr)进行比较,因此需要将w_ptr同步到r_ptr时钟域,以及将r_ptr同步到w_ptr时钟域;使用常用的两级寄存器进行寄存。
    3、读写地址(w_addr、r_addr)使用二进制,读写指针(w_ptr、r_ptr)因为需要同步到异步时钟域上,因此使用格雷码。
    4、由二进制转换为格雷码的逻辑:gray_code = (bin_code << 1) ^ bin_code。
    5、空(empty)、满(full)状态的判断都是同步比较w_ptr与r_ptr是否相同;为了确定是empty还是full,w_ptr、r_ptr需要比w_addr、r_addr多一位;当w_ptr与r_ptr所有位都相同时,则表明FIFO为empty,当w_ptr与r_ptr最高位(MSB)和次高位(2'MSB)不同,其余位都相同时,则表明FIFO为full。
    6、异步FIFO的原理框图如下:
     
  • 相关阅读:
    IOC / AOP
    Volatile
    观察者模式
    Gang Of Four的23中设计模式
    适配器模式
    享元模式
    设计模式
    B树和B+树
    Java内存模型(JMM)
    【Java的IO流之文件字符输入输出流 25】
  • 原文地址:https://www.cnblogs.com/chenman/p/3624375.html
Copyright © 2011-2022 走看看