【Xilinx DMA SG】Xilinx DMA SG 模式

DMA简介:

AXI 直接存储器访问 (AXI DMA) IP 提供高带宽直接存储器 AXI4 存储器映射和 AXI4-Stream IP 接口之间的访问。它SG模式还可以从中央处理中卸载数据移动任务 基于处理器的系统中的单元 (CPU)。初始化、状态和管理寄存器是 通过 AXI4-Lite 从接口访问。图说明了功能 核心的组成。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

1、系统内存和stream目标之间的主要高速 DMA 数据移动是 通过 AXI4 Read Master 到 AXI MM2S Stream Master,以及 AXI S2MM Stream Slave 到 AXI4 写入主机。 AXI DMA 还支持多达 16 个多通道的数据移动 SG模式下的 MM2S 和 S2MM 路径。

2、MM2S 通道和 S2MM 通道独立运行。 AXI DMA 提供 4 KB 地址边界保护,自动突发分区,以及提供能力 使用几乎全部带宽功能将多个传输请求排队 AXI4-Stream 总线。此外,AXI DMA 提供字节级数据重新对齐 允许内存读写从字节偏移位置开始。

3、MM2S 通道支持 AXI 控制流,用于将用户应用程序数据发送到 目标 IP。对于 S2MM 通道,提供 AXI 状态流用于接收用户 来自目标 IP 的应用程序数据。

4、可选的 SG Engine 从系统中获取和更新缓冲区描述符 存储器通过 AXI4 SG 读/写主接口。可选描述符 提供排队以最大化主要数据吞吐量。

SG模式描述:

本节定义了 S2MM(接收)和 MM2S(传输)Scatter Gather 的字段 AXI DMA 何时配置为分散/聚集模式的描符。描述符 由 8 个 32 位基本字和 0 或 5 个用户应用程序字组成。描述符有 之后对 64 位地址的支持和对用户应用程序数据的支持。多种的 通过帧开始和帧结束标志支持每个数据包的描述符。 完成状态和完成时中断也包括在内。缓冲区长度可以 描述每个描述符最多 8 MB 的数据缓冲区。需要两个描述符链 两种数据传输方向,MM2S和S2MM。

AXI DMA框图

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODczNjQ2,size_16,color_FFFFFF,t_70#pic_center

引脚描述:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODczNjQ2,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODczNjQ2,size_16,color_FFFFFF,t_70

补充重点描述:

  • s_axi_lite_*:上位机通过此接口配置AXI DMA的内部寄存器。
  • m_axi_mm2s_* :上位机到DMA的写通道,传输的是上位机需要写入到外设的数据。
  • m_axi_s2mm_*:上位机到DMA的读通道,传输的是外设写入上位机的数据:即上位机从外设读取的数据。
  • m_axis_mm2s_*:DMA到外设的写通道,DMA通过此通道将上位机的数据写入外设。
  • s_axis_s2mm_*:DMA到外设的读通道,DMA通过此通道读取外设需要传给上位机的数据。
  • m_axis_mm2s_cntrl_*:DMA配置外设的控制通道(未使用)
  • s_axis_s2mm_sts_*:DMA读取外设的状态通道(未使用)
  • m_axi_sg_*:SG模式下的读写内存映射的通道

AXI DMA寄存器内存地址映射

SG模式

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODczNjQ2,size_16,color_FFFFFF,t_70#pic_center

Scatter Gather 描述符

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODczNjQ2,size_16,color_FFFFFF,t_70#pic_center

SG模式下典型的系统连接结构

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODczNjQ2,size_16,color_FFFFFF,t_70#pic_center

SG DMA使用流程

SG模式:

  • AXI DMA 操作需要一个内存驻留数据结构,其中包含 DMA 列表 要执行的操作。这个指令列表被组织成所谓的 一个描述符链。每个描述符都有一个指向下一个要处理的描述符的指针。这 链中的最后一个描述符然后指向链中的第一个描述符。
  • Scatter Gather 操作允许使用多个描述符来描述一个数据包。 此功能的典型用途是允许从以下位置存储或获取标头 来自另一个位置的内存和有效载荷数据。利用的软件应用程序 这可以提高吞吐量。为了描述缓冲区描述符链中的数据包,开始 帧位 (TXSOF) 和帧结束位 (TXEOF) 被利用。当 DMA 获取一个 TXSOF 位设置的描述符,则触发数据包的开始。包继续 获取后续描述符,直到它获取具有 TXEOF 位设置的描述符。
  • 在接收 (S2MM) 通道上,当开始接收数据包时,AXI DMA 标记 带有 RXSOF 的描述符,向软件表明与此关联的数据缓冲区 描述符包含数据包的开头。如果正在接收的数据包以字节为单位更长 计数超过描述符中指定的数量,下一个描述符缓冲区用于存储 接收数据包的剩余部分。这个获取和存储过程一直持续到 整个接收数据包已传输。结束时正在处理的描述符 接收到的数据包由 AXI DMA 标记,RXEOF=1。这表明 软件认为与此描述符相关的缓冲区包含数据包的结尾。
  • 每个描述符在状态字段中包含实际传输的字节数 那个特定的描述符。接收数据包传输的总字节数可以 由软件通过从 RXSOF 描述符到 描述符链到 RXEOF 描述符。 Scatter Gather 继续获取一个额外的 描述符和存储。这在很大程度上提高了 DMA 性能。
  • Scatter Gather 操作从设置控制寄存器和描述符指针开始。 以下按顺序列出了启动 AXI DMA 操作所需的最少步骤:

MM2S 通道:

  1. 在内存中开辟缓存空间,制作链表
  1. 通过 AXI4_LITE 总线将第一个 Descriptor 的地址写入 MM2S_CURDESC 寄存器
  1. 写寄存器 MM2S_DMACR.RS=1 启动 DMA,如果需要,打开 MM2S_DMACR.IOC_IrqEn 中断,结束后会发出中断
  1. 将最后一个 Descriptor 地址写入 MM2S_TAILDESC 寄存器,触发 DMA 开始通过 M_AXI_SG 总线抓取链表的 Descritptor,等 package 传输结束,读取下一个 Descriptor 信息,直到结束。

S2MM 通道:

  1. 在内存中开辟缓存空间,制作链表
  1. 通过 AXI4_LITE 总线将第一个 Descriptor 的地址写入 S2MM_CURDESC 寄存器
  1. 写寄存器 S2MM_DMACR.RS=1 启动 DMA,如果需要,打开 S2MM_DMACR.IOC_IrqEn 中断,结束后会发出中断
  1. 将最后一个 Descriptor 地址写入 S2MM_TAILDESC 寄存器,触发 DMA 开始通过 M_AXI_SG 总线抓取链表的 Descritptor,等 package 传输结束,读取下一个 Descriptor 信息,直到结束。
  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linest-5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值