XLINX系列之Zynq-7000系列有哪些中断?

中断结构与 CPU 密切相关,并接受来自 I/O 外设 (IOP) 和可编程逻辑 (PL) 的中断,如图所示:

XLINX系列之Zynq-7000系列有哪些中断?_第1张图片

Zynq的中断类型有:

  • 软件中断(Software Generated Interrupt, SGI,中断号0-15)(16–26 reserved)

  • 私有外设中断(Private Peripheral Interrupt, PPI,中断号27-31),

  • 共享外设中断(Shared Peripheral Interrupt, SPI,中断号32-95).

我们来介绍一下这几种中断

软件产生的中断 (SGI)

每个 CPU 都可以使用软件生成的中断 (SGI) 中断自己、另一个 CPU 或两个 CPU。有 16 个软件产生的中断如下图

XLINX系列之Zynq-7000系列有哪些中断?_第2张图片

软件产生的中断 (SGI)

SGI 是通过将 SGI 中断号写入 ICDSGIR 寄存器并指定目标 CPU 来生成的,此写入通过 CPU 自己的专用总线发生。

每个 CPU 都有自己的一组 SGI 寄存器来生成 16 个软件生成的中断中的一个或多个。

通过读取 ICCIAR(中断确认)寄存器或向 ICDICPR(中断清除挂起)寄存器的相应位写入 1 来清除中断。

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

CPU 专用外设中断 (PPI)

每个 CPU 都连接到一组私有的五个外设中断。PPI 如下图所示

XLINX系列之Zynq-7000系列有哪些中断?_第3张图片

私有外设中断 (PPI)

PPI 的灵敏度类型是固定的,不能更改, 因此,ICDICFR1 寄存器是只读的,因为它指定了所有 5 个 PPI 的敏感类型。

注意,来自 PL 的快速中断 (FIQ) 信号和中断 (IRQ) 信号被反转,然后发送到中断控制器。

因此,它们在 PS-PL 接口处为高电平有效,尽管 ICDICFR1 寄存器将它们反映为低电平有效。

共享外设中断 (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 中断

XLINX系列之Zynq-7000系列有哪些中断?_第4张图片

PS 和 PL 共享外设中断 (SPI)

中断原理

当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理处执行。

当异常中断处理程序执行完成后,程序返回到发生中断指令的下一条指令处继续执行。

在进入异常中断处理程序时,要保存被中断程序的执行线程。

从中断处理程序退出时要恢复被中断程序的执行现场。

你可能感兴趣的:(单片机,嵌入式硬件)