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的原理框图如下:
     
  • 相关阅读:
    enum
    爬虫实战2:爬头条网美图--Ajax图片加载处理
    爬虫实战1:使用requests和正则爬取电影信息
    爬虫7:selenium
    爬虫6:pyquery库
    爬虫5:beautifulsoup
    爬虫4:re库
    爬虫3:requests库
    爬虫2:urllib
    爬虫1:概述
  • 原文地址:https://www.cnblogs.com/chenman/p/3624375.html
Copyright © 2011-2022 走看看