首页 > 其他 > 详细

异步FIFO

时间:2014-03-26 04:38:51      阅读:274      评论:0      收藏:0      [点我收藏+]

 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的原理框图如下:
 
bubuko.com,布布扣

异步FIFO,布布扣,bubuko.com

异步FIFO

原文:http://www.cnblogs.com/chenman/p/3624375.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!