[AXI] AXI MM2S Mapper

AXI MM2S Mapper IP 详细介绍

概述

AXI MM2S Mapper(Memory Map to Stream Mapper)是 AXI Video DMA(VDMA)模块的一个关键子组件,专为从 AXI4 内存映射域(Memory-Mapped Domain)到 AXI4-Stream 域(Stream Domain)的数据传输设计。它主要用于高效地将内存中的数据(如视频帧或图像数据)映射到流式接口,广泛应用于 FPGA 和 SoC 系统设计,特别是在视频处理、图像处理和实时数据流场景中。

AXI MM2S Mapper 的核心功能是通过读取内存映射域的数据(通常存储在 DDR 或 BRAM 中),将其转换为 AXI4-Stream 格式,供下游流式处理模块(如视频编码器、显示接口)使用。它支持帧同步、行缓冲和灵活的地址映射,特别适合视频数据流的处理需求。

该 IP 核的主要功能包括:

  • 高效数据映射:从 AXI4 内存映射域读取数据,转换为 AXI4-Stream 数据流。
  • 视频帧支持:支持视频帧的水平和垂直同步信号,适配视频数据格式。
  • 灵活配置:支持可配置的数据宽度、帧大小和地址步幅。
  • 高吞吐量:通过突发传输和行缓冲优化数据流传输性能。

主要特性

AXI MM2S Mapper IP 具有以下关键特性:

  1. AXI 协议兼容性

    • 符合 ARM AMBA AXI4 和 AXI4-Stream 协议规范。
    • AXI4 内存映射接口:支持 32、64、128、256、512 或 1024 位数据宽度,适用于高带宽内存访问。
    • AXI4-Stream 接口:支持 8、16、32、64、128、256、512 或 1024 位数据宽度,适用于流式数据传输。
    • 支持 AXI4 突发传输(最大 256 数据节拍)和 AXI4-Stream 的 TVALID/TREADY 握手机制。
  2. 数据映射功能

    • 从 AXI4 内存映射域读取数据,转换为 AXI4-Stream 数据流。
    • 支持视频帧格式,包括水平同步(Hsync)、垂直同步(Vsync)和帧同步信号。
    • 支持可配置的帧大小(水平像素数和垂直行数)和数据步幅(Stride)。
    • 支持 4 KB 地址边界保护,符合 AXI4 协议要求。
  3. 行缓冲机制

    • 内置行缓冲(Line Buffer),用于缓存一行的像素数据,优化突发传输效率。
    • 支持可配置的行缓冲深度(通常为 512、1024 或 2048 字节)。
    • 减少内存访问延迟,提高流式输出的连续性。
  4. 时钟支持

    • 同步模式:内存映射接口和流接口共享同一时钟(m_axi_mm2s_aclk)。
    • 异步模式:支持独立的流接口时钟(m_axis_mm2s_aclk),用于跨时钟域传输。
    • 最大频率:最高 200 MHz(7 系列,-1 速度等级),更高频率适用于 UltraScale 设备。
  5. 控制与状态

    • 通过 AXI4-Lite 接口(通常由 AXI VDMA 提供)配置映射参数,如帧地址、步幅和分辨率。
    • 提供帧同步和传输状态信号(如 TLASTTUSER),支持视频流控制。
    • 支持中断信号,通知帧传输完成或错误事件。
  6. 工具与设备支持

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

功能模块

AXI MM2S Mapper IP 的核心功能是从 AXI4 内存映射域读取数据并映射到 AXI4-Stream 域,其主要功能模块包括以下几个方面:

1. AXI4 内存映射读取模块

  • 功能:通过 AXI4 内存映射接口从内存读取数据。
  • 机制
    • 使用 AXI4 读地址通道(M_AXI_MM2S_ARADDRARVALIDARREADY)发起内存访问。
    • 支持突发传输(最大 256 数据节拍),自动分区以符合 4 KB 地址边界。
    • 根据帧地址和步幅(Stride)计算每次读取的地址增量。
    • 读取数据通过 AXI4 读数据通道(M_AXI_MM2S_RDATARVALIDRREADY)返回。
  • 应用:从 DDR 或 BRAM 读取视频帧或图像数据。

2. 行缓冲模块

  • 功能:缓存一行的像素数据,优化流式输出。
  • 机制
    • 使用内部 FIFO 或 RAM 实现行缓冲,深度可配置(512、1024 或 2048 字节)。
    • 从 AXI4 内存映射接口读取的数据首先存储到行缓冲。
    • 按行顺序将缓冲数据输出到 AXI4-Stream 接口,减少内存访问频率。
    • 支持动态调整缓冲深度,根据帧分辨率和数据宽度优化性能。
  • 应用:确保视频流的连续性,减少下游模块的等待时间。

3. AXI4-Stream 输出模块

  • 功能:将行缓冲中的数据转换为 AXI4-Stream 格式输出。
  • 机制
    • 通过 AXI4-Stream 接口(M_AXIS_MM2S)输出数据,支持 TVALIDTREADYTDATATLAST 信号。
    • 使用 TUSER 信号携带帧同步信息(如 Start of Frame,SOF)。
    • 使用 TKEEP 信号(可选)指示有效字节。
    • 支持帧结束(End of Frame,EOF)标志,通过 TLAST 信号标记。
  • 应用:将内存数据传输到流式处理模块,如视频编码器或 HDMI 接口。

4. 帧同步与控制模块

  • 功能:管理视频帧的同步信号和传输控制。
  • 机制
    • 根据配置的帧分辨率(水平像素数和垂直行数),生成帧同步信号(TUSER[0] 为 SOF)。
    • 支持外部同步信号输入(如 fsync),与视频时序对齐。
    • 通过 AXI4-Lite 控制接口(通常由 AXI VDMA 提供)设置帧地址、步幅和分辨率。
    • 提供状态反馈,如传输完成或错误中断。
  • 应用:支持视频帧的精确传输,适配标准视频格式(如 1080p、4K)。

5. 时钟与复位模块

  • 功能:管理时钟和复位信号,支持同步和异步模式。
  • 机制
    • 时钟
      • m_axi_mm2s_aclk:AXI4 内存映射接口时钟。
      • m_axis_mm2s_aclk:AXI4-Stream 接口时钟(异步模式)。
    • 复位
      • m_axi_mm2s_aresetn:内存映射接口低电平有效复位。
      • m_axis_mm2s_aresetn:流接口低电平有效复位(异步模式)。
    • 支持跨时钟域传输,确保数据一致性。
  • 应用:支持灵活的时钟域配置,适应复杂系统。

接口说明

以下是 AXI MM2S Mapper IP 的主要接口及其功能:

  1. AXI4 内存映射接口(M_AXI_MM2S)

    • 类型:AXI4 主接口(读通道)。
    • 信号
      • M_AXI_MM2S_ARADDR[C_ADDR_WIDTH-1:0]:读地址(通常 32 或 64 位)。
      • M_AXI_MM2S_ARVALIDARREADY:读地址握手。
      • M_AXI_MM2S_ARLEN[7:0]:突发长度(0-255 数据节拍)。
      • M_AXI_MM2S_ARSIZE[2:0]:突发大小(字节对齐)。
      • M_AXI_MM2S_ARBURST[1:0]:突发类型(INCR 或 FIXED)。
      • M_AXI_MM2S_RDATA[C_DATA_WIDTH-1:0]:读数据(32-1024 位)。
      • M_AXI_MM2S_RRESP[1:0]:读响应(OKAY、SLVERR 等)。
      • M_AXI_MM2S_RVALIDRREADY:读数据握手。
    • 功能:从内存(如 DDR)读取数据。
    • 时钟m_axi_mm2s_aclk
  2. AXI4-Stream 输出接口(M_AXIS_MM2S)

    • 类型:AXI4-Stream 主接口。
    • 信号
      • M_AXIS_MM2S_TDATA[C_STREAM_WIDTH-1:0]:流数据(8-1024 位)。
      • M_AXIS_MM2S_TVALIDTREADY:流握手。
      • M_AXIS_MM2S_TLAST:帧或行结束标志。
      • M_AXIS_MM2S_TKEEP[C_STREAM_WIDTH/8-1:0]:字节有效信号(可选)。
      • M_AXIS_MM2S_TUSER[0]:帧同步信号(SOF)。
    • 功能:输出流式数据到下游模块。
    • 时钟m_axis_mm2s_aclk(异步模式)或 m_axi_mm2s_aclk(同步模式)。
  3. 控制与状态接口

    • 类型:通常通过 AXI VDMA 的 AXI4-Lite 接口(S_AXI_LITE)间接控制。
    • 信号(由 VDMA 提供):
      • 配置寄存器:帧起始地址、步幅、水平/垂直分辨率。
      • 状态寄存器:传输完成、错误标志。
    • 中断
      • mm2s_introut:帧传输完成或错误中断。
    • 功能:配置映射参数,监控传输状态。
    • 时钟s_axi_lite_aclk(由 VDMA 提供)。
  4. 时钟与复位接口

    • m_axi_mm2s_aclk:内存映射接口时钟。
    • m_axis_mm2s_aclk:流接口时钟(异步模式)。
    • m_axi_mm2s_aresetn:内存映射接口复位。
    • m_axis_mm2s_aresetn:流接口复位(异步模式)。
    • 功能:提供时钟和复位控制,支持同步或异步设计。

配置方法

1. 在 Vivado 中添加 IP

  • AXI MM2S Mapper 通常作为 AXI VDMA IP 的子模块,无法单独在 Vivado IP Catalog 中添加。
  • 添加 AXI VDMA
    • 打开 Vivado 的 IP Catalog,搜索 AXI VDMA,添加到设计。
    • 双击 AXI VDMA IP,打开定制化对话框。
  • 配置 MM2S Mapper 相关参数
    • 通道选择
      • Enable MM2S Channel:启用 MM2S 通道(包含 MM2S Mapper)。
    • 数据宽度
      • MM2S Memory Map Data Width:选择 32、64、128、256、512 或 1024 位。
      • MM2S Stream Data Width:选择 8、16、32、64、128、256、512 或 1024 位。
    • 帧参数
      • Frame Size:设置水平分辨率(Hsize,最大 8192 像素)和垂直分辨率(Vsize,最大 8192 行)。
      • Stride:设置帧步幅(字节数,影响行地址增量)。
    • 行缓冲
      • MM2S Line Buffer Depth:选择 512、1024、2048 或更大(影响 BRAM 占用)。
    • 时钟配置
      • Enable Asynchronous Clocks:启用异步模式(独立 m_axis_mm2s_aclk)。
      • MM2S Clock Frequency:设置 m_axi_mm2s_aclk 频率(默认 100 MHz)。
      • Stream Clock Frequency:设置 m_axis_mm2s_aclk 频率(异步模式)。
    • 突发长度
      • MM2S Burst Size:选择 2、4、8、16、32、64、128 或 256 数据节拍,影响吞吐量。
    • 帧同步
      • Frame Sync Source:选择内部同步(Free-Run)或外部同步(fsync 信号)。

2. 连接与驱动

  • 硬件连接
    • AXI4 内存映射接口(M_AXI_MM2S
      • 连接到 AXI4 从设备(如 DDR 控制器、AXI Interconnect)。
    • AXI4-Stream 接口(M_AXIS_MM2S
      • 连接到 AXI4-Stream 从设备(如视频处理模块、HDMI 接口)。
    • AXI4-Lite 控制接口(由 VDMA 提供)
      • 连接到处理器(如 Zynq PS 或 MicroBlaze)通过 AXI Interconnect。
    • 中断
      • mm2s_introut 连接到中断控制器(如 Zynq GIC)。
    • 分配时钟信号:
      • 同步模式:所有接口使用 m_axi_mm2s_aclk
      • 异步模式:为流接口分配 m_axis_mm2s_aclk
    • 分配复位信号:
      • 确保 m_axi_mm2s_aresetnm_axis_mm2s_aresetn 与时钟同步。
    • 使用 Vivado 地址编辑器为 M_AXI_MM2S 分配地址空间。
  • 驱动程序
    • AXI MM2S Mapper 通过 AXI VDMA 的驱动程序间接控制。
    • Xilinx 提供官方 Linux 和裸机驱动(参考 Xilinx GitHub):
      • Linux 驱动:基于 V4L2 或 DMAEngine 框架,配置帧地址、分辨率和步幅。
      • 裸机驱动:提供 API(如 XVDma 库)用于初始化 VDMA 和配置 MM2S 参数。
    • 用户需通过 AXI4-Lite 接口配置 VDMA 寄存器,设置 MM2S 帧参数(如地址、Hsize、Vsize、Stride)。

3. 仿真与验证

  • 使用 Vivado 仿真工具验证 MM2S Mapper 功能:
    • 检查 AXI4 内存映射接口的突发传输和 4 KB 边界保护。
    • 验证 AXI4-Stream 接口的 TVALID/TREADY 握手、TLASTTUSER 信号。
    • 测试行缓冲的填充和输出,确保流数据的连续性。
    • 验证帧同步信号(SOF、EOF)与视频时序的正确性。
    • 检查中断触发(帧完成、错误),确保处理器正确响应。
  • 使用 AXI Verification IP或 AXI4-Stream Verification IP生成激励,验证协议合规性。
  • 分析波形,确认无数据丢失、协议错误或帧同步问题。

资源利用情况

AXI MM2S Mapper 的资源占用(作为 AXI VDMA 的一部分)取决于数据宽度、行缓冲深度和时钟模式。以下是典型资源利用情况(基于 7 系列、UltraScale 和 Zynq 设备,Vivado 生成):

  • 资源类型
    • LUT(查找表):300-2000,取决于数据宽度和行缓冲深度。
    • FF(触发器):400-2500,与 LUT 占用相关。
    • BRAM:0-4,行缓冲可能使用 BRAM(1024 字节约 1 BRAM,2048 字节约 2 BRAM)。
    • DSP 切片:不使用。
  • 配置示例
    • MM2S,64 位数据宽度,512 字节行缓冲,同步模式:约 300 LUT、400 FF、0 BRAM。
    • MM2S,128 位数据宽度,1024 字节行缓冲,异步模式:约 800 LUT、1000 FF、1 BRAM。
    • MM2S,256 位数据宽度,2048 字节行缓冲:约 1500 LUT、2000 FF、2 BRAM。
  • 最大频率
    • 7 系列(-1 速度等级):200 MHz。
    • UltraScale:250 MHz 或更高。

应用场景

AXI MM2S Mapper IP(作为 AXI VDMA 的一部分)适用于以下场景:

  1. 视频处理

    • 从 DDR 内存读取视频帧,传输到 AXI4-Stream 处理模块(如视频编码器、HDMI 接口)。
    • 支持高分辨率视频(如 1080p、4K),通过帧同步信号适配标准视频格式。
    • 配合 AXI VDMA 和 AXI4-Stream Interconnect。
  2. 图像处理

    • 将图像数据从内存映射到流式接口,供实时处理模块(如边缘检测、图像缩放)使用。
    • 支持非对齐的图像数据,通过步幅配置灵活映射。
  3. Zynq SoC 集成

    • 在 Zynq SoC 中,桥接 PS(ARM 处理器)和 PL 之间的视频数据传输。
    • 例如,PS 配置 VDMA 寄存器,PL 通过 MM2S Mapper 输出视频流。
  4. 实时数据流

    • 将内存中的数据(如传感器数据、音频流)映射到流式处理模块。
    • 行缓冲机制确保数据流的连续性,适合高吞吐量应用。

注意事项

  1. 帧参数配置

    • 帧分辨率(Hsize、Vsize)和步幅需与实际数据格式匹配,避免数据错位。
    • 步幅(Stride)应为数据宽度的整数倍,且满足内存对齐要求(通常 64 字节)。
  2. 行缓冲深度

    • 行缓冲深度需根据帧分辨率和数据宽度配置,过小可能导致数据流中断,过大增加 BRAM 占用。
    • 推荐深度:1080p(1920×1080)使用 2048 字节,4K(3840×2160)使用 4096 字节。
  3. 时钟域配置

    • 异步模式下,m_axis_mm2s_aclk 频率应与下游模块匹配,建议接近或高于 m_axi_mm2s_aclk
    • 确保时钟源稳定,使用 MMCM/PLL 生成时钟。
  4. 复位同步

    • m_axi_mm2s_aresetnm_axis_mm2s_aresetn 需在各自时钟域内同步,保持至少 16 个时钟周期(参考 UG761)。
    • 推荐使用异步复位同步释放机制,避免亚稳态问题。
  5. 帧同步信号

    • 外部同步模式(fsync)需与视频源时序精确对齐,避免帧丢失。
    • 内部同步模式(Free-Run)适合无外部时钟的场景,但需确保下游模块支持连续流。

总结

AXI MM2S Mapper IP(作为 AXI VDMA 的子模块,PG102)是一款高效的内存映射到流映射软核,专为 AXI4 和 AXI4-Stream 协议设计,支持从内存读取数据并转换为流式输出。其通过行缓冲、帧同步和突发传输功能,满足视频处理、图像处理和实时数据流等高吞吐量应用需求。

用户在使用时应注意帧参数、行缓冲深度和时钟域配置,合理设置分辨率和步幅,并通过仿真验证传输性能和帧同步正确性。该 IP 核通常与 AXI VDMA、AXI Interconnect 和 AXI4-Stream Interconnect 组合使用,构建高效的视频处理系统。

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、付费专栏及课程。

余额充值