生成中断请求 - 1.3 简体中文

UltraScale+ 器件 Integrated Block for PCI Express 产品指南 (PG213)

Document ID
PG213
Release Date
2022-11-16
Version
1.3 简体中文

请参阅 配置中断控制器接口 的表格中的 cfg_interrupt_msi*cfg_interrupt_msix_* 描述。

注释: 本章节仅适用于 Integrated Block for PCIe 核的端点配置。

该核支持将中断请求作为遗留中断、报文 MSI 中断或 MSI-X 中断来进行发送。此模式是使用“MSI Capability Structure”(MSI 功能结构)的“Message Control register”(报文控制寄存器)中的“MSI Enable”(MSI 启用)位和“MSI-X Capability Structure”(MSI-X 功能结构)的“MSI-X Message Control register”(MSI-X 报文控制寄存器)中的“MSI-X Enable”(MSI-X 启用)位来进行编程的。

“MSI Enable”位和“MSI-X Enabled”位分别由 cfg_interrupt_msi_enable 输出和 cfg_interrupt_msix_enable 输出来反映。下表描述了根据核的 cfg_interrupt_msi_enable 输出和 cfg_interrupt_msix_enable 输出,对器件进行编程后的对应“Interrupt Mode”(中断模式)。

表 1. 中断模式
  cfg_interrupt_msixenable=0 cfg_interrupt_msixenable=1

cfg_interrupt_msi_enable = 0

遗留中断 (INTx) 模式。

cfg_interrupt 接口仅发送 INTx 报文。

MSI-X 模式。

可使用 cfg_interrupt 接口生成 MSI-X 中断。

cfg_interrupt_msi_enable = 1

MSI 模式。cfg_interrupt 接口仅发送 MSI 中断 (MWr TLP)。

未定义。

系统软件不允许此模式。但如果您选择此模式,那么 cfg_interrupt 接口处于有效状态并发送 MSI 中断 (MWr TLP)。

MSI 控制寄存器中的“MSI Enable”位、MSI-X 控制寄存器中的“MSI-X Enable”位以及 PCI 命令寄存器中的“Interrupt Disable”(中断禁用)位均由根联合体进行编程。用户应用对于这些位不具有直接控制权。

核中的“Internal Interrupt Controller”(内部中断控制器)仅生成遗留中断和 MSI 中断。MSI-X 中断需由用户应用生成,并显示在 AXI4-Stream 发射接口上。cfg_interrupt_msi_enable 的状态可用于判定内部中断控制器生成的中断类型:

如果“MSI Enable”位设置为 1,那么核会通过发送存储器写入 TLP 来生成 MSI 请求。如果“MSI Enable”位设置为 0,那么核会生成遗留中断报文,前提是 PCI 命令寄存器中的中断禁用位设置为 0。

  • cfg_interrupt_msi_enable = 0:遗留中断
  • cfg_interrupt_msi_enable = 1:MSI
  • 命令寄存器位 10 = 0:启用 INTx 中断
  • 命令寄存器位 10 = 1:禁用 INTx 中断(核会阻止请求)

用户应用可监控 cfg_function_status 以检查 INTx 中断处于启用还是禁用状态。如需了解更多信息,请参阅 配置状态接口

该核可配置为播发多种中断模式支持,但在运行时,每次所有功能间仅限启用一种中断模式。赛灵思不建议一次性启用多种中断模式,但如果无法避免同时启用 MSI 和 MSI-X 中断,那么必须在该核外部实现 MSI-X 中断,并通过请求器请求接口端口 (s_axis_rq) 来构成和发送中断包。

用户应用可通过两种方式之一来请求中断服务,下一章中对这两种方式分别进行了描述。