赞
踩
异步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位相反,其它位都相等,则满标志有效。
格雷码 --> 二进制码
二进制 --> 格雷码
代码如下:
FIFO模型采用寄存器数组实现
- module FIFO_MEM #(parameter DATASIZE = 32,parameter ADDRSIZE = 4)
- (
- //INPUTS
- WCLK,
- RCLK,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。