该部分内容描述Local, MSI(Message Signaled Interrupt) 和 Legacy中断相关的中断引脚。
一、Local中断
通过设置IMR寄存器来配置interrupt_out引脚发送中断。interrupt_out引脚发送中断给连接到AXI4总线端的桥。MSI中断是在IMR和IDR中定义,只有当桥配置在Root Port模式时(C_INCLUDE_RC = 1),用作表示一个Message Signaled Interrupt的接收。
二、MSI中断
输出引脚msi_enable用来表示桥的Endpoint MSI功能是否被使能。 若msi_enable = 1,使能MSI,定义成MSI_Request的输入引脚intx_msi_request可以触发一个MSI中断,该中断是从一个特定的MemWr TLP到PCIe的一个外部Root端口(位于桥的PCIe侧)。输入引脚Intx_msi_request被检测上升沿并同步到axi_aclk_out。包含在MemWr TLP中的数据和地址由寄存器(在PCIe集成块中)的PCIe配置的外部Root Port决定。只有桥工作在Endpoint模式时(C_INCLUDE_RC = 0),输入引脚Intx_msi_request才有效。
当AXI Memory Mapped to PCI Express 核配置成Endpoint时,附加的MSI capability支持多个向量。这里用握手来描述,输入信号msi_vector_num表示通过MSI MemWr TLP发送到Root Port向量的个数。Msi_vector_num是(4:0)时,表示从Endpoint(配置后已经被使能了)发送的MSI消息数最多能达到32个。
如果在MCR寄存器中没有配置这些,桥会忽略掉msi_vector_num。
Endpoint需要在设计参数(AXI Memory Mapped to PCI Express 核的)C_NUM_MSI_REQ 中定义需要的消息个数。根据规格需求,这个参数可以最大设置到5,它用来表示需要的MSI向量个数。例如,当C_NUM_MSI_REQ=5时,表示MSI向量的需求个数是32。C_NUM_MSI_REQ 的参数值在MCR域中的Multiple Message Capable, bit(3:1)中分配。
配置完成后,分配好的MSI向量个数显示在设计输出端口msi_vector_width。这个信号的宽度,(2:0),最大设置到5(101),表示为Endpoint分配的32个MSI向量。输出值6和7,即110和111暂作保留。输出信号msi_vector_width是与MCR域中的Multiple Message Capable, bit(6:4)的值直接相关,如Table 3-5。
在Endpoint PCIe系统中需要额外的IP来生成PCIe接口上的MSI向量优先级方案。
三、 Legacy Interrupts
如果用C_INTERRUPT_PIN参数做了选择(只有在C_INCLUDE_RC = 0时可以设置为1),桥支持legacy中断。1表示选择了INTA,见Table 2-2。如果选择了PCI支持legacy中断,输出引脚msi_enable 表示桥的endpoint的 MSI功能失效(msi_enable = 0),intx_msi_request引脚被定义成INTX。当INTX引脚变高时,声明INTA有效的消息被发送。当INTX引脚变低时,声明INTA无效的消息被发送。中断需要同步到axi_aclk_out。这些消息在PCI 2.1规格说明中定义。只有桥工作在Endpoint模式(C_INCLUDE_RC = 0)时,输入引脚intx_msi_request才有效。