Guest
Hi,
I wanted to prepare a small IP core able to serialize multiple interrupts as MSI interrupts handled by the Xilinx AXI MM 2 PCIe bridge.
In the newest documentation ( http://www.xilinx.com/support/documentation/ip_documentation/axi_pcie/v2_7/pg055-axi-bridge-pcie.pdf ) it is stated that:
* Additional IP is required in the Endpoint PCIe system to create the
prioritization scheme for the MSI vectors on the PCIe interface.
(that's why I want to create that core)
* intx_msi_request
Initiates a MSI write request when msi_enable = 1.
Intx_msi_request is asserted for one clock period.
* The intx_msi_grant signal is asserted for one clock
period when the interrupt is accepted by the PCIe core.
Does it mean, that I should set the MSI interrupt number on msi_vector_num and assert intx_msi_request for one clock period, and then (with deasserted intx_msi_request) wait until intx_msi_grant goes high for one clock?
The more natural way would be for me to keep the intx_msi_request high until intx_msi_grant goes high...
Unfortunately the documentation does not contain any example timing diagram/waveform.
What if I have multiple interrupts to send?
Can I set the new msi_vector_num in the next cycle after asserting intx_msi_request, or should I keep the old value until it is confirmed by intx_msi_grant?
If the first option is right, may I assert intx_msi_request in the same cycle in which intx_msi_grant is asserted, to immediately send the next interrupt?
I've sent this question also to the Xilinx forum
( https://forums.xilinx.com/t5/PCI-Express/AXI-MM-2-PCIe-sending-MSI-interrupts/m-p/683865 ) but have receive no answer yet. Maybe somebody here
Thank you in advance,
With best regards,
Wojtek
I wanted to prepare a small IP core able to serialize multiple interrupts as MSI interrupts handled by the Xilinx AXI MM 2 PCIe bridge.
In the newest documentation ( http://www.xilinx.com/support/documentation/ip_documentation/axi_pcie/v2_7/pg055-axi-bridge-pcie.pdf ) it is stated that:
* Additional IP is required in the Endpoint PCIe system to create the
prioritization scheme for the MSI vectors on the PCIe interface.
(that's why I want to create that core)
* intx_msi_request
Initiates a MSI write request when msi_enable = 1.
Intx_msi_request is asserted for one clock period.
* The intx_msi_grant signal is asserted for one clock
period when the interrupt is accepted by the PCIe core.
Does it mean, that I should set the MSI interrupt number on msi_vector_num and assert intx_msi_request for one clock period, and then (with deasserted intx_msi_request) wait until intx_msi_grant goes high for one clock?
The more natural way would be for me to keep the intx_msi_request high until intx_msi_grant goes high...
Unfortunately the documentation does not contain any example timing diagram/waveform.
What if I have multiple interrupts to send?
Can I set the new msi_vector_num in the next cycle after asserting intx_msi_request, or should I keep the old value until it is confirmed by intx_msi_grant?
If the first option is right, may I assert intx_msi_request in the same cycle in which intx_msi_grant is asserted, to immediately send the next interrupt?
I've sent this question also to the Xilinx forum
( https://forums.xilinx.com/t5/PCI-Express/AXI-MM-2-PCIe-sending-MSI-interrupts/m-p/683865 ) but have receive no answer yet. Maybe somebody here
Thank you in advance,
With best regards,
Wojtek