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

图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传输的行为。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLO模型评价指标

在模型训练完成之后&#xff0c;需要对模型的优劣作出评估&#xff0c;YOLO系列算法的评价指标包括&#xff1a; 1. 准确率&#xff08;Precision&#xff09;&#xff1a;指模型预测为正样本中实际为正样本的比例。 &#x1d447;&#x1d443;、&#x1d439;&#x1d443;、…

uniapp字体ttf在小程序报错,解决方法

文章目录 导文解决方法1&#xff1a;把字体改成base64格式解决方法2&#xff1a;改成线上模式 导文 报错1&#xff1a; uniapp 小程序报错&#xff1a;app.js错误: Error: Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js): ModuleBuildErro…

【Java Web】Pinia实现组件间数据共享

目录 一、Pinia概述 二、Pinia基本用法 一、Pinia概述 在前端工程化的开发环境中&#xff0c;当多个组件(.vue)文件需要使用同一个数据对象时&#xff0c;传统的方法可以使用组件传参或者路由传参来解决但此两种方式都有自己的缺点。pinia可以将多个组件需要共享使用的数据单独…

2024热门骨传导蓝牙耳机怎么选?超全的选购攻略附带好物推荐!

对于很多喜欢运动健身的小伙伴&#xff0c;在现在市面上这么多种类耳机的选择上&#xff0c;对于我来说的话还是很推荐大家去选择骨传导运动耳机的&#xff0c;相较于普通的入耳式蓝牙耳机&#xff0c;骨传导耳机是通过振动来传输声音的&#xff0c;而入耳式耳机则是通过空气传…

餐饮冷库安全守护神:可燃气体报警器检定的科学性与有效性

随着餐饮业的快速发展&#xff0c;冷库成为储存食材、保证食品质量的重要场所。 然而&#xff0c;由于冷库环境的特殊性&#xff0c;如密封性强、温度低、湿度大等&#xff0c;一旦冷库内发生可燃气体泄露&#xff0c;后果将不堪设想。因此&#xff0c;在餐饮冷库中安装并合理…

武汉星起航:自运营团队深耕亚马逊,智慧运营打造跨境电商新标杆

在全球化的浪潮下&#xff0c;跨境电商已成为企业拓展海外市场的重要渠道。而亚马逊作为全球领先的电商平台&#xff0c;其巨大的市场潜力和成熟的运营体系吸引了无数卖家竞相入驻。武汉星起航电子商务有限公司正是众多成功入驻亚马逊的卖家之一&#xff0c;其自运营团队凭借多…

使用Python Selenium,动态网页不再是难题!

目录 1、直接执行JS代码 🌐 1.1 execute_script基础用法 1.2 带参数执行JS函数 1.3 获取执行结果 2、使用execute_async_script异步执行 🔄 2.1 适用场景分析 2.2 实现异步操作示例 2.3 错误处理与调试技巧 3、JS与页面元素交互 👤 3.1 修改DOM属性 3.2 触发事…

独立开发者系列(10)——fastadmin后台框架的认识

软件开发项目涉及到的东西非常多&#xff0c;作为独立开发者&#xff0c;普遍性的面对的是中小项目。而其中接单的情况下&#xff0c;以WEB方向的居多。其中主要有以下这么些类的:搭建官网cms 就是常见的资讯发布平台&#xff0c;发布一些企业新闻/活动宣传&#xff0c;纯粹是…

鸿蒙期末项目(3)

服务器搭建完成之后&#xff0c;编写了诸多api用于数据传输工作&#xff08;略&#xff09; 编写完成之后&#xff0c;回到鸿蒙开发工具&#xff0c;开始编写搜索页面的代码。 打开搜索页面时&#xff0c;先会展示历史搜索记录&#xff08;如果有的话&#xff09;&#xff0c;…

爬取必应关键字搜索结果url

上代码 import aiohttp import asyncio from lxml import etree import aiofiles import time import random aiohttp 和 asyncio 用于异步HTTP请求和事件循环。 lxml 用于解析HTML。 aiofiles 用于异步文件操作。 time 和 random 用于控制爬取速度。 headers {User-Agent: M…

mysql安装创建数据库防止踩坑

为了安装MySQL的家人们走弯路&#xff0c;稍微有些啰嗦&#xff0c;讲述我安装的时遇到的问题&#xff0c;如何解决。仔细看看离成功不远。 mysql下载链接 MySQL :: Download MySQL Community Server windows下安装mysql-8.0.29-winx64&#xff0c;下载安装包后解压到文件夹中…

2024十大首码地推拉新app平台,一手首码对接平台!

到了2024年&#xff0c;地推新应用的接单平台成为创业者们关注的焦点。对于地推行业的从业人员而言&#xff0c;选择一家拥有一手单资源的平台至关重要&#xff0c;因为这直接关系到他们的利益。 2024年如果想要进行app地推活动&#xff0c;却没有人脉渠道的困扰&#xff0c;建…

谷歌网络营销中SEO的策略有哪些?

在网络营销中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;是一种关键策略&#xff0c;旨在提高网站在搜索引擎结果中的排名。首先&#xff0c;要进行关键词研究&#xff0c;找出潜在客户使用的搜索词。接下来&#xff0c;优化网站内容&#xff0c;使其包含这些关键词&…

【Java Web】Ajax异步请求

目录 一、Ajax概述 二、Ajax执行原理 三、实现Ajax的请求 一、Ajax概述 传统情况下&#xff0c;浏览器与服务端的交互都是采用同步交互的方式进行的&#xff1b;此交互方式用户在向服务端发送请求后只有等到服务端的响应报文回来后用户才能在标签页上进行其它操作&#xff0c;即…

openlayer 鼠标点击船舶,打开船舶简单弹框

背景&#xff1a; 对创建的地图对象&#xff0c;可以添加上监听事件&#xff0c;常用的有&#xff1a;地图点击事件、鼠标移动事件。 通过监听这些事件&#xff0c;又可以区分不同图层的不同要素&#xff0c;获取不同数据&#xff1b; 根据这些数据&#xff0c;又可以发起网络请…

电脑的D盘E盘F盘突然消失了 电脑只剩下C盘了其他盘怎么恢复

现如今随着时代的发展&#xff0c;无纸化办公成为主流&#xff0c;这主要归功于电脑&#xff0c;能够通过电脑完成的工作绝不使用纸质文件&#xff0c;这不仅提高了工作效率&#xff0c;也让一些繁杂的工作变的更加简单。不过电脑毕竟是电子产品&#xff0c;不可避免的会出现一…

【包邮送书】深度学习与信号处理

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

win11家庭版没有gpedit解决

1、右键桌面&#xff0c;新建记事本&#xff0c;把后缀名txt修改成bat 2、输入以下命令&#xff1a; echo offdir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Windows\servicing\Packages\Micr…

electron-builder创建桌面应用

一、利用vue-cli创建vue项目 创建electron方式有很多&#xff0c;这里说的是vuecli创建的项目&#xff0c;通过安装electron-builder插件创建 也可以通过electron-vite构建项目 &#xff1a; https://cn.electron-vite.org/guide/ vue-cli构建 vue create XXX项目名 //按提示操…

cad怎么导出为图片?分享四种导出方法

cad怎么导出为图片&#xff1f;在工程设计、建筑设计、机械设计等领域&#xff0c;CAD图纸的编辑和分享是一项日常工作。然而&#xff0c;如何将CAD图纸高效、准确地导出为图片格式&#xff0c;一直是设计师们关注的焦点。今天&#xff0c;就为大家推荐四款强大的CAD导出图片软…