Zynq7000系列FPGA中的DMA控制器简介(一)

DMA控制器(DMAC)使用64位AXI主接口来执行与系统存储器和PL外围设备之间的DMA数据传输,操作频率同CPU_2x的时钟速率。传输由DMA指令执行引擎控制。DMA引擎运行在一个小指令集上,该指令集提供了一种灵活的指定DMA传输的方法。这种方法提供了比DMA控制器方法的能力更大的灵活性。

DMA引擎的程序代码由软件写入系统存储器的一个区域,该区域由控制器使用其AXI主接口访问。DMA引擎指令集包括用于DMA传输的指令和用于控制系统的管理指令。

控制器最多可配置八个DMA通道。每个通道对应于DMA引擎的处理器上运行的一个线程。当DMA线程执行加载或存储指令时,DMA引擎将内存请求推送到相关的读或写队列。DMA控制器使用这些队列来缓冲AXI读/写事务。控制器包含一个多通道FIFO(MFIFO),用于在DMA传输期间存储数据。

DMA引擎处理器上运行的程序代码将MFIFO视为包含一组用于DMA读写事务的可变深度并行FIFO。程序代码必须管理MFIFO,以便所有DMA FIFO的总深度不超过1024字节的MFIFO。
DMAC能够在没有处理器干预的情况下移动大量数据。源存储器和目标存储器可以位于系统中的任何位置(PS或PL)。DMAC的内存映射包括DDR、OCM、线性寻址Quad SPI读取内存、SMC内存和PL外围设备或连接到M_GP_AXI接口的内存。

用于与PS存储器进行传输的流控制方法使用AXI互连。使用PL外设的访问可以使用AXI流控制或DMAC的PL外设请求接口。没有指向PS I/O外设(IOP)的外设请求接口。对于PL外围AXI事务,在使用中断或状态轮询的编程IO方法中使用在CPU上运行的软件。

控制器有两组控制寄存器和状态寄存器。一组在安全模式下可访问,另一组在非安全模式下可以访问。软件通过控制器的32位APB从接口访问这些寄存器。整个控制器要么以安全模式操作,要么以非安全模式操作;不存在基于信道的模式混合。安全配置更改由slcr寄存器控制,需要重置控制器才能生效。

特征

DMA控制器提供:

  • DMA引擎处理器,具有用于DMA传输的灵活指令集:
  1. 灵活的分散-聚集内存传输
  2. 完全控制源和目的地的寻址
  3. 定义AXI事务属性
  4. 管理字节流
  • 八条缓存线,每条缓存线有四个字宽
  • 八个并发DMA通道线程
  1. 允许多个线程并行执行
  2. 发出最多8个读取和最多8个写入AXI事务的命令
  • 对PS中断控制器和PL的八次中断
  • DMA引擎程序代码中的八个事件
  • 128(64位)字MFIFO,用于缓冲控制器在传输过程中写入或读取的数据
  • 安全性
  1. 用于安全寄存器访问的专用APB从接口
  2. 整个控制器配置为安全或非安全
  • 内存到内存的DMA传输
  • 四个PL外设请求接口,用于管理进出PL逻辑的流量控制:每个接口最多可接受四个活动请求

DMA控制器的系统视图如图9-1所示。

9e65f935a9ac4b8da3e2caf3afbe9c5d.png

方框图

DMA控制器的框图如图9-2所示。

520018d7584949329593e0abea8407da.png

DMA指令执行引擎

DMAC包含一个指令处理块,使其能够处理控制DMA传输的程序代码。DMAC为每个线程维护一个单独的状态机。

  • 渠道仲裁
  1. 为活动DMA通道提供服务的循环方案
  2. 在为下一个DMA通道提供服务之前,先为DMA管理员提供服务
  3. 不支持更改仲裁程序
  • 渠道优先级
  • 以同等优先级响应所有活动(active)DMA通道
  • 不支持对DMA通道的优先级进行相对于其他DMA通道的任何更改

指令缓存

处理器内部通常包含一个或多个缓存,用于存储从主存中取出的指令和数据。缓存的目的是为了加速处理器访问这些指令和数据,因为从缓存中读取数据通常比从主存中读取要快得多。当一个线程(在处理器中执行的程序的一部分)请求从一个特定地址读取指令时,缓存首先会尝试查找这个地址是否在其存储的数据中。如果缓存中存在所请求的指令(即缓存命中),那么缓存会立即提供这个指令的数据给处理器,而不需要从主存中读取。这大大减少了处理器的等待时间。如果缓存中没有所请求的指令(即缓存未命中),那么线程会被暂停(stall),直到控制器使用AXI接口从主存中读取该指令并将其放入缓存中。这个过程被称为“缓存行填充(cache line fill)”。如果一条指令的大小超过四个字节,或者它跨越了缓存行的末尾(即这条指令的一部分在一个缓存行中,另一部分在另一个缓存行中),那么处理器需要执行多次缓存访问来获取这条完整的指令。这是因为缓存通常以固定大小的“缓存行”(cache line)为单位来存储数据,这些缓存行的大小通常是固定的,例如64字节或128字节。

当控制器正在通过AXI接口从主存中读取数据以填充缓存行时,它允许其他线程访问缓存。然而,如果在这个过程中另一个线程尝试访问的指令或数据不在缓存中(即发生另一个缓存未命中),那么该线程的指令流水线(pipeline)会被暂停(stall),直到第一个缓存行填充完成。

当指令缓存需要从系统内存中读取指令以填充其缓存行时,这个填充操作的延迟(latency)取决于系统内存的读取延迟。换句话说,如果系统内存(比如DRAM)的读取速度较慢,那么指令缓存填充操作就需要更长的时间。DMAC的性能高度依赖于64位AXI主接口(AXI master interface)的带宽。

读/写指令队列

当通道线程执行加载或存储指令时,控制器将该指令添加到相关的读取队列或写入队列。在AXI互连上发布事务之前,控制器将这些队列用作指令存储缓冲区。

多通道数据FIFO

DMAC使用多通道先进先出(MFIFO)数据缓冲器来存储它在DMA传输期间读取或写入。

用于指令获取和DMA传输的AXI主接口

程序代码存储在系统存储器的一个区域中,控制器使用64位AXI主接口访问该区域。AXI主接口还使DMA能够将数据从源AXI从设备传输到目标AXI从机。

用于寄存器访问的APB从接口

控制器通过32位APB从接口响应下列两个地址范围,这两个地址范围被软件用作读取和写入控制寄存器。

  • 非安全寄存器访问
  • 安全的寄存器访问

中断接口

中断接口允许硬件事件或软件条件有效地将通知(或称为中断信号)传递给中断控制器(Interrupt Controller)。当这些事件或条件发生时,它们会触发中断,中断控制器随后会暂停当前正在执行的指令(如果处理器正在执行),并跳转到特定的中断处理程序(Interrupt Handler)或中断服务例行程序(Interrupt Service Routine, ISR)以处理该中断。

PL外设DMA请求接口

PL Peripheral DMA Request Interface 通常指的是在可编程逻辑中,用于支持具备DMA能力的外设与DMA控制器之间进行通信的接口。这个接口允许外设在不需要处理器干预的情况下,直接访问系统内存,从而大大提高数据传输的效率。

PL外部设备请求接口支持连接具有DMA功能的外部设备驻留在PL中。每个PL外围请求接口彼此异步,并且与DMA本身异步。

重置初始化接口

用于在设备退出复位状态后,由软件来初始化直接内存访问控制器(Direct Memory Access Controller,简称DMAC)的操作状态的一个接口。当系统启动、重启或经历某个特定的事件导致DMAC需要重置时,这个接口就非常重要。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电路笔记】-MOSFET放大器

MOSFET放大器 文章目录 MOSFET放大器1、概述2、电路图3、电气特性3.1 ** I D = F ( V G S ) I_D=F(V_{GS}) ID​=F(VGS​)**特性3.2 I D = F ( V D S ) I_D=F(V_{DS}) ID​=F(VDS​)特性4、MOSFET放大器5、输入和输出电压6、电压增益7、总结1、概述 在前面的文章中,我们已经…

基本的 Spring Boot 配置步骤和常见的配置项【创建,配置,日志,数据库,安全,MVC】

基本的 Spring Boot 配置步骤和常见的配置项【创建,配置,日志,数据库,安全,MVC】 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、…

EAK高压电阻器-引线高压电阻器-厚膜高压电阻器

描述 EAK高压电阻器是扁平高压电阻器,完全满足低感、稳定和精密无源元件的所有要求。 扁平高压电阻器最适合作为组装在 PCB 上的有线元件,但也可以用作 SMD 元件。 我们提供 HVR、HPR、HVI、HVD 和 HVS 系列的扁平高压电阻器,这些电阻器具…

AI+零信任 | 易安联亮相首届“矩阵杯”网络安全大赛

6月26日, 首届“矩阵杯”网络安全大赛 在青岛国际会议中心举行。大赛由360数字安全、华云安主办,赛宁网安、永信至诚、红客社区协办,致力于推动提升全民网络安全意识、发现顶尖安全人才、鼓励技术创新发展,推动安全行业共建共享…

Cambrian-1:探索以视觉为中心的多模态LLM新纪元

一、摘要 论文:Cambrian-1: A Fully Open, Vision-Centric Exploration of Multimodal LLMs,https://arxiv.org/abs/2406.16860 主页:https://cambrian-mllm.github.io/ 代码:https://github.com/cambrian-mllm/cambrian 本文研发…

堆栈与堆内存 - C#

探索 C# 编程中内存管理的细微差别,区分值类型和引用类型,理解动态和静态内存分配,评估访问效率… 背景 以下是 C# 中堆栈和堆内存之间的主要区别列表。这适用于初学者和专业的 C# 开发人员。 C# 中栈和堆内存的区别 概括 现在&#xff0c…

主流电商平台API接口(天猫获得淘宝商品详情,获得淘宝app商品详情原数据 ,获得淘口令真实url API,按图搜索淘宝商品(拍立淘) API )

主流电商平台商品接口在电商企业中具有重要应用价值。通过商品接口,电商企业可以实现商品同步功能: 商品信息同步:通过接口可以实时同步主流电商平台上的商品信息,包括商品标题、价格、库存、销量等数据,确保企业在自…

RabbitMQ实践——搭建单人聊天服务

大纲 创建Core交换器用户登录发起聊天邀请接受邀请聊天实验过程总结代码工程 经过之前的若干节的学习,我们基本掌握了Rabbitmq各个组件和功能。本文我们将使用之前的知识搭建一个简单的单人聊天服务。 基本结构如下。为了避免Server有太多连线导致杂乱,下…

哈喽GPT-4o,对GPT-4o 数据分析Data Analysis的思考与看法

目录 上传一个Excel给Data Analysis。Prompt:请问这个数据集是做什么的Prompt:请问书籍的定价如何,请用合适的图表展示它的售价情况Prompt:请统计书名列中出现最多的名称,然后使用词云将其可视化。Prompt:请…

58.鸿蒙系统app(HarmonyOS)(ArkUI)更改应用程序图标

替换xx\MyApplication4.30\entry\src\main\resources\base\media目录下icon.png文件 54.HarmonyOS鸿蒙系统 App(ArkTS)tcp socket套接字网络连接收发测试_鸿蒙socket连接测试-CSDN博客

『Django』模型入门教程-操作MySQL

theme: smartblue 点赞 关注 收藏 学会了 本文简介 一个后台如果没有数据库可以说废了一半。日常开发中大多数时候都在与数据库打交道。Django 为我们提供了一种更简单的操作数据库的方式。 在 Django 中,模型(Model)是用来定义数据库结构的类。每个模型类通常对…

C++之STL(十二)

1、容器适配器 #include <iostream> #include <stack> #include <list> #include <queue> #include <functional> #include <iterator>using namespace std;int main() {// 栈&#xff08;先进后出filo&#xff09;stack<int, list<…

基于PHP的长城景区信息管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的长城景区信息管理系统 一 介绍 此长城景区信息管理系统基于原生PHP开发&#xff0c;数据库mysql。系统角色分为用户和管理员。 技术栈&#xff1a;phpmysqlphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 浏览长城景区信息(旅…

Unity解决报错:Execution failed for task ‘:unityLibrary:BuildIl2CppTask‘

目录 编辑器版本2020.3.33f1 及 2021.3.15f1 直接导出apk或aar报错(虽然会自动生成temp的AS工程&#xff0c;经过打开验证 也是无解的)&#xff1b; 唯一解决办法&#xff1a;Unity导出As工程没问题&#xff1b; 编辑器版本2020.3.33f1 及 2021.3.15f1 直接导出apk或aar报…

[电子电路学]电路分析基本概念1

第一章 电路分析的基本概念和基本定律 电路模型 反映实际电路部件的主要电磁性质的理想电路元件及其组合&#xff0c;是实际电路电气特性的抽象和近似。 理想电路元件 实际电路器件品种繁多&#xff0c;其电磁特性多元而复杂&#xff0c;分析和计算时非常困难。而理想电路元件…

一款开源、免费、现代化风格的WPF UI控件库

前言 今天大姚给大家分享一款开源&#xff08;MIT License&#xff09;、免费、现代化风格的WPF UI控件库&#xff1a;ModernWpf。 项目介绍 ModernWpf是一个开源项目&#xff0c;它为 WPF 提供了一组现代化的控件和主题&#xff0c;使开发人员能够创建具有现代外观的桌面应…

【pytorch09】数学运算

1.数学操作 add/minus/multiply/dividematmulpowsqrt/rsqrtround 2.加减乘除 加法 矩阵乘法 torch.mm 只适用于2d torch.matmul 要分清楚是矩阵元素相乘&#xff0c;还是矩阵相乘 例子 x一共有4张照片&#xff0c;每张照片打平成784的向量&#xff0c;希望降维得到[4,51…

戴尔笔记本重装系统?笔记本卡顿失灵?一键重装系统!

随着科技的快速发展&#xff0c;笔记本电脑已成为我们日常生活和工作中不可或缺的工具。然而&#xff0c;随着时间的推移&#xff0c;笔记本可能会遇到各种问题&#xff0c;如系统卡顿、失灵等。这时&#xff0c;重装系统往往是一个有效的解决方案。本文将详细介绍如何在戴尔笔…

ONLYOFFICE 8.1编辑器桌面应用程序来袭——在线全面测评

目录 ✈下载✈ &#x1f440;界面&#x1f440; &#x1f44a;功能&#x1f44a; &#x1f9e0;幻灯片版式的重大改进&#x1f9e0; ✂无缝切换文档编辑、审阅和查看模式✂ &#x1f3b5;在演示文稿中播放视频和音频文件&#x1f3b5; &#x1f917;版本 8.1&#xff1a…

一键生成AI动画视频?Animatediff 和 ComfyUI 更配哦!

大家好我是极客菌&#xff01; 之前我分享过 Animatediff 在 WebUI 中的应用&#xff0c;最近不是在分享 ComfyUI 嘛&#xff0c;那我们也来讲讲 Animatediff 在 ComfyUI 的应用。 如果从工作流和内存利用率的角度来说&#xff0c;Animatediff 和 ComfyUI 可能更配一些&#…