ZYNQ(七)PL端的中断请求

ZYNQ的中断框图
在这里插入图片描述
ZYNQ使用两个cortex-A9处理器(CPU)以及GIC(Generic Interrupt Controller) 中断控制器。可以接收来自I/O外设和PL部分的中断,中断主要分为私有外设中断PPI(private peripheral interrupts)、软件生成中断SGI(software generated interrupts) 和共享外设中断SPI(shared peripheral interrupts)。
而所有中断请求(PPI、SGI、SPI)都分配了唯一的ID号,中断控制器通过仲裁ID号,选择中断优先级最高的中断,将其发送给CPU接口。中断优先级相同则选择ID号小的中断。
如果中断和多个CPU有关,SGI和PPI寄存器为每个CPU提供了独立的副本。
GIC管理从PS和PL端发送到CPU的中断
在这里插入图片描述
三种中断源
(1)每个CPU都有一组私有外设中断,PPI,这些中断使用存储寄存器进行私有访问。PPI包括全局定时器、私有看门狗定时器、私有定时器和来自PL端的FIQ/IRQ 五种外设,中断ID为27-31
在这里插入图片描述
(2)软件生成中断SGI,通过写入GIC的寄存器ICDSGIR,并设置目标CPU来产生软件中断,每个CPU都可以产生16个软件中断,中断号为0-15;
在这里插入图片描述
(3)共享外设中断SPI由PS和PL中的各种I/O和内存控制器产生,共有60个;共享中断就是PL的中断可以发送给PS进行处理,如下图所示,黄色区域就是16个PL的中断,它们可以设置为高电平或者低电平触发。

步骤:
(1)creat block design ->配置ps端(时钟和DDR,uart 以及使能中断)
在这里插入图片描述
(2)添加两个逻辑门(Vector)和concat IP
(3)将逻辑门配置成1位宽且非门
在这里插入图片描述
(4)按照下图连接IP,并将门的外部引脚换成SW开关在这里插入图片描述
(5)generate output product ->creat HDL Wrapper
(6)添加开关约束,并生成bit流文件
(7)将硬件信息发送到SDK,并且创建main.c函数

#include <stdio.h>
#include "xscugic.h"
#include "xil_exception.h"

#define INT_CFG0_OFFSET 0x00000C00

// Parameter definitions
#define SW1_INT_ID              61 //中断ID号
#define SW2_INT_ID              62
#define SW3_INT_ID              63
#define
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值