[AXIS] AXI4-Stream Data FIFO

AXI4-Stream Data FIFO IP 详细介绍

概述

AXI4-Stream Data FIFO 属于 AXI4-Stream Infrastructure IP Suite的一部分。该 IP 核旨在为 AXI4-Stream 数据流提供缓冲功能,支持数据流的平滑传输、突发吸收和跨时钟域传输。它通过内部 FIFO 实现数据的临时存储和同步,广泛应用于需要解决数据流速率不匹配、背压管理或跨时钟域通信的场景,例如视频处理、信号处理和网络数据包传输。

该 IP 核的主要功能包括:

  • 数据缓冲:通过 FIFO 缓冲 AXI4-Stream 数据流,吸收突发传输或速率差异。
  • 跨时钟域支持:支持输入和输出接口运行在不同时钟域。
  • 灵活配置:支持多种 FIFO 深度、数据宽度和实现方式(块存储器或分布式存储器)。
  • 协议兼容性:完全符合 AXI4-Stream 协议,支持所有标准信号。

主要特性

AXI4-Stream Data FIFO IP 具有以下关键特性:

  1. AXI4-Stream 协议兼容性

    • 完全符合 AXI4-Stream 协议规范,支持所有 AXI4-Stream 定义的信号:TVALIDTREADYTDATATSTRBTKEEPTLASTTIDTDESTTUSER
    • TDATATSTRBTKEEPTLASTTIDTDESTTUSER 为可选信号,用户可通过配置启用或禁用。
    • 支持可编程的 TDATA 宽度(8-512 位)、TUSER 宽度(1-128 位)、TIDTDEST 宽度(1-32 位)。
  2. FIFO 缓冲

    • FIFO 深度可配置,支持 16、32、64、128、256、512、1024、2048、4096、8192 或 16384 字(word)。
    • FIFO 宽度等于 AXI4-Stream 数据宽度(包括 TDATATSTRBTKEEPTLASTTIDTDESTTUSER 的总和)。
    • 支持两种实现方式:
      • 块存储器(Block Memory):使用 FPGA 的 BRAM 资源,适合大深度 FIFO。
      • 分布式存储器(Distributed Memory):使用 LUT 和触发器,适合小深度 FIFO。
  3. 跨时钟域支持

    • 支持输入接口(S00_AXIS)和输出接口(M00_AXIS)运行在不同时钟域(S_ACLKM_ACLK)。
    • 异步 FIFO 设计确保跨时钟域传输的可靠性,适合处理不同时钟频率或Missed by default.
  4. 高性能

    • 支持背靠背传输,最大吞吐量接近时钟频率(假设 FIFO 未满或未空)。
    • 提供低延迟选项(First-Word Fall-Through, FWFT),允许输出数据在写入时立即可用,减少读取延迟。
  5. 状态监控

    • 提供可选的状态信号,包括 FIFO 满(FULL)、几乎满(ALMOST_FULL)、空(EMPTY)、几乎空(ALMOST_EMPTY)等。
    • 支持可编程的阈值,用于触发 ALMOST_FULLALMOST_EMPTY 信号。
  6. 时钟与复位

    • 支持独立的输入时钟(S_ACLK)和输出时钟(M_ACLK)或单一时钟域(ACLK)。
    • 提供独立的复位信号(S_ARESETnM_ARESETn)或全局复位(ARESETn),支持异步复位同步释放。
    • 可选的时钟使能信号(ACLKEN),用于精细化时钟控制。
  7. 工具与设备支持

    • 设计工具:Vivado Design Suite、ISE Design Suite。
    • 支持设备:Artix-7、Kintex-7、Kintex UltraScale、Kintex UltraScale+、Virtex-7、Virtex UltraScale、Virtex UltraScale+、Zynq-7000、Zynq UltraScale+ MPSoC。

功能模块

AXI4-Stream Data FIFO IP 的核心功能是为 AXI4-Stream 数据流提供缓冲和同步,其功能模块包括以下几个方面:

1. 数据缓冲

  • 功能:通过内部 FIFO 缓冲 AXI4-Stream 数据流,吸收突发传输或上下游速率差异。
  • 机制:输入数据写入 FIFO,输出接口从 FIFO 读取数据,TVALIDTREADY 信号控制数据流。
  • 特点:支持高吞吐量,FIFO 接近满或空时通过 TREADY 信号管理背压。

2. 跨时钟域传输

  • 功能:支持输入和输出接口运行在不同时钟域,异步 FIFO 确保数据同步。
  • 机制:输入数据在 S_ACLK 时钟域写入 FIFO,输出数据在 M_ACLK 时钟域读取。
  • 应用:适用于 Zynq SoC 中处理系统(PS)与可编程逻辑(PL)之间的跨时钟域通信。

3. First-Word Fall-Through (FWFT)

  • 功能:启用 FWFT 模式时,FIFO 的第一个数据字在写入时立即出现在输出端口,减少读取延迟。
  • 应用:适用于对延迟敏感的应用,如实时视频或信号处理。

4. 状态监控

  • 功能:提供 FIFO 状态信号(FULLALMOST_FULLEMPTYALMOST_EMPTY),帮助系统监控 FIFO 占用情况。
  • 配置:可设置 ALMOST_FULLALMOST_EMPTY 的阈值,优化背压管理。
  • 应用:用于动态调整数据流速率或触发中断。

5. 信号支持

  • 必选信号TVALIDTREADY
  • 可选信号TDATATSTRBTKEEPTLASTTIDTDESTTUSER,可通过配置启用或禁用。
  • 信号宽度TDATA 支持 8-512 位,TUSER 支持 1-128 位,TIDTDEST 支持 1-32 位。

接口说明

以下是 AXI4-Stream Data FIFO IP 的主要接口及其功能:

  1. 输入接口(S00_AXIS)

    • 类型:AXI4-Stream 主接口。
    • 信号
      • S00_AXIS_TVALID:输入数据有效信号。
      • S00_AXIS_TREADY:输入接口准备好信号(FIFO 未满时为高)。
      • S00_AXIS_TDATA:输入数据,宽度可配置(8-512 位)。
      • S00_AXIS_TSTRBTKEEP:字节选通信号,宽度为 TDATA 的 1/8。
      • S00_AXIS_TLAST:数据流结束信号。
      • S00_AXIS_TIDTDEST:流标识和目标标识信号。
      • S00_AXIS_TUSER:用户定义信号,宽度可配置(1-128 位)。
    • 功能:接收来自上游 AXI4-Stream 从设备的数据流。
  2. 输出接口(M00_AXIS)

    • 类型:AXI4-Stream 从接口。
    • 信号:与输入接口类似,包括 M00_AXIS_TVALIDTREADYTDATATSTRBTKEEPTLASTTIDTDESTTUSER
    • 功能:将缓冲后的数据流发送到下游 AXI4-Stream 主设备。
  3. 时钟与复位接口

    • S_ACLK:输入接口的时钟信号(异步模式)。
    • M_ACLK:输出接口的时钟信号(异步模式)。
    • ACLK:全局时钟信号(同步模式)。
    • S_ARESETn:输入接口的低电平有效复位信号。
    • M_ARESETn:输出接口的低电平有效复位信号。
    • ARESETn(可选):全局低电平有效复位信号。
    • ACLKEN(可选):时钟使能信号。
  4. 状态接口

    • FULL:FIFO 满信号。
    • ALMOST_FULL:FIFO 几乎满信号。
    • EMPTY:FIFO 空信号。
    • ALMOST_EMPTY:FIFO 几乎空信号。
    • 功能:提供 FIFO 状态信息,用于系统控制。

配置方法

1. 在 Vivado 中添加 IP

  • 打开 Vivado 的 Block Design,右键选择 Add IP
  • 搜索 AXI4-Stream Data FIFO,将其拖入设计。
  • 双击 IP 核,打开定制化对话框,配置以下参数:
    • FIFO 实现方式:选择块存储器(Block Memory)或分布式存储器(Distributed Memory)。
    • FIFO 深度:选择 16、32、64、128、256、512、1024、2048、4096、8192 或 16384 字。
    • TDATA 宽度:设置 TDATA 宽度(8-512 位)。
    • TUSER 宽度:设置 TUSER 宽度(1-128 位,可选)。
    • TID/TDEST 宽度:设置流标识和目标标识宽度(1-32 位,可选)。
    • 信号使能:启用或禁用 TSTRBTKEEPTLASTTIDTDESTTUSER
    • 时钟模式:选择同步时钟(单一 ACLK)或异步时钟(S_ACLKM_ACLK)。
    • FWFT 模式:启用或禁用 First-Word Fall-Through。
    • 状态信号:启用或禁用 FULLALMOST_FULLEMPTYALMOST_EMPTY,并设置阈值。
    • 复位配置:选择独立复位(S_ARESETnM_ARESETn)或全局复位(ARESETn)。
    • 时钟使能:启用或禁用 ACLKEN

2. 连接与验证

  • 将输入接口(S00_AXIS)连接到上游 AXI4-Stream 从设备,分配输入时钟(S_ACLKACLK)和复位(S_ARESETn 或 `ARESET"',
  • 将输出接口(M00_AXIS)连接到下游 AXI4-Stream 主设备,分配输出时钟(M_ACLKACLK)和复位(M_ARESETnARESETn)。
  • 使用 Vivado 仿真工具验证数据流,检查 TVALIDTREADYTLAST 和状态信号(FULLEMPTY 等)的时序。
  • 监控 FIFO 的背压行为,确保 FIFO 深度足够支持突发传输和速率差异。

资源利用情况

根据 PG085 和相关资源利用数据,AXI4-Stream Data FIFO IP 的资源占用取决于配置参数(如 FIFO 深度、数据宽度、实现方式等)。以下是一些典型配置的资源利用情况(基于 Vivado 生成数据):

  • 设备系列:Artix-7、Kintex-7、Zynq-7000 等。
  • 资源类型
    • LUT(查找表):分布式存储器模式下随 FIFO 深度和数据宽度增加,块存储器模式较少。
    • FF(触发器):用于 FIFO 控制逻辑和数据寄存器。
    • BRAM:块存储器模式下使用 BRAM(深度 ≥ 512 时),分布式存储器模式不使用。
    • DSP 切片:不使用。
  • 配置示例
    • 分布式存储器、32 位 TDATA、64 字深度:约 200 LUT、150 FF、无 BRAM。
    • 块存储器、32 位 TDATA、512 字深度:约 100 LUT、100 FF、1-2 BRAM。
    • 块存储器、256 位 TDATA、1024 字深度:约 300 LUT、200 FF、4-6 BRAM。

具体资源利用数据需参考 Vivado IP 核生成报告,建议用户在设计时根据目标设备和配置参数进行验证。


应用场景

AXI4-Stream Data FIFO IP 适用于以下场景:

  1. 突发传输吸收

    • 缓冲突发数据流,平滑上下游速率差异,适用于视频流或网络数据包传输。
    • 确保下游设备以稳定速率处理数据。
  2. 跨时钟域传输

    • 在不同时钟域之间传输 AXI4-Stream 数据流,例如 Zynq-7000 中 PL 和 PS 之间的通信。
    • 适用于视频处理、信号处理和 SoC 集成。
  3. 背压管理

    • 通过 FIFO 管理下游设备的背压,避免数据丢失。
    • 适用于实时系统,如音频/视频处理或数据采集。
  4. 数据流同步

    • 与 AXI4-Stream Combiner 或 Broadcaster 配合,确保多路数据流同步。
    • 适用于多通道信号处理或视频流合并。

注意事项

  1. FIFO 深度选择

    • FIFO 深度需根据突发长度、时钟频率差和背压情况选择,过小的深度可能导致数据丢失。
    • 建议通过仿真验证 FIFO 深度是否满足应用需求。
  2. 时钟频率关系

    • 异步模式下,输出时钟频率(M_ACLK)建议不低于输入时钟频率(S_ACLK)的 75%,以避免 FIFO 溢出。
    • 同步模式下,单一 ACLK 需满足上下游的时钟需求。
  3. 复位同步

    • 确保 S_ARESETnM_ARESETn 信号在各自时钟域内正确同步,推荐使用异步复位同步释放机制。
    • 全局复位(ARESETn)需确保所有时钟域同时复位。
  4. FWFT 模式

    • 启用 FWFT 模式可减少读取延迟,但会略微增加资源占用(约 10-20 LUT/FF)。
    • 仅在对延迟敏感的应用中启用。
  5. 状态信号使用

    • 启用 FULLALMOST_FULL 信号可帮助上游设备控制数据发送速率。
    • 设置合理的 ALMOST_FULL 阈值(例如,FIFO 深度的 80%),避免频繁背压。

总结

AXI4-Stream Data FIFO IP 是一款功能强大且灵活的 AXI4-Stream 基础设施 IP 核,专为数据流缓冲和跨时钟域传输而设计。其支持块存储器和分布式存储器两种实现方式、可配置的 FIFO 深度和信号宽度,以及 FWFT 和状态监控功能,使其在视频处理、信号处理、网络数据包传输和 SoC 集成等领域具有广泛应用前景。

FPGA设计工具推荐

  • SZ901
    SZ901 是一款基于XVC协议的FPGA网络下载器。

    • 最高支持53M
    • 支持4路JTAG独立使用
    • 支持端口合并
    • 支持国产FLASH烧写
    • 下载器无限扩展
    • 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
  • SZ501(PRO_A7)

    • SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
    • 双网口(RGMII)
    • 双SFP+
    • DDR
    • UART
    • IIC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值