Zynq7000系列FPGA中的DMA控制器——PL外设请求接口

news2024/11/13 9:38:46

图9-4中展示了PL外设请求接口主要由两部分组成:PL外设请求总线和DMAC确认总线。这两部分分别使用特定的前缀进行标识,具体如下:

  • PL外设请求总线(PL Peripheral Request Bus)
    • 前缀:DR
    • 功能:用于PL外设向DMAC(直接内存访问控制器)发送请求信号。这些请求信号可能包括数据传输请求、中断请求或其他类型的请求。
    • 特点:该总线允许多个PL外设同时向DMAC发送请求,并且每个请求都可以被DMAC单独处理。
  • DMAC确认总线(DMAC Acknowledge Bus)
    • 前缀:DA
    • 功能:用于DMAC向PL外设发送确认信号。这些确认信号表示DMAC已经接收到来自PL外设的请求,并正在处理或已经处理完成。
    • 特点:该总线确保PL外设能够了解它们发出的请求是否已被DMAC接收和处理。通过DMAC的确认信号,PL外设可以采取适当的后续操作,如继续发送数据、进入等待状态或执行其他任务。

两种总线都使用AXI协议所描述的有效就绪握手。

  • PL外围设备使用DMA{3:0}_DRTYPE[1:0]寄存器:用于指定DMA传输的类型,DMA{3:0}_DRTYPE[1:0] 可以设置为不同的值来请求单一AXI事务(single AXI transaction)或AXI突发事务(AXI burst transaction),还可以用于确认一个刷新请求(flush request)。
  • DMA{3:0}_DATYPE[1:0] 寄存器(在DMAC中):用于向PL外设发送信号,指示DMAC何时完成了请求的单一AXI事务或AXI突发事务。DMA{3:0}_DATYPE[1:0] 的值将被DMAC设置,以通知PL外设DMA传输的状态。它还可以用于由DMAC发起刷新请求,这通常用于清空或重置DMA通道的状态。
  • DMA{3:0}_DRLAST 信号(在PL外设中):用于通知DMAC,当前AXI事务的最后一个数据周期已经开始。当PL外设发送完一个AXI事务的所有数据,并且这是该事务的最后一个数据周期时,它会设置DMA{3:0}_DRLAST 信号。这允许DMAC知道何时可以结束当前事务并释放相关资源。
握手规则

当DMA通道线程处于活动状态,即不处于停止状态时,DMAC使用表9-1所示的DMA握手规则。

注:上表中所有信号都与DMA{3:0}_ACLK时钟同步

将PL外围接口映射到DMA通道

DMAC使软件能够将PL外围设备请求接口分配给任何DMA通道。当DMA通道线程执行DMAWFP时,PL外设[4:0]字段中编程的值指定与该DMA通道相关联的PL外设。

PL外设-长度由DMAC管理

DMAC长度管理是DMAC控制要传输的数据总量的过程。使用PL外围设备请求接口,当需要在任一方向上传输数据时,PL外围设备通知DMAC。DMA通道线程控制DMAC如何响应PL外围设备请求。

以下约束条件适用于DMAC长度管理:

  • 单个请求与突发请求的数据量约束

来自一个PL(Programmable Logic,可编程逻辑)外设的所有单个请求的数据总量必须小于该PL外设的突发请求的数据量。这意味着,如果你计划进行一系列的单次数据传输(single requests),它们的总数据量不能超过你为该外设配置的突发传输(burst request)的数据量。

  • CCRn寄存器控制数据传输量

CCRn(Channel Control Register n,通道控制寄存器n)用于控制突发请求和单个请求的数据传输量。这通常涉及到设置传输的数据块大小、是否启用中断等。

Arm(ARM架构的开发商)建议,在DMA通道的数据传输正在进行时,不要更新相应的CCRn寄存器。这是为了避免在数据传输过程中由于寄存器更新导致的潜在问题,如数据传输的意外中断或数据损坏。

  • 突发请求后的单个请求限制

当PL外设发送一个突发请求后,它必须等待DMAC确认该突发请求已经完成,才能发送下一个单个请求。这是为了确保DMAC能够按顺序处理请求,避免数据冲突或丢失。如果PL外设在DMAC完成突发请求之前就发送了单个请求,可能会导致数据传输的混乱或错误。

DMAWFP指令是用于当程序线程需要暂停执行,直到可编程逻辑(PL)外设请求接口接收到任何类型的请求时。

如果请求FIFO中的头条目请求类型为:

  • Single(单个请求):如果请求FIFO中的头条请求是单个请求,DMAC将从FIFO中弹出该条目,并继续程序执行。这意味着DMA控制器已经识别并处理了该单个请求,因此程序可以继续进行其他操作或等待下一个请求。

  • Burst(突发请求):如果请求FIFO中的头条请求是突发请求,DMAC将不会从FIFO中弹出该条目,而是继续程序执行。这是因为突发请求通常涉及多个连续的数据传输,可能需要一些时间来完成。DMAC可能会开始处理这个突发请求,但程序线程不需要等待整个突发请求完成,可以继续执行其他任务。一旦突发请求完成,DMAC会更新状态或发送中断,以通知程序线程该请求已完成。

使用DMAWFP指令的目的是允许程序线程在等待PL外设请求时进入休眠或低功耗状态,从而提高系统的整体效率。当请求到达时,DMAC会唤醒程序线程并继续执行后续操作。这种机制允许实现更高效的数据传输和资源管理。

注意:突发请求条目保留在请求FIFO中,直到DMAC执行DMAWFP突发指令或DMAFLUSHP指令。

当程序线程需要暂停执行,直到可编程逻辑(PL)外设请求接口接收到一个突发请求时,应该使用DMAWFP burst指令。

如果请求FIFO中的头条目请求类型为:

基于你给出的描述,这里是对DMA控制器(DMAC)处理FIFO中不同请求类型的行为解释:

  • Single(单个请求):当请求FIFO中的头条请求是单个请求时,DMAC会移除这个请求条目从FIFO中。但是,尽管请求已经被处理(从FIFO中移除),程序执行仍然保持挂起(halted)状态。
  • Burst(突发请求):当请求FIFO中的头条请求是突发请求时,DMAC会弹出(pop)这个请求条目从FIFO中,并开始处理这个突发请求。一旦突发请求开始被处理,程序执行会继续进行。这是因为DMAC已经接收到了它期望的突发请求类型,所以可以安全地继续执行其他任务或开始处理与这个突发请求相关的后续操作。

DMALDP 指令是用于当DMAC完成AXI读事务后,向可编程逻辑外设发送确认信号的指令。相似的是,DMASTP 指令是在DMAC完成AXI写事务后,用于向可编程逻辑外设发送确认信号的指令。DMA{3:0}_DATYPE[1:0]总线是用于DMAC向可编程逻辑外设发送事务完成确认信号的机制之一。

当rvalid和rlast为高时,DMAC发送读取事务的确认,当bvalid为高时,发送写入事务的确认。当系统具有缓冲AXI写事务的能力时,DMAC可能会在写数据到达最终目的地之前向可编程逻辑外设发送一个确认信号。告知写事务已经被接收并开始处理。然而,此时写数据可能仍然停留在AXI Slave的内部缓冲区中,尚未被写入最终目的地。

DMAFLUSHP指令是用于重置PL外设请求接口的请求FIFO的。当DMAC执行DMAFLUSHP指令后,它会忽略来自PL外设的请求,直到PL外设确认了这个刷新请求。这个过程允许DMAC和PL外设之间进行同步。

事件和中断

DMAC支持16个事件,其中前8个事件可以作为中断信号(IRQs [7:0])输出。这些中断信号可以同时发送到处理器系统(PS)的中断控制器和可编程逻辑(PL)部分。DMAC内部使用这些事件来实现通道到通道(channel-to-channel)或管理器到通道(manager-to-channel)的交叉触发。例如,一个DMA通道完成数据传输后,它可以触发一个事件,该事件可以被另一个DMA通道或DMAC的管理器捕获,以开始新的数据传输或执行其他任务。

表9-2展示了事件和中断之间的映射。

DMASEV(DMA Set Event)指令用于触发DMAC中指定的事件/中断资源。这个资源既可以被配置为事件(event),也可以被配置为中断(interrupt),这取决于INTEN(Interrupt Enable)寄存器的设置。

  • 事件(Event)模式:如果INTEN寄存器将特定的事件/中断资源配置为事件模式,当DMAC执行DMASEV指令时,它会为指定的资源生成一个事件。当DMAC执行DMAWFE(DMA Wait For Event)指令并等待该事件资源时,如果事件已经被触发(即之前通过DMASEV设置了该事件),那么DMAWFE指令会返回并继续执行后续代码,同时清除该事件。
  • 中断(Interrupt)模式:如果INTEN寄存器将特定的事件/中断资源配置为中断模式,当DMAC执行DMASEV指令时,它会将对应的中断信号irq<event_num>置高,其中event_num是指定的事件资源的编号。要清除这个中断,用户必须向INTCLR(Interrupt Clear)寄存器写入相应的值。通常,写入与中断源相对应的位掩码可以清除对应的中断。
安全性

在DMAC从复位状态退出时,其安全性的配置由复位初始化接口信号的状态决定。具体地,这些信号配置的安全性涉及到以下几个方面:

  • DMA管理器(DMA manager):
    • 通过SLCR(Security Level Change Register,安全级别更改寄存器)的TZ_DMA_NS位来配置DMA管理器的安全性。
    • 如果TZ_DMA_NS位被设置为0,DMA管理器将工作在安全状态下,仅执行安全的取指。
    • 如果TZ_DMA_NS位被设置为1,DMA管理器将工作在非安全状态下,仅执行非安全的取指。
  • 事件/中断资源(Event/Interrupt resources):
    • 通过SLCR的TZ_DMA_IRQ_NS位来配置事件/中断资源的安全性。
    • 该位的具体配置决定了事件/中断资源是在安全状态下工作还是非安全状态下工作。
  • PL外设请求接口(PL peripheral request interfaces):
    • 通过SLCR的TZ_DMA_PERIPH_NS位来配置PL外设请求接口的安全性。
    • 同样地,该位的具体配置决定了PL外设请求接口是在安全状态下工作还是非安全状态下工作。

当DMA管理器执行DMAGO(DMA Go)指令来启动一个DMA传输时,它会根据通道的配置来设置该通道的安全状态。如果通道被配置为非安全(ns位被设置),则它可以在非安全环境中访问;如果通道被配置为安全,则它只能在安全环境中访问。

DMA通道的动态非安全状态可以通过Channel Status寄存器中的CNS位来提供。这个位反映了DMA通道当前的安全状态:

  • 如果CNS位被设置为0,表示DMA通道当前在安全状态下运行。
  • 如果CNS位被设置为1,表示DMA通道当前在非安全状态下运行。

软件可以通过读取这个CNS位来确定DMA通道的安全状态,从而采取相应的措施来保护数据或控制DMA传输的行为。

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

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

相关文章

13个行业数据分析指标体系如何建设100问

提供针对13个行业的数据分析指标体系的全面指南&#xff0c;涵盖各行业的关键指标和分析维度&#xff0c;帮助读者深入了解和构建有效的指标体系。以下是文章的主要内容&#xff1a; 电商行业数据指标体系&#xff1a;包括客户价值、商品、网站流量、整体运营、市场营销活动、市…

Vue2 - 首页登录实现随机验证码组件的封装与实现详解(详细的注释及常见问题汇总)

在网站首页等登录时,随机验证码在现代网络应用中扮演着重要的安全角色。为了帮助开发者轻松集成和使用随机验证码功能,本文将介绍如何利用 Vue.js 2 封装一个简单而功能强大的随机验证码组件。让你能够快速理解并应用这一组件到你的项目中。 一、解决方案 本文提供了完美便捷…

事件sigma代数(两分钟学会~)

在概率论的时候&#xff0c;还没开始进入正题&#xff0c;上来一个事件sigma代数&#xff0c;人就直接懵逼了&#xff0c;这啥东西啊&#xff0c;那今天咱就结合一个例子来解释一下事件sigma代数。 首先我们看一下定义&#xff1a; 这是南开大学杨振明第二版书里面的一个定义&a…

纯血鸿蒙Beta版本发布,中国华为,站起来了!

2024年6月21日至23日&#xff0c;华为开发者大会2024&#xff08;HDC 2024&#xff09;于东莞盛大举行。 此次大会不仅在会场设置了包括鸿蒙原生应用、统一生态统一互联等在内的11个展区&#xff0c;以供展示HarmonyOS NEXT的强大实力&#xff0c;还对外宣布了HarmonyOS的最新进…

如何在浏览器中查看网页的HTML源代码?

如何在浏览器中查看网页的HTML源代码&#xff1f; 浏览html网页&#xff0c;查看其源代码&#xff0c;可以帮助我们了解该版网页的信息以及架构&#xff0c;每个浏览器都是允许用户查看他们访问的任何网页的HTML源代码的。以下编程狮小师妹就介绍几个常见浏览器的查看网页 HTM…

UI Toolkit系统学习

UI Toolkit 此文章用于学习UnityUI系统&#xff0c;手头的项目做完会来完善 官方文档 Unity上方菜单栏点击Window->UI Toolkit->Samples可以看UI Toolkit中的很多样例 使用 UI Toolkit 和 UI Builder 制作物品编辑器 在文件夹中右键->Create->UI Toolkit->Edi…

上午写的博客,下午就上了bing首页,惊不惊喜,意不意外

今天上午写了一篇《用免费的“山水博客”来管理你的离线文章》的博客&#xff0c;没想到下午在必应就搜到了&#xff0c;而且还是首页第四个。 不由的让人感概&#xff0c;以前写了那么多的博客&#xff0c;想将排名排前点&#xff0c;在网上找了不少秘籍&#xff0c;都没成功&…

昇思25天学习打卡营第4天|数据集Dataset

数据集 Dataset 介绍 之前说过&#xff0c;MindSpore是基于Pipeline&#xff0c;通过Dataset和Transformer进行数据处理。Dataset在其中是用来加载原始数据的。mindSpore提供了数据集加载接口&#xff0c;可以加载文本、图像、音频等&#xff0c;同时也可以自定义加载接口。此…

算法刷题日志 —— 数组和位运算

文章目录 [461. 汉明距离](https://leetcode.cn/problems/hamming-distance/submissions/542447020/)[448. 找到所有数组中消失的数字](https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/submissions/)[136. 只出现一次的数字](https://leetcode.cn/pro…

中小企业的数字化转型业务场景落地案例

引言&#xff1a;随着商业活动的复杂化和全球化程度的提高&#xff0c;合同作为商业交易的重要组成部分&#xff0c;其数量、条款和复杂性都在不断增加。企业面临着越来越多的合同管理挑战&#xff0c;包括合同数量增多、条款繁琐、文件分散存储等问题。而中小企业由于管理不到…

食品安全管理员2024年全国通用考试题库资料。

61.产品的最小销售单元&#xff0c;其包装的表面积若小于&#xff08;&#xff09;cm2&#xff0c;可以仅标注产品名称、生产者名称和生产日期 A.10 B.15 答案&#xff1a;A 62.禁在猪饲料中添加各类"瘦肉精"。常见的"瘦肉精"是(  )。 A.苯甲酸钠 …

日元跌破160大关,日本当局何时干预?

KlipC报道&#xff1a;6月26日&#xff0c;日元又跌了&#xff0c;美元兑日元跌破160的整关口&#xff0c;超过了4月日本官员在市场上干预的水平&#xff0c;创1986年来新低。美联储降息的可能性降低&#xff0c;市场预计日元有可能延续当前的弱势。 KlipC分析师David表示&…

短视频带货实战营(高阶课),从0到1做个赚钱的抖音号(17节课)

课程目录&#xff1a; 1-短视频带贷先导课_1.mp4 2-账号搭建_1.mp4 3-账号养号涨粉套路_1.mp4 4-开通橱窗_1.mp4 5-管家式选品_1.mp4 6-六个能赚钱的赛道_1.mp4 7-选品之精选联盟_1.mp4 8-好物分享的三种形式_1.mp4 9-短视频之图文课_1.mp4 10-短视频之剪辑课_1.mp4 …

【软件测试】白盒测试与接口测试详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是白盒测试 白盒测试是一种测试策略&#xff0c;这种策略允许我们检查程序的内部结构&a…

“所得”如何超越“所见”?合合信息扫描全能王发布扫描“黑科技”

数字化时代&#xff0c;扫描工具正变得越来越智能和个性化。除了常规的文件扫描外&#xff0c;无论是在工作中&#xff0c;还是在旅途里&#xff0c;人们也经常会使用手机扫描褶皱、脏污的文件&#xff0c;或是旅行交通地图、博物馆展品介绍等&#xff0c;打造独属于自己的随身…

上市公司银行专利申请数据集(2003-2022年)

数据简介&#xff1a;上市商业银行的专利申请数据是可作为金融科技创新水平的关键指标&#xff0c;这些数据反映了银行在金融技术领域的创新能力。发明专利因其创新性、技术深度和行业代表性&#xff0c;被赋予了特别的重视。遵循郭晔等人(2022)的研究方法&#xff0c;使用国家…

MyBatis~配置解析, 属性(properties)、设置(settings)

注意, 对应的名称一定要相同, 比如username就要对应username, 而且如果同时使用外部配置文件和property, 优先级是外部配置文件优先级更高 设置&#xff08;settings&#xff09; 这是 MyBatis 中极为重要的调整设置&#xff0c;它们会改变 MyBatis 的运行时行为。 下表描述了…

基于盲信号处理的声音分离——基于自然梯度的ICA算法

基于自然梯度的ICA算法主要利用相互独立的随机信号的联合概率密度是各自概率密度的乘积这一特性&#xff0c;建立了等独立性度量原则&#xff0c;具体实现如下。 首先&#xff0c;输出信号 相互独立&#xff0c;则其概率密度满足 上式中 表示 的概率密度函数&#xff0c;可以…

python FastAPI操作数据库实现注册登录

代码如下 from fastapi import FastAPI, APIRouter, HTTPException, status from pydantic import BaseModel from fastapi.responses import JSONResponse from typing import Optional from fastapi.middleware.cors import CORSMiddleware from utils.time import DateTime…

消失的80后都去哪里了

曾经被贴上各种标签的80后&#xff0c;最大的已经44岁&#xff0c;最小的也都35岁了&#xff0c;都已人到中年了。 在80后眼里的弟弟妹妹的90后&#xff0c;已经奔四了&#xff0c;而觉得与80后有代差的95后已是职场主力&#xff0c;而某些80后的孩子00后也已经开始陆续进入职场…