基于xilinx的axi-fifo的应用

本文档详细介绍了FPGA开发中AXI FIFO的使用,包括IP的生成步骤、模块特性以及如何在实际应用中进行仿真。AXI FIFO作为数据传输的重要组件,通过AXI接口提供了数据流的握手机制,确保了数据传输的正确性和时序控制。通过实例,阐述了如何配合valid和ready信号来指示有效数据,以满足AXI协议的要求。

作为一个有一定工作经验(划水好多年)的FPGA工程师,很多模块都已经学习过或者使用过,但是如果让我重新实现,感觉又是一脸懵。因此,这是我发文档的原因。对于自己来说,这是一个总结归纳的过程,对读者,可能是一次解惑。

后期,将会逐渐分享DDR/ETH/SERDES/PCIe/SPI/FFT/FIR等等应用、调试经历。2022.8.4@gz

如果有疑惑的地方,可以站内信->共同探讨!

  • 概述

在FPGA的开发过程中,FIFO几乎是所有工程中都会使用的一个存储器IP。在很多场合,例如数据的跨时域处理,流水线命令等,可以说是最佳选择。

普通的FIFO(native),不管是在altera/xilinx/lattice等平台,一般使用者都非常熟悉。一般就是wren/rden/din/dout/clk/rst/full/almostfull/empty/almostempty/dcnt等信号的配合使用。由于xilinx平台在IP设计中,大量的使用axi总线,在zynq/SOC设计中,使用了非常多的AXI-FIFO。因此,有必要说明一下基于axi接口的fifo应该如何使用。

本文讲述的是fifo generator中的axi stream类型的FIFO的使用;

  • IP的生成

Step 1:修改名称、选择axi stream、根据需要选择同一时钟或者跨时钟

Step 2:本文中选择16bit=2byte宽度

Step 3:设置FIFO的实现方式(使用block-ram),深度256个数据

Step 4:检查重要信息,写入到读出有2个时钟延时

  • IP说明

1、模块框图:slave:full->ready,wr_en->valid master:empty->valid,rd_en->ready

2、时序说明:在本质上,axi接口的fifo只是使用了native fifo的控制状态信号做了修改,

变成了具有握手机制的valid与ready信号 。

  • 应用仿真

  • 1、仿真文件说明

2、应用以及仿真时序

1、仿真代码

3、仿真时序图

从上图可以看出,只要fifo内存在有效数据,tvalid就会有效,但是只有ready信号有效的时候,输出信号tdata更新。

因此,使用的时候,需要配合valid&ready来指示tdata,这就是axi协议中的握手。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值