异步FIFO理解及代码实现

本文介绍了异步FIFO的基本概念,其内部读写时钟独立,关键参数包括数据宽度和深度。讨论了异步FIFO的主要信号,如Din、nWr、Wr_Clk、nRd、Rd_Clk、Dout以及Buffer的作用,并概述了其实现过程。

相对于同步FIFO,内部读写时钟是同一个时钟源,异步FIFO,内部读写时钟是独立的。所以,异步FIFO的参数有:

宽度:每个数据的位数;

深度:FIFO最多能存储多少个N位的数据。

还有Din:输入

nWr:写使能

Wr_Clk:写时钟

nRd:读使能

Rd_Clk:读时钟

Dout:输出;

Buff:缓存

以下是异步FIFO的实现:

/*功能定义:用来实现异步FIFO;
  定义:异步FIFO是先入先出的存储器,和一般存储器不一样,没有外部读写地址线,
  靠内部读写指针自动增1实现读写,因此不能像一般存储器一样读写任意地址的数据;
  异步FIFO设计难点:第一、二进制码怎么转换成BCD码;第二、转换后怎么检测“空”、“满”标志;
  vefilog实现异步FIFO的思想:数据的写入和读出->读写地址的生成(自加1)->两级触发器级联同步异步信号
  (读时钟域同步写指针、写时钟域同步读指针)->检测空、满标志->更新空、满标志*/
  
  
  //注:除FIFO_Entry_Addr和FIFO_Exit_AddrFIFO 内部的读地址和写地址是Asize位,其余读写指针都是Asize+1位
  module Asyn_FIFO(Din,Rd_Clk,nRd,nWr,Wr_Clk,Dout,Empty,Full);
      input [Asize-1:0] Din;
		input Rd_Clk;
		input nRd;
		input nWr;
		input Wr_Clk;
		
		output reg[Asize-1:0] Dout;
		output reg Empty;
		output reg Full;
		 
		reg [Asize-1:0] Buffer[Dsize-1];
		reg [Bsize:0] Rd_Addr_Bin;
	   reg [Bsize:0] Wr_Addr_Bin;
		wire [Bsize:0] Rd_NextAd
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值