当前位置:   article > 正文

verilog学习心得之六--异步FIFO原理_verilog实现fifo心得

verilog实现fifo心得

异步FIFO的设计原理如图:

其中主要的难点在于空满标志的产生,这里采用方法(1),其中地址宽度较FIFO深度所需地址宽度宽1位:

空标志产生:将写地址waddr--> 转换为格雷码waddr_gray-->两级同步至读时钟rclk waddr_gray_rclk -->将同步之后的写格雷码转换为二进制waddr_bin_rclk

                      比较waddr_bin_rclk与读时钟rclk下的读地址raddr,两者完全相等,则空标志有效。

满标志产生:将读地址raddr--> 转换为格雷码raddr_gray--> 两级同步至写时钟wclk raddr_gray_wclk -->将同步之后的写格雷码转换为二进制raddr_bin_wclk

                      比较raddr_bin_wclk与写时钟wclk下的写指针waddr,MSB位相反,其它位都相等,则满标志有效。

格雷码  --> 二进制码

bin(n-1) = gray(n-1)

bin(i) = gray(i) 异或 bin(i+1)   其中 i < n-1

二进制 --> 格雷码

gray(n-1) = bin(n-1)

gray(i) = bin(i) 异或 bin(i+1)    其中 i < n-1

代码如下:

FIFO模型采用寄存器数组实现

  1. module FIFO_MEM #(parameter DATASIZE = 32,parameter ADDRSIZE = 4)
  2. (
  3. //INPUTS
  4. WCLK,
  5. RCLK,
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/206827?site
推荐阅读
相关标签
  

闽ICP备14008679号