Zynq7000系列FPGA中的中断

news2025/1/13 2:31:45

本文介绍Zynq7000系列FPGA中的系统级中断环境和中断控制器的功能(见图7-1)。

专用、共享和软件中断

每个CPU都有一组专用外围中断(PPI,private peripheral interrupts),使用banked 寄存器可以对这些中断进行专用访问。PPI包括全局计时器、专用看门狗计时器、专用计时器和来自PL的FIQ/IRQ。

软件生成的中断(SGI)被路由到一个或两个CPU。SGI是通过写入通用中断控制器(GIC)而产生的。共享外设中断(SPI)是由PS和PL中的各种I/O和内存控制器产生。它们被路由到其中一个或两个CPU。来自PS外部设备的SPI中断也被路由到PL。

通用中断控制器(GIC)

通用中断控制器(GIC)是一个集中式资源,用于管理从PS和PL发送到CPU的中断。当CPU接口接受下一个中断时,控制器启用、禁用、屏蔽并优先考虑中断源,并以编程方式将其发送到选定的CPU。此外,控制器支持用于实现安全感知系统的安全性扩展。
控制器是基于Arm通用中断控制器体系结构的非矢量化的1.0版(GIC v1)。
通过CPU专用总线访问寄存器,以避免互连中的临时阻塞或其他瓶颈,从而实现快速读/写响应。

中断分配器将所有中断源集中在一起,然后将优先级最高的中断源分配给各个CPU。GIC确保针对多个CPU的中断一次只能由一个CPU执行。所有中断源都由一个唯一的中断ID号标识。所有中断源都有自己的可配置优先级和目标CPU列表。

重置和时钟

中断控制器由复位子系统通过写入SLCR中的A9_CPU_RST_CTRL寄存器的PERI_RST位来复位。相同的重置信号还重置CPU专用定时器和专用看门狗定时器(AWDT)。重置后,将忽略所有挂起或正在服务的中断。
中断控制器使用CPU_3x2x时钟(CPU频率的一半)进行操作。

方框图

共享外设中断由各种子系统生成,包括PS中的I/O外设和PL中的逻辑。中断源如图7-2所示。

CPU中断信号通过

来自PL的IRQ/FIQ可以作为PPI#4和#1通过GIC进行路由,或者使用图7-3所示的直通复用器绕过GIC。这个逻辑是为两个CPU实例化的。直通模式是通过mpcore启用的。ICCICR寄存器如表7-1所示。

功能说明

软件生成的中断(SGI)

每个CPU都可以使用软件生成的中断(SGI)来中断自己、另一个CPU或两个CPU。有16个软件生成的中断(见表7-2)。通过将SGI中断号写入ICDSGIR寄存器并指定目标CPU,生成SGI。此写入通过CPU自己的专用总线进行。每个CPU都有自己的一组SGI寄存器,用于生成16个软件生成的中断中的一个或多个。通过读取ICCIAR(中断确认)寄存器或将1写入ICDICPR(中断清除挂起)寄存器的相应位来清除中断。

所有SGI都是边缘触发的。SGI的灵敏度类型是固定的,不能更改;ICDICFR0寄存器是只读的,因为它指定了所有16个SGI的灵敏度类型。

CPU专用外围设备中断(PPI)

每个CPU连接到一个由五个外设中断组成的专用组。PPI如表7-3所示。
PPI的灵敏度类型是固定的,不能更改;因此,ICDICFR1寄存器是只读的,因为它指定了所有5个PPI的灵敏度类型。注意,来自PL的快速中断(FIQ)信号和中断(IRQ)信号被反相,然后被发送到中断控制器。因此,尽管ICDICFR1寄存器将它们反映为活动低(active)电平,但它们在PS-PL接口处为活动(active)高电平。

共享外设中断(Shared Peripheral Interrupts,SPI)

一组来自不同模块的大约60个中断可以路由到一个或两个CPU中,或是PL中。中断控制器为CPU管理这些中断的优先级和接收。
除了IRQ#61到#68和#84到#91之外,所有中断敏感度类型都由请求源固定,不能更改。必须对GIC进行编程以适应这种情况。引导ROM不对这些寄存器进行编程;因此SDK设备驱动程序必须对GIC进行编程以适应这些敏感度类型。
对于级别敏感类型的中断,请求源必须为中断处理程序提供一种机制,以便在确认中断后清除该中断。此要求适用于任何具有高灵敏度类型的IRQF2P[n](来自PL)。
对于上升沿灵敏度的中断,请求源必须提供足够宽的脉冲,以便GIC捕获。这通常至少是2个CPU_2x3x周期。此要求适用于任何具有上升沿灵敏度类型的IRQF2P[n](来自PL)。
ICDICFR2到ICDICFR5寄存器配置所有SPI的中断类型。每个中断都有一个2位字段,用于指定敏感度类型和处理模型。
SPI中断如表7-4所示。

中断敏感性、目标和处理

有三种类型的中断进入GIC:SPI、PPI和SGI。在一般意义上,中断信号包括灵敏度设置、是一个还是两个CPU处理中断,以及目标CPU的个数(0,1或2)。然而,大多数中断信号的功能包括固定设置,而其他中断信号是部分可编程的。

有两组控制寄存器用于灵敏度、处理和定位:
•mpcore。ICDICFR[5:0]寄存器:灵敏度和处理。
•mpcore。ICDIPTR[23:0]寄存器:目标CPU。

共享外设中断(SPI)

SPI中断可以针对任意数量的CPU,但只有一个CPU处理中断。如果一个中断以两个CPU为目标,并且它们同时对GIC做出响应,则MPcore确保只有一个CPU读取活动中断ID#。另一个CPU根据时序接收Spurious ID#1023中断或下一个未决中断。这消除了对中断服务例程中的锁的要求。
以CPU为目标是由ICDIPTR[23:8]寄存器完成的。每个SPI中断的灵敏度必须编程为与ICDICFR Register 、PS和PL共享外设中断(SPI)中列出的灵敏度相匹配。使用ICDICFR[5:2]寄存器对灵敏度进行编程。

专用外围设备中断(PPI)

每个CPU都有自己的独立PPI中断,具有固定的功能;这些中断的灵敏度、处理和目标是不可编程的。每个中断只进入其自己的CPU,并由该CPU处理。ICDICFR[1]寄存器是只读的,CDIPTR[5:2]寄存器基本上是保留的。

软件生成的中断(SGI)

SGI中断总是边缘敏感的,并且是在软件将中断号写入ICDSGIR寄存器时生成的。ICDIPTR[23:8]中定义的所有目标CPU必须处理中断才能清除它。

编程模型

中断优先级

所有中断请求(PPI、SGI和SPI)都被分配了一个唯一的ID号。控制器使用ID号进行仲裁。中断分配器保存每个CPU的挂起中断列表,然后在将其发送到CPU接口之前选择最高优先级的中断。同等优先级的中断通过选择最低ID来解决。
优先级逻辑在物理上是重复的,以使每个CPU能够同时选择最高优先级的中断。中断分配器保存中断、处理器和激活信息的中央列表,并负责触发CPU的软件中断。

存储SGI和PPI分配器寄存器,为每个连接的处理器提供单独的副本。硬件确保针对多个CPU的中断一次只能由一个CPU执行。
中断分配器向CPU接口传输最高未决中断。它接收回中断已被确认的信息,然后可以更改相应中断的状态。只有确认中断的CPU才能结束该中断。

中断处理

当IRQ线路去断言时,GIC对未决中断的响应。
如果中断在GIC中挂起,并且IRQ被取消断言,则GIC中的中断将变为非活动状态(CPU永远不会看到它)。如果中断在GIC中处于活动状态(因为CPU接口已确认中断),则软件ISR通过首先检查GIC寄存器,然后轮询I/O外设中断状态寄存器来确定原因。

Arm编程主题

Arm GIC体系结构规范包括以下编程主题:

  • GIC寄存器访问
  • 分配器和CPU接口
  • GIC安全扩展的影响
  • PU接口寄存器
  • 保持和恢复控制器状态

传统中断和安全扩展

当使用传统中断(IRQ、FIQ),并且中断处理程序以安全模式(通过ICCICR[AckCtl]=1)访问IRQ和FIQ时,读取中断ID时偶尔会出现争用情况。在IRQ处理程序中也存在看到FIQ ID的风险,因为GIC只知道处理程序从什么安全状态读取,而不知道处理程序是从哪种类型读取的。
有两种可行的解决方案:

  • 仅向重新进入的IRQ处理程序发送IRQ信号,并使用GIC中的抢占功能。
  • 在ICCICR[AckCtl]=0的情况下使用FIQ和IRQ,并使用TLB表在非安全模式下处理IRQ,在安全模式下进行FIQ处理。

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

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

相关文章

2024年生物技术与食品科学国际会议(ICBFS 2024)

2024 International Conference on Biotechnology and Food Science 2024年生物技术与食品科学国际会议 【会议信息】 会议简称:ICBFS 2024 大会地点:中国厦门 会议邮箱:icbfssub-paper.com 审稿结果:投稿后3日左右 提交检索&…

AI视频教程下载-ChatGPT 生产力 + 时间管理

ChatGPT Productivity Time Management. ChatGPT Productivity ChatGPT 显著提升生产力 不寻常的时间管理技巧。ChatGPT 工作,Chat GPT 自动化,ChatGPT 2023! 对关于ChatGPT的讨论感到好奇,想知道如何利用它为自己带来好处吗&a…

VTable导出当前页和导出所有页数据

表格导出的是当前显示的表格&#xff0c;如果是分页表格想导出全部的数据话。有两种方法可以实现 表格先显示的全量数据&#xff0c;导出后再恢复当前页。新建一个隐藏的表格实例显示全量数据导出这个隐藏的表格实例。 下面是全量代码&#xff1a; <template><div&…

【笔记】从零开始做一个精灵龙女-拆uv阶段

目录 先回顾一下拆uv的基础流程吧 肩部盔甲分UV示例 手环UV部分 腰带UV部分 其它也差不多&#xff0c;需要删掉一半的就先提前删掉一半&#xff0c;然后把不需要的被遮挡的面也删掉 龙角UV 胸甲UV 侧边碎发UV 马尾UV 脸部/耳朵UV 特殊情况&#xff1a;如果要删一半再…

2024南京国际自有品牌产品博览会

展会名称&#xff1a;2024南京国际自有品牌产品博览会 展会时间&#xff1a;2024年10月11-13日 展会地点&#xff1a;南京国际博览中心 展览规模&#xff1a;36000平米 详询主办方陆先生 I38&#xff08;前三位&#xff09; I82I&#xff08;中间四位&#xff09; 9I72&…

Vmvare12安装CentOS7.6

Vmvare12安装 注意事项 安装完成以后有这两个虚拟网卡。 CentOS官网镜像地址 https://www.centos.org/download/mirrors/Vmvare安装CentOS7.6 创建虚拟机 安装CentOS7.6 选择桌面版 磁盘分区 上述是确认使用自动分区。 设置密码 设置license information 欢迎页面 CentOS7…

Opencv+python模板匹配

我们经常玩匹配图像或者找相似&#xff0c;opencv可以很好实现这个简单的小功能。 模板是被查找目标的图像&#xff0c;查找模板在原始图像中的哪个位置的过程就叫模板匹配。OpenCV提供的matchTemplate()方法就是模板匹配方法&#xff0c;其语法如下&#xff1a; result cv2.…

智能小家电的跨境渠道有哪些,美国商超入驻选百思买如何?

智能小家电是现代家庭生活的重要部分&#xff0c;提升了生活品质&#xff0c;体现消费者追求个性化、智能化生活。跨境电商发展快速&#xff0c;智能小家电跨境渠道多样化&#xff0c;为品牌提供广阔市场。本文将深入探讨智能小家电的跨境渠道&#xff0c;并分析选择百思买作为…

记录 Bonobo Git 服务器 SMTP 设置

Bonobo 使用标准的 .NET SMTP 设置&#xff0c;可以在 web.config 中指定这些设置。 <system.net><mailSettings><smtp deliveryMethod"network" from"bonobobonoserver.your.domain"><network host"accessible.smtp.host"…

B端组件:穿梭框—可不是简单的左口袋放右口袋

B端组件穿梭框&#xff08;Transfer&#xff09;是一种常见的界面组件&#xff0c;用于在两个列表之间进行数据交互。它通常由两个列表和一些操作按钮组成&#xff0c;其中一个列表用于展示可选数据&#xff0c;另一个列表用于展示已选数据&#xff0c;操作按钮用于将数据从一个…

LeetCode刷题之HOT100之打家劫舍

2024/6/26 大家早上好呀&#xff01;今天不热诶&#xff0c;昨天跟镔哥跑了五公里&#xff0c;配速515简直不要太爽啊&#xff0c;跑完后在操场走一圈&#xff0c;正好发小发了群视频过来&#xff0c;聊了半小时。发小一考研二战失利&#xff0c;去干测试&#xff0c;天天累得不…

基于springboot实现机动车号牌管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现机动车号牌管理系统演示 摘要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&am…

Mybatis插入操作 主键自增 返回成功 但是数据库没有数据

插入操作成功&#xff0c;消耗了一个主键&#xff0c;但是数据库没有看到相关数据。一般这种情况说明可能事务没有执行成功&#xff0c;事务回滚了。数据库操作要通过 ACID规则来约束事务&#xff0c;即原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistenc…

日语培训日语等级考试柯桥小语种学习语言学校

什么是外来语 外来语是指在日本的国语中使用的来源于外国语言的词汇。但狭义上的外来语则是指来源于欧美国家语言的词汇&#xff0c;其中大部分是来源于英美语系的词汇。日语中的汉语词汇很多&#xff0c;大多是自古以来从中国引进的&#xff0c;从外来语的定义看&#xff0c;汉…

使用git在GitHub上克隆指定版本的项目

以pytorch3d为例 先查看想克隆的版本号&#xff0c;我选择v0.7.4版的 再使用git命令进行克隆&#xff0c;只要在clone后面加上--branch 版本号 git clone --branch v0.7.4 https://github.com/facebookresearch/pytorch3d.git

解决msvcp120.dll问题的详细步骤,分析msvcp120.dll文件

msvcp120.dll文件是Microsoft Visual C Redistributable Package for Visual Studio 2013中的一个组件。如果提示你丢失该文件&#xff0c;通常意味着程序试图调用一个未在你电脑上安装的Visual C版本。下面是解决此问题的详细步骤。 msvcp120.dll丢失的解决方法 方法 1&#…

三大关键技术看RAG如何提升LLM的能力

大语言模型表现出色&#xff0c;但是在处理幻觉、使用过时的知识、进行不透明推理等方面存在挑战。检索增强生成&#xff08;RAG&#xff09;作为一个新兴的解决方案&#xff0c;通过整合外部知识库的数据&#xff0c;提高了模型在知识密集型任务中的准确性和可信度&#xff0c…

PointCloudLib (多线程)快速双边滤波 C++版本

0.实现效果 原始点云 和滤波后的点云对比 1.算法原理 PCL(Point Cloud Library)快速双边滤波是一种高效的点云数据滤波方法,它基于传统双边滤波算法进行了改进,通过引入近似方法加速计算过程。以下是关于PCL快速双边滤波的详细回答: 1. 基本原理 空间滤波:在点云中,相…

团队协同渗透测试报告输入输出平台部署

目录 简介 文章来源 部署环境 文件下载 开始安装 系统初始化 免责声明 结语 简介 因应监管部需求&#xff0c;国内访问Docker源pull镜像开始变得复杂且困难起来了&#xff0c;大佬github给的在线/离线安装脚本跑了很久也无法拉取到镜像&#xff0c;所以将以前的镜像打…

COMSOL -电力输电线的电场和磁场仿真

为确保电力输电线周围人员和环境的安全&#xff0c;工程师必须对电力线产生的电场和磁场进行监控。通过多物理场仿真&#xff0c;工程师能够预测电力线产生的场如何从电力线中扩散&#xff0c;以及如何影响其辐射至地面的强度。这篇文章&#xff0c;我们将使用两个示例模型来说…