AXI Memory Mapped to PCI Express IP核的中断包括Local中断,MSI 中断和 Legacy中断。
1 Local 中断
在配置AXI桥接器时,中断输出(interrupt_out)引脚可以根据中断掩码寄存器(Interrupt Mask register)的设置来发送中断。这个中断输出引脚会向连接到桥接器内存映射AXI4侧的设备发送中断信号。
具体来说,当桥接器在根端口模式(Root Port mode,即C_INCLUDE_RC=1)下运行时,中断掩码和中断解码寄存器(Interrupt Mask & Interrupt Decode registers)中定义的MSI(Message Signaled Interrupt,消息信号中断)中断用于指示接收到一个消息信号中断。这意味着,一旦桥接器在根端口模式下接收到特定的消息信号,它就会通过中断输出引脚发送一个中断信号。
在配置和使用本地中断时,需要注意以下几点:
- 中断类型与触发条件:了解哪些事件或条件会触发中断是非常重要的。这通常取决于您的硬件设计和应用需求。例如,DMA传输完成、错误发生或达到某个阈值等都可能是触发中断的条件。
- 中断优先级与屏蔽:通过中断掩码寄存器,您可以配置哪些中断被允许或屏蔽。这允许您根据应用需求调整中断的优先级和响应方式。
- 中断处理:当中断被触发时,需要有相应的中断处理程序来响应。这通常涉及到读取中断状态寄存器以确定中断的来源,并执行相应的处理逻辑。
- 桥接器模式:注意桥接器当前的操作模式,特别是是否处于根端口模式。这会影响MSI中断的使用和解释。
2 MSI中断
MSI中断(Message Signaled Interrupts)是PCI Express和AXI 桥接器中一种重要的中断机制。当msi_enable输出引脚指示桥接器已启用端点MSI功能(msi_enable = 1)时,intx_msi_request输入引脚被定义为MSI_Request,并可用于通过特殊的MemWr TLP(Memory Write Transaction Layer Packet,内存写事务层数据包)触发PCIe侧的外部根端口(Root Port)的消息信号中断。
intx_msi_request输入引脚是正边沿检测的,并且与axi_aclk_out同步。这个MemWr TLP中包含的地址和数据由PCIe侧集成块内的寄存器配置的外部根端口决定。请注意,intx_msi_request引脚输入仅在桥接器以端点模式(C_INCLUDE_RC=0)运行时有效。
此外,MSI功能现在支持AXI Memory Mapped to PCI Express core的端点配置上的多个向量。使用这里描述的握手协议,一个额外的输入值指定了要随MSI MemWr TLP一起发送到根端口的向量号。这在输入信号msi_vector_num上指定。这个信号是(4:0)位的,代表最多(32)个允许从端点发送的MSI消息(以及在配置后启用的消息)。
对于msi_vector_num输入信号上设置的任何位,如果没有在消息控制寄存器中分配,就会被该桥接器忽略掉。
Endpoint会请求一定数量的消息,这个数量在设计参数(针对AXI Memory Mapped to PCI Express)C_NUM_MSI_REQ中指定。根据规范要求,这个参数可以设置为最大5。C_NUM_MSI_REQ代表请求的MSI向量的数量。例如,C_NUM_MSI_REQ = 5表示请求2^5 = 32个MSI向量。这个参数值C_NUM_MSI_REQ被分配到消息控制寄存器的字段Multiple Message Capable的位(3:1)。
在配置完成后,分配的MSI向量的数量会在设计输出端口msi_vector_width中指定。这个宽度为(2:0)的信号的值最大只能是5(101),代表端点分配了32个MSI向量。输出值为6和7(即110和111)是保留的。msi_vector_width输出信号与消息控制寄存器的Multiple Message Enable字段位(6:4)中的值直接相关,如表3-5所示。
通过正确配置MSI相关参数和寄存器,桥接器可以精确地管理MSI中断的向量分配,确保每个向量都能被正确识别和处理。
在Endpoint PCIe系统中,如果需要为PCIe接口上的MSI(Message-Signaled Interrupts,消息信号中断)向量创建优先方案,确实可能需要额外的IP支持。MSI向量是PCIe设备用来通知主机系统有中断事件需要处理的一种机制。优先方案的设计则是为了确保在多个MSI向量同时发生时,系统能够按照预定的优先级顺序处理这些中断,从而提高系统的响应速度和效率。
在Endpoint PCIe系统中实现MSI向量的优先方案,可能涉及到硬件设计、驱动程序开发以及系统级的中断管理策略等多个方面。额外的IP可能包括用于实现优先级仲裁逻辑的硬件设计、驱动程序中的中断处理代码以及相关的系统配置和管理工具。
具体来说,这些IP可能用于:
- 设计并实现优先级仲裁器,用于在多个MSI向量之间确定处理顺序。
- 开发驱动程序中的中断服务程序,以根据优先级方案处理MSI向量。
- 提供系统级的配置选项,允许用户或系统管理员根据实际应用需求调整MSI向量的优先级。
请注意,具体的实现方式会根据具体的硬件平台、操作系统以及应用需求而有所不同。因此,在实际项目中,需要根据具体情况来评估和选择适合的IP解决方案,并确保其与现有系统的兼容性和性能优化。
3 Legacy Interrupts
Legacy 中断即传统中断,是指PCI设备使用的经典中断机制,而不是MSI(Message-Signaled Interrupts,消息信号中断)这样的现代中断方式。AXI Memory Mapped to PCI Express core支持PCI的传统中断,但这种支持是通过C_INTERRUPT_PIN参数来选择的。
具体来说,当C_INTERRUPT_PIN参数设置为1时(且C_INCLUDE_RC参数必须为0),桥接器会选择INTA作为中断信号。INTA是PCI规范中定义的传统中断信号之一。
如果选择了PCI的传统中断支持,并且msi_enable输出引脚指示桥接器的MSI功能被禁用(MSI_enable = 0),那么intx_msi_request引脚被定义为INTX。当INTX引脚变为高电平时,会发送一个INTA中断请求消息;当INTX引脚变为低电平时,会发送一个INTA中断撤销消息。这些中断消息需要与axi_aclk_out时钟同步,它们遵循PCI 2.1规范的定义。
另外,intx_msi_request引脚输入仅在桥接器以Endpoint模式(C_INCLUDE_RC=0)运行时有效。这表明AXI Memory Mapped to PCI Express core可以作为一个PCI Endpoint设备来操作,并接受传统中断信号。
在传统中断机制中,每个PCI设备都有一个或多个中断引脚(INTA, INTB, INTC, INTD),当设备需要通知主机系统有事件发生时,它会将这些引脚中的一个置为高电平。主机系统(通常通过PCI桥接器)会监测这些引脚的状态,并在检测到中断请求时执行相应的中断服务程序。
标签:msi,引脚,中断,Express,PCIe,PCI,桥接器,MSI From: https://blog.csdn.net/u011565038/article/details/136928042