[AXIS] AXI4-Stream Data Width Converter

AXI4-Stream Data Width Converter IP 详细介绍

概述

AXI4-Stream Data Width Converter 属于 AXI4-Stream Infrastructure IP Suite的一部分。该 IP 核旨在实现 AXI4-Stream 数据流的数据宽度转换,支持将输入数据流的宽度(TDATA 和相关信号)转换为不同的输出数据宽度,以适应上下游模块的不同接口需求。它广泛应用于需要数据宽度调整的场景,例如视频处理中分辨率调整、信号处理中多通道数据重组,或网络数据包处理中的带宽适配。

该 IP 核的主要功能包括:

  • 宽度转换:支持 AXI4-Stream 数据流的宽度增大(Upsizing)或减小(Downsizing)。
  • 信号管理:自动处理 TDATATSTRBTKEEPTUSER 等信号的宽度调整,保持协议一致性。
  • 灵活配置:支持多种输入/输出宽度组合,适应不同应用需求。
  • 高性能:低延迟设计,支持背靠背传输,最大化吞吐量。

主要特性

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

  1. AXI4-Stream 协议兼容性

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

    • Upsizing(宽度增大):将窄输入数据流转换为宽输出数据流,例如从 32 位转换为 64 位。
    • Downsizing(宽度减小):将宽输入数据流转换为窄输出数据流,例如从 64 位转换为 32 位。
    • 支持任意输入/输出宽度组合,只要宽度为 8 的倍数(以字节为单位,1-64 字节)。
  3. 信号宽度调整

    • TDATA:根据输入/输出宽度比例调整,自动拼接(Upsizing)或分割(Downsizing)。
    • TSTRBTKEEP:宽度为 TDATA 的 1/8(每字节 1 位),随 TDATA 宽度同步调整。
    • TUSER:支持用户定义的宽度转换,输入和输出 TUSER 宽度可独立配置。
    • TLAST:在 Upsizing 时,TLAST 仅在最后一个输出数据节拍置高;在 Downsizing 时,输入 TLAST 传播到对应的输出数据节拍。
    • TIDTDEST:保持不变,直接从输入传递到输出。
  4. 高性能设计

    • 使用组合逻辑和最小缓冲设计,延迟低(通常为 0-1 时钟周期,取决于宽度转换比例)。
    • 支持背靠背传输,最大吞吐量接近时钟频率(假设 TREADY 始终为高)。
    • 内部寄存器管道(Register Slice)可配置,用于优化时序或跨时钟域。
  5. 时钟与复位

    • 支持单一时钟域(ACLK),输入和输出接口共享同一时钟。
    • 提供低电平有效复位信号(ARESETn),同步到 ACLK
    • 可选的时钟使能信号(ACLKEN),用于精细化时钟控制。
  6. 工具与设备支持

    • 设计工具: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 Width Converter IP 的核心功能是调整 AXI4-Stream 数据流的宽度,其功能模块包括以下几个方面:

1. 数据宽度转换

  • Upsizing(宽度增大)
    • 功能:将窄输入数据流拼接为宽输出数据流。
    • 机制:多个输入数据节拍(TDATA)累积后形成一个输出数据节拍。例如,输入 32 位,输出 64 位,需 2 个输入节拍生成 1 个输出节拍。
    • TLAST 处理:输入 TLAST 仅在最后一个输出节拍置高,确保数据流完整性。
    • 示例:输入 TDATA[31:0],输出 TDATA[63:0],第一个输入节拍填充 TDATA[31:0],第二个输入节拍填充 TDATA[63:32]
  • Downsizing(宽度减小)
    • 功能:将宽输入数据流分割为窄输出数据流。
    • 机制:一个输入数据节拍分割为多个输出数据节拍。例如,输入 64 位,输出 32 位,1 个输入节拍生成 2 个输出节拍。
    • TLAST 处理:输入 TLAST 传播到最后一个输出节拍。
    • 示例:输入 TDATA[63:0],输出 TDATA[31:0],第一个输出节拍为 TDATA[31:0],第二个为 TDATA[63:32]

2. 信号管理

  • TDATA 和 TUSER:根据宽度比例拼接或分割,保持数据一致性。
  • TSTRB 和 TKEEP:随 TDATA 宽度调整,自动对齐字节。
  • TLAST:确保数据包边界的正确传递,Upsizing 时延迟到最后一个输出节拍,Downsizing 时传播到最后一个输出节拍。
  • TID 和 TDEST:直接传递,不受宽度转换影响。
  • TVALID 和 TREADY:通过 AXI4-Stream 握手机制控制数据流,确保同步传输。

3. 背压管理

  • 功能:通过 TREADY 信号管理数据流,防止数据丢失。
  • 机制
    • Upsizing:输入 TREADY 由输出 TREADY 和内部缓冲状态决定,需等待足够输入节拍生成输出。
    • Downsizing:输出 TREADY 由下游设备控制,输入 TREADY 在分割完成前保持高。
  • 注意:宽度转换可能导致吞吐量变化(Upsizing 降低输入吞吐量,Downsizing 增加输出节拍数)。

4. 寄存器管道

  • 功能:可选的寄存器管道(Register Slice)用于优化时序或隔离时钟域。
  • 特点:增加 1-2 个时钟周期延迟,但提高最大时钟频率(Fmax)。
  • 应用:适用于高频设计或长路径时序优化。

接口说明

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

  1. 输入接口(S00_AXIS)

    • 类型:AXI4-Stream 主接口。
    • 信号
      • S00_AXIS_TVALID:输入数据有效信号。
      • S00_AXIS_TREADY:输入接口准备好信号(由宽度转换逻辑和输出 TREADY 决定)。
      • 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 主设备。
    • 宽度TDATATUSER 宽度根据配置调整,TSTRBTKEEPTDATA 宽度变化。
  3. 时钟与复位接口

    • ACLK:全局时钟信号,输入和输出接口共享同一时钟域。
    • ARESETn:全局低电平有效复位信号,同步到 ACLK
    • ACLKEN(可选):时钟使能信号,用于控制数据传输的时序。

配置方法

1. 在 Vivado 中添加 IP

  • 打开 Vivado 的 Block Design,右键选择 Add IP
  • 搜索 AXI4-Stream Data Width Converter,将其拖入设计。
  • 双击 IP 核,打开定制化对话框,配置以下参数:
    • 输入 TDATA 宽度:设置输入 TDATA 宽度(8-512 位,1-64 字节)。
    • 输出 TDATA 宽度:设置输出 TDATA 宽度(8-512 位,1-64 字节)。
    • TUSER 宽度:设置输入和输出 TUSER 宽度(1-128 位,可选)。
    • TID/TDEST 宽度:设置流标识和目标标识宽度(1-32 位,可选)。
    • 信号使能:启用或禁用 TSTRBTKEEPTLASTTIDTDESTTUSER
    • 寄存器管道:启用或禁用 Register Slice(默认禁用)。
    • 时钟使能:启用或禁用 ACLKEN

2. 连接与验证

  • 将输入接口(S00_AXIS)连接到上游 AXI4-Stream 从设备。
  • 将输出接口(M00_AXIS)连接到下游 AXI4-Stream 主设备。
  • 确保输入和输出设备的 TDATA 宽度与 IP 配置一致。
  • 使用 Vivado 仿真工具验证宽度转换,检查 TVALIDTREADYTLASTTDATA 信号的时序。
  • 监控吞吐量变化(Upsizing 可能降低输入速率,Downsizing 可能增加输出节拍)。

资源利用情况

根据 PG085 和相关资源利用数据,AXI4-Stream Data Width Converter IP 的资源占用取决于配置参数(如输入/输出宽度、信号使能和寄存器管道)。以下是一些典型配置的资源利用情况(基于 Vivado 生成数据):

  • 设备系列:Artix-7、Kintex-7、Zynq-7000 等。
  • 资源类型
    • LUT(查找表):随宽度转换比例和信号复杂性增加,典型值为 50-500。
    • FF(触发器):用于控制逻辑和寄存器管道,典型值为 50-300。
    • BRAM:通常不使用,除非启用额外的缓冲逻辑。
    • DSP 切片:不使用。
  • 配置示例
    • 32 位到 64 位(Upsizing)、无寄存器管道:约 100 LUT、80 FF、无 BRAM。
    • 64 位到 32 位(Downsizing)、启用 TUSER 和寄存器管道:约 150 LUT、120 FF、无 BRAM。
    • 256 位到 64 位(Downsizing)、启用所有信号:约 300 LUT、200 FF、无 BRAM。

应用场景

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

  1. 视频处理

    • 调整视频流的数据宽度,例如将 24 位 RGB 数据转换为 32 位或 64 位,以适配下游处理模块。
    • 适用于实时视频编码、解码或显示系统。
  2. 信号处理

    • 将多通道信号数据重新组织,例如将 128 位输入分割为 4 个 32 位输出,或将多个窄数据流合并为宽数据流。
    • 适用于雷达、通信和音频处理系统。
  3. 网络数据包处理

    • 适配不同带宽的网络接口,例如将 512 位数据流转换为 64 位以适配低速设备。
    • 适用于数据中心或网络处理器设计。
  4. SoC 集成

    • 在 Zynq 或 UltraScale+ MPSoC 系统中,调整 PL 和 PS 之间的 AXI4-Stream 数据宽度,确保接口兼容性。
    • 适用于嵌入式系统或硬件加速器设计。

注意事项

  1. 宽度转换比例

    • 确保输入和输出 TDATA 宽度为 8 的倍数(以字节为单位),否则可能导致配置错误。
    • 宽度转换比例(输入/输出)会影响吞吐量,Upsizing 降低输入速率,Downsizing 增加输出节拍数。
  2. TLAST 处理

    • 在 Upsizing 时,TLAST 仅在最后一个输出节拍置高,需确保上游设备正确设置 TLAST
    • 在 Downsizing 时,TLAST 传播到最后一个输出节拍,需验证下游设备是否正确识别。
  3. TREADY 信号管理

    • 确保下游设备的 TREADY 信号及时响应,避免因背压导致数据流阻塞。
    • 对于 Upsizing,内部缓冲可能限制输入 TREADY,建议通过仿真验证背压行为。
  4. 时钟域

    • 该 IP 核仅支持单一时钟域(ACLK),如需跨时钟域传输,需配合 AXI4-Stream Clock Converter IP 使用。
    • 启用寄存器管道可改善时序,但会增加 1-2 个时钟周期延迟。

总结

AXI4-Stream Data Width Converter IP 是一款高效、灵活的 AXI4-Stream 基础设施 IP 核,专为数据宽度转换而设计。其支持 Upsizing 和 Downsizing、低延迟的组合逻辑设计以及可选的寄存器管道功能,使其在视频处理、信号处理、网络数据包处理和 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、付费专栏及课程。

余额充值