MSI 中断接口 - 1.3 简体中文

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

Document ID
PG213
Release Date
2022-11-16
Version
1.3 简体中文
表 1. MSI 中断接口端口描述
名称 I/O 宽度 描述
cfg_interrupt_msi_enable 输出 4 配置中断 MSI 功能启用

表示报文信号中断 (MSI) 报文信号已启用(按功能)。这些输出可反映物理功能 0 - 3 的 MSI 控制寄存器的“MSI Enable”(MSI 启用)位的设置。

cfg_interrupt_msi_int 输入 32 配置中断 MSI 矢量

在端点模式下配置为支持 MSI 中断时,这些输入用于表示与从用户逻辑到核的 PCI 功能(物理或虚拟)关联的 32 个不同中断状况对应的信号。必须在 cfg_interrupt_msi_function_number 输入上指定功能编号。在 cfg_interrupt_msi_function_number 输入上设置功能编号后,用户逻辑必须激活其中任一信号并保持 1 个周期,以供发射中断。用户逻辑在同一周期内最多只能激活这 32 个中断输入中的 1 个输入。核会在内部寄存中断状况,寄存位置为 cfg_interrupt_msi_int 中的任意位的 0 到 1 转换。断言中断有效后,用户逻辑必须等待至收到来自核 cfg_interrupt_msi_sent 或 cfg_interrupt_msi_fail 指示之后才能断言新中断有效。

cfg_interrupt_msi_function_number 输入 8 配置 MSI 启动功能

指示用于启动 MSI 中断的端点功能编号。

  • 8'h00 - 8'h03:PF 0 - PF 3
  • 8'h04 - 8'hFF:VF 0 - VF 252
  • 其它编码均为保留值。
cfg_interrupt_msi_sent 输出 1 配置中断 MSI 中断已发送

核会在此输入上生成 1 个周期的脉冲,以表示在链路上已发射 MSI 或 MSI-X 中断报文的对应信号。用户逻辑必须等待收到此脉冲后才能向核发出另一个中断状况信号。

cfg_interrupt_msi_fail 输出 1 配置中断 MSI 中断操作失败

此输入上出现 1 个周期的脉冲表示 MSI 中断报文在链路上发射前已异常中止。在此情况下,用户逻辑必须重新发射 MSI 中断。

cfg_interrupt_msi_mmenable 输出 12 配置中断 MSI 功能多报文使能

当核在端点模式下配置为支持 MSI 中断时,这些输出由与物理功能关联的 MSI 控制寄存器的“Multiple Message Enable”(多报文使能)位驱动。这些位会通过编码来表示为对应功能分配的 MSI 中断矢量的数量。位 [2:0] 对应于物理功能 0,位 [5:3] 对应于 PF 1,以此类推。这 3 个位的有效编码为:

  • 000b:1 个矢量
  • 001b:2 个矢量
  • 010b:4 个矢量
  • 011b:8 个矢量
  • 100b:16 个矢量
  • 101b:32 个矢量
cfg_interrupt_msi_pending_status 输入 32 配置 MSI 中断暂挂状态

为用户提供的这些输入表示与物理功能关联的 MSI 中断的中断暂挂状态。当与 PF 关联的MSI 中断的状态发生更改时,用户必须在这些输入上设置新中断状态,并在 cfg_interrupt_msi_pending_status_function_num 输入上设置对应的功能编号,激活 cfg_interrupt_msi_pending_status_data_enable 输入并保持 1 个周期。随后,核会在其对应物理功能的 MSI 暂挂位寄存器中锁存新状态。

cfg_interrupt_msi_pending_status_function_num 输入 2 配置中断 MSI 暂挂目标功能编号
  • 00 = PF 0
  • 01 = PF 1
  • 10 = PF 2
  • 11 = PF 3

当用户在 cfg_interrupt_msi_pending_status 输入上设置中断状态时,此输入用于识别功能编号。

cfg_interrupt_msi_pending_status_data_enable 输入 1 配置中断 MSI 暂挂数据有效

用户应用随 cfg_interrupt_msi_pending_status 值和 cfg_interrupt_msi_pending_status_function_num 值一起断言此信号有效,以更新对应功能中的 MSI 暂挂位。

cfg_interrupt_msi_mask_update 输出 1 配置中断 MSI 功能掩码已更新

当任何已启用的 PF 的 MSI 掩码寄存器值发生更改时,SR-IOV 核会断言此信号有效并保持 1 个周期。随后,用户可以从 cfg_interrupt_msi_data 输出读取新的掩码设置。

cfg_interrupt_msi_select 输入 2 配置中断 MSI 选择

这些输入用于选择功能编号,以便从核中读取 MSI 掩码寄存器设置。值 0 - 3 分别对应于物理功能 0 - 3。在 1 个周期后,所选 PF 的 MSI 掩码寄存器内容会显示在 cfg_interrupt_msi_data 输出上。

cfg_interrupt_msi_data 输出 32 配置中断 MSI 数据

这些输出可反映 cfg_interrupt_msi_select 输入所选的物理功能的 MSI 掩码寄存器设置。

cfg_interrupt_msi_attr 输入 3 配置中断 MSI TLP 属性

这些位支持您设置属性位,用于 MSI 和 MSI-X 中断请求。

  • 位 0 为“No Snoop”(无嗅探)位。
  • 位 1 为“Relaxed Ordering”(宽松排序)位。
  • 位 2 为“ID-Based Ordering”(基于 ID 排序)位。

核会在 cfg_interrupt_msi_int 位(使用 MSI 时)或 cfg_interrupt_msix_int(使用 MSI-X 时)上执行 0 到 1 转换过程中对这些位进行采样。

cfg_interrupt_msi_tph_present 输入 1 配置中断 MSI/MSI-X TPH 已预发送

表示在 MSI/MSI-X 中断请求中存在可选传输事务处理提示 (TPH)。用户应用断言 cfg_interrupt_msi_int 位(使用 MSI 时)或 cfg_interrupt_msix_int(使用 MSI-X 时)有效时必须设置该位,前提是在 MSI 或 MSI-X 传输事务中包含 TPH。

cfg_interrupt_msi_tph_type 输入 2 配置中断 MSI/MSI-X TPH 类型

当 cfg_interrupt_msi_tph_present 为 1'b1 时,这 2 个位用于提供与提示关联的 2 位类型。核会根据使用的是 MSI 中断还是 MSI-X 中断,在 cfg_imterrupt_msi_int 或 cfg_interrupt_msix_int 的任意位上执行 0 到 1 的转换过程中对这些位进行采样。

cfg_interrupt_msi_tph_st_tag 输入 8 配置中断 MSI/MSI-X TPH 导向标签

断言 cfg_interrupt_msi_tph_present 有效时,必须在 cfg_interrupt_msi_tph_st_tag[7:0] 上设置与提示关联的“Steering Tag”(导向标签)。核会根据使用的是 MSI 中断还是 MSI-X 中断,在 cfg_interrupt_msi_int 或 cfg_interrupt_msix_int 的任意位上执行 0 到 1 的转换过程中对这些位进行采样。