The Configuration Interrupt Controller interface allows the user application to set Legacy PCIe interrupts, MSI interrupts, or MSI-X interrupts. The core provides the interrupt status on the configuration interrupt sent and fail signals. The following table defines the ports in the Configuration Interrupt Controller interface of the core.
Port | Direction | Width | Description |
---|---|---|---|
cfg_interrupt_int | Input | 4 |
Configuration INTx Vector When the core is configured as EP, these four inputs are used by the user application to signal an interrupt from any of its PCI functions to the RC using the Legacy PCI Express Interrupt Delivery mechanism of PCI Express. These four inputs correspond to INTA, INTB, INTC, and INTD. Asserting one of these signals causes the core to send out an Assert_INTx message, and deasserting the signal causes the core to transmit a Deassert_INTx message. |
cfg_interrupt_sent | Output | 1 |
Configuration INTx Sent A pulse on this output indicates that the core has sent an INTx Assert or Deassert message in response to a change in the state of one of the cfg_interrupt_int inputs. |
cfg_interrupt_pending | Input | 4 |
Configuration INTx Interrupt Pending (active-High) Per function indication of a pending interrupt. cfg_interrupt_pending[0] corresponds to physical function 0 and so on. Bits [3:2] are reserved. |
cfg_interrupt_msi_enable | Output | 4 |
Configuration Interrupt MSI Function Enabled Indicates that Message Signaling Interrupt (MSI) messaging is enabled per function. Bits [3:2] are reserved. |
cfg_interrupt_msi_vf_enable | Output | 8 |
Configuration Interrupt MSI on VF Enabled Indicates that MSI messaging is enabled, per virtual function. Bits [7:6] are reserved. |
cfg_interrupt_msi_int | Input | 32 |
Configuration Interrupt MSI Vector When the core is configured in Endpoint mode to support MSI interrupts, these inputs are used to signal the 32 distinct interrupt conditions associated with a PCI function (physical or virtual) from the user logic to the core. The function number must be specified on the cfg_interrupt_msi_function_number input. After placing the function number on the input cfg_interrupt_msi_function_number, the user logic must activate one of these signals for one cycle to transmit an interrupt. The user logic must not activate more than one of the 32 interrupt inputs in the same cycle. The core internally registers the interrupt condition on the 0-to-1 transition of any bit in cfg_interrupt_msi_int. After asserting an interrupt, the user logic must wait for the cfg_interrupt_msi_sent or cfg_interrupt_msi_fail indication from the core before asserting a new interrupt. |
cfg_interrupt_msi_sent | Output | 1 |
Configuration Interrupt MSI Interrupt Sent The core generates a one-cycle pulse on this output to signal that an MSI interrupt message has been transmitted on the link. The user logic must wait for this pulse before signaling another interrupt condition to the core. |
cfg_interrupt_msi_fail | Output | 1 |
Configuration Interrupt MSI Interrupt Operation Failed A one-cycle pulse on this output indicates that an MSI interrupt message was aborted before transmission on the link. The user application must retransmit the MSI interrupt in this case. |
cfg_interrupt_msi_mmenable | Output | 12 |
Configuration Interrupt MSI Function Multiple Message Enable When the core is configured in the Endpoint mode to support MSI interrupts, these outputs are driven by the Multiple Message Enable bits of the MSI Control registers associated with physical functions. These bits encode the number of allocated MSI interrupt vectors for the corresponding function. Bits [2:0] correspond to physical function 0 and bits [5:4] to physical function 1. Bits [12:6] are reserved. |
cfg_interrupt_msi_pending_status | Input | 32 |
Configuration Interrupt MSI Pending Status These inputs provide the status of the MSI pending interrupts for the physical functions. The setting of these pins determines the value read from the MSI Pending bits register of the corresponding PF. The MSI Pending bits register contains the pending bits for MSI Interrupts. A read from this location returns the state of MSI_MASK inputs of the core. This is a 32-bit wide RO register with a default value of MSI MASK inputs. Assert this signal together with cfg_interrupt_msi_pending_status and cfg_interrupt_msi_pending_status_function_num values to update the MSI Pending bits in the corresponding function. |
cfg_interrupt_msi_mask_update | Output | 1 |
Configuration Interrupt MSI Function Mask Update Asserted for one cycle when any enabled functions in the MSI Mask register change value. MSI Mask register contains the Mask bits for MSI interrupts. The Multiple Message Capable field in the MSI Control register specifies the number of distinct interrupts for the function, which determines the number of valid mask bits. This is a 32-bit wide RW register with a default value of 0. |
cfg_interrupt_msi_select | Input | 4 |
Configuration Interrupt MSI Select Values 0000b-0001b correspond to PF0-1 selection, and values 0010b-0111b correspond to VF0-5 selection. cfg_interrupt_msi_data[31:0] presents the value of the MSI Mask register from the selected function. When this input is driven to 1111b, cfg_interrupt_msi_data[17:0] presents the Multiple Message Enable bits of the MSI Control registers associated with all virtual functions. These bits encode the number of allocated MSI interrupt vectors for the corresponding function. cfg_interrupt_msi_data[2:0] correspond to virtual function 0, and so on. |
cfg_interrupt_msi_data | Output | 32 |
Configuration Interrupt MSI Data The value presented depends on cfg_interrupt_msi_select. |
cfg_interrupt_msi_pending_ status_function_num |
Input | 4 |
Configuration Interrupt MSI Pending Target Function Number You provide the function number (0-11), where values 0-3 corresponds to PF0-3, and value 4-11 corresponds to VF0-7. |
cfg_interrupt_msi_pending_ status_data_enable |
Input | 1 |
Configuration Interrupt MSI Pending Data Valid Assert this signal together with cfg_interrupt_msi_pending_status and cfg_interrupt_msi_pending_status_function_num values to update the MSI Pending bits in the corresponding function. |
cfg_interrupt_msix_enable | Output | 4 |
Configuration Interrupt MSI-X Function Enabled When asserted, indicates that the Message Signaling Interrupt (MSI-X) messaging is enabled, per function. |
cfg_interrupt_msix_mask | Output | 4 |
Configuration Interrupt MSI-X Function Mask Indicates the state of the Function Mask bit in the MSI-X Message Control field, per function. |
cfg_interrupt_msix_vf_enable | Output | 8 |
Configuration Interrupt MSI-X on VF Enabled When asserted, indicates that Message Signaling Interrupt (MSI-X) messaging is enabled, per virtual function. |
cfg_interrupt_msix_vf_mask | Output | 8 |
Configuration Interrupt MSI-X VF Mask Indicates the state of the Function Mask bit in the MSI-X Message Control field, per virtual function. |
cfg_interrupt_msix_address | Input | 64 |
Configuration Interrupt MSI-X Address When the core is configured to support MSI-X interrupts, this bus is used by the user logic to communicate the address to be used for an MSI-X message. |
cfg_interrupt_msix_data | Input | 32 |
Configuration Interrupt MSI-X Data When the core is configured to support MSI-X interrupts, this bus is used by the user logic to communicate the data to be used for an MSI-X message. |
cfg_interrupt_msix_int | Input | 1 |
Configuration Interrupt MSI-X Data Valid This signal indicates that valid information has been placed on the cfg_interrupt_msix_address[63:0] and cfg_interrupt_msix_data[31:0] buses, and the originating function number has been placed on cfg_interrupt_msi_function_number[3:0]. The core internally registers the associated address and data from cfg_interrupt_msix_address and cfg_interrupt_msix_data on the 0-to-1 transition of this valid signal. The user application must ensure that the cfg_interrupt_msix_enable bit corresponding to function in use is set before asserting cfg_interrupt_msix_int. After asserting an interrupt, the user logic must wait for the cfg_interrupt_msix_sent or cfg_interrupt_msix_fail indication from the core before asserting a new interrupt. |
cfg_interrupt_msix_sent | Output | 1 |
Configuration Interrupt MSI-X Interrupt Sent The core generates a one-cycle pulse on this output to indicate that it has accepted the information placed on the cfg_interrupt_msix_address[63:0] and cfg_interrupt_msix_data[31:0] buses, and an MSI-X interrupt message has been transmitted on the link. The user application must wait for this pulse before signaling another interrupt condition to the core. |
cfg_interrupt_msix_fail | Output | 1 |
Configuration Interrupt MSI-X Interrupt Operation Failed A one-cycle pulse on this output indicates that the interrupt controller has failed to transmit MSI-X interrupt on the link. The user application must retransmit the MSI-X interrupt in this case. |
cfg_interrupt_msi_attr | Input | 3 |
Configuration Interrupt MSI/MSI-X TLP Attr These bits provide the setting of the Attribute bits to be used for the MSI/MSI-X interrupt request. Bit 0 is the No Snoop bit, and bit 1 is the Relaxed Ordering bit. Bit 2 is the ID-Based Ordering bit. The core samples these bits on a 0-to-1 transition on cfg_interrupt_msi_int or cfg_interrupt_msix_int. |
cfg_interrupt_msi_tph_present | Input | 1 |
Configuration Interrupt MSI/MSI-X TPH Present Indicates the presence of a Transaction Processing Hint (TPH) in the MSI/MSI-X interrupt request. The user application must set this bit while asserting cfg_interrupt_msi_int or cfg_interrupt_msix_int, if it includes a TPH in the MSI or MSI-X transaction. |
cfg_interrupt_msi_tph_type | Input | 2 |
Configuration Interrupt MSI/MSI-X TPH Type When cfg_interrupt_msi_tph_present is
|
cfg_interrupt_msi_tph_st_tag | Input | 9 |
Configuration Interrupt MSI/MSI-X TPH Steering Tag When cfg_interrupt_msi_tph_present is
|
cfg_interrupt_msi_function_number | Input | 4 |
Configuration MSI/MSI-X Initiating Function Indicates the Endpoint function number initiating the MSI or MSI-X transaction:
|