当前位置: 首页 > news >正文

DMA与AXI DMA ip

文章目录

  • AXI DMA
    • Read Channel(读通道)
    • Write Channel(写通道)
  • # 其他选项
  • Scatter Gather Engine
    • 特点
    • 工作流程

AXI DMA

配置项说明
Component Name (axi_dma)DMA组件的名称,可以自定义。
Enable Asynchronous Clocks允许DMA在不同时钟域之间工作,适用于不同频率的模块。
Enable Scatter Gather Engine启用SG,DMA可处理不连续内存块的数据传输。
Enable Micro DMA启用微DMA,适合资源需求低的应用场景。
Enable Multi Channel Support启用多通道支持,允许DMA处理多个数据通道。
Enable Control / Status Stream启用控制/状态流,DMA可生成控制和状态信号的AXI流接口。
Width of Buffer Length Register (8-26 bits)指定描述数据传输长度的寄存器宽度,范围为8-26位,当前为14位。
Address Width (32-64 bits)AXI地址的宽度,可选32位或64位,当前为32位。

Read Channel(读通道)

配置项说明
Enable Read Channel启用DMA的读通道,从存储器读取数据传输到外设。
Number of Channels读通道的数量
Memory Map Data WidthAXI内存映射数据宽度
Stream Data WidthAXI流数据宽度
Max Burst Size每次传输的最大突发数据量

Write Channel(写通道)

配置项说明
Enable Write Channel启用DMA的写通道,将数据从外设传输到内存。
Number of Channels写通道的数量,当前设置为1个。
Memory Map Data WidthAXI内存映射数据宽度,当前为32位。
Stream Data WidthAXI流数据宽度,当前为8位。
Max Burst Size每次传输的最大突发数据量,当前设置为256。
Allow Unaligned Transfers允许未对齐的数据传输,适用于未严格对齐的数据传输场景。

# 其他选项

配置项说明
Enable Single AXI4 Data Interface使用单一的AXI4数据接口。
Use RxLength In Status Stream在状态流中包含接收数据长度。

Scatter Gather Engine

Scatter-Gather Engine 是一种DMA(Direct Memory Access)模式,在这种模式下,DMA控制器能够处理不连续的内存块的数据传输。简单来说,它允许数据分散(scatter)在不同的内存区域内,但能够聚集(gather)到连续的外设设备或其他内存区域,反之亦然。

特点

效率高:在大多数应用场景下,数据并不总是连续的。Scatter-Gather模式可以一次性处理多个不连续的内存区域,避免了传统DMA对连续内存的严格要求,从而提高了传输效率。
控制灵活:使用一个描述符链表(descriptor list)来描述多个内存块的地址和大小。DMA读取这些描述符,依次进行数据传输。
适用于大数据传输:特别适合网络通信、音视频处理等需要传输大数据的场景。

工作流程

准备描述符表:描述符表中包含源地址、目标地址、数据传输的长度、以及其他控制信息。
DMA读取描述符表:DMA根据描述符表中的信息,将数据从源地址读取并传输到目标地址。
自动处理多个块:当一个描述符的传输完成后,DMA会自动读取下一个描述符,继续传输。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【干货分享】Ftrans安全数据交换系统 搭建跨网数据传输通道
  • 工业大模型市场图谱:53个工业大模型全面梳理
  • CSS 笔记 1
  • 利用apache-pdfbox库修改pdf文件模板,进行信息替换
  • 【C++高阶】解锁C++的深层魅力——探索特殊类的奥秘
  • JVM面试真题总结(八)
  • 2024年华为9月4日秋招笔试真题题解
  • pdf文件转图片,base64或保存到本地
  • Linux 离线安装 Docker
  • 网络插件 Cilium 更换 Calico
  • 产品经理如何转型为AI产品经理,如何理解AI产品工程化
  • [产品管理-2]:产品经理的职责、在企业中的位置与定位
  • 加入图书页面以及和图片相关的viewmodel代码
  • CSS学习18--伸缩布局
  • io_uring异步IO
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • ComponentOne 2017 V2版本正式发布
  • Create React App 使用
  • django开发-定时任务的使用
  • express.js的介绍及使用
  • HashMap剖析之内部结构
  • IOS评论框不贴底(ios12新bug)
  • java中具有继承关系的类及其对象初始化顺序
  • jdbc就是这么简单
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • session共享问题解决方案
  • swift基础之_对象 实例方法 对象方法。
  • Terraform入门 - 1. 安装Terraform
  • Vue.js-Day01
  • 理解在java “”i=i++;”所发生的事情
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用Gradle第一次构建Java程序
  • 算法系列——算法入门之递归分而治之思想的实现
  • 通过git安装npm私有模块
  • 写代码的正确姿势
  • 阿里云移动端播放器高级功能介绍
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​一些不规范的GTID使用场景
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #QT项目实战(天气预报)
  • (4)事件处理——(7)简单事件(Simple events)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (Java入门)抽象类,接口,内部类
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (备份) esp32 GPIO
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (十八)三元表达式和列表解析
  • (十七)Flink 容错机制
  • (十一)c52学习之旅-动态数码管
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (算法二)滑动窗口