异步FIFO(一)

本文深入探讨了异步FIFO的设计,特别是如何在跨时钟域中处理数据。通过Quartus II内置的IP核,作者展示了如何生成一个异步FIFO,其中写时钟为50MHz,读时钟为11MHz,两者相位偏移30°。在详细描述了时钟管理和数据传输机制后,通过仿真结果验证了异步FIFO的正确读写功能。
摘要由CSDN通过智能技术生成

写fifo这篇博客的主要原因是想强调异步fifo在跨时钟域处理以及读写数据宽度不同的异步fifo的设计。本篇文章先从简单开始,即先讨论ip调用——异步fifo使用。

 

异步fifo,顾名思义与同步fifo最大的区别是在时钟上,异步fifo的读写是中国不同。本次设计,通过调用quartus ii自带的ip核(具体的ip调用生成在上篇文章已有说明,不会的可以回顾一下)。写时钟采用系统主时钟,运用pll_ip核生成读时钟。主时钟50MHz,读时钟11MHz(相位偏移30°,在ip核配置窗口中设定),为了区分读写时钟,在写时钟下降沿写入数据(同时wren使能),在读时钟上升沿读出数据(rden使能)。

具体的建模代码如下:

//---------------------异步fifo实现----------------------//
/*
异步fifo的设计,这里描述的是指读和写时钟不同的异步fifo,
写入时钟采用的是主时钟50MHz,读时钟采用的是pll的输出时钟rd_clk,
其频率为11MHz,相位偏移30°。这里主要是进行一个异步fifo的模拟。
*/
wire 	 		rd_clk;
reg 	 	 	rdreq_sig;
wire 	 	 	wrreq_sig;
wire 	 	 	rdempty;
wire 	 	 	wrfull;
wire 	[D_WID - 1 : 0] 	 asyn_dout;


asynchron_fifo	 	 	 	 	as
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值