Altera_Forum
Honored Contributor
12 years agoImplementing MSI/X Interrupts using Cyclone V Hard IP for PCI Express
Hello,
I'm fairly new to using Altera tools but I've been having problems setting up MSI/X interrupts in Qsys. I thought I would include as much info as I can in the bullet points below for your info. - Using cyclone v gx FPGA with avalon-mm Hard IP for PCIe within Qsys. - Hard IP is configured as a native endpoint, currently trying to setup MSI interrupt to be sent across a PCIe lane to a host (x86 root port). - Using x1 lane, Gen1 using the 62.5 MHz app clock. - Have multiple BARs enabled as 32-bit non pre-fetchable memory (Avalon Masters). - CRA control register slave port enabled. - Connected to our Hard IP, we have 4 slave devices each with the ability to send an IRQ. These are interconnected to the Hard IP Rx_BAR0 IRQ0-IRQ15 (Currently 0 - 3). - Set the MSI to request 4 messages. Basically our software driver in the host is not able to see more than 1 MSI interrupt being triggered. We have also tried implementing MSI-X but are unable to see any interrupts being triggered. There is an option in the Hard IP called "enable multiple msi/msi-x support"? I thought that a single MSI/X is able to send data regarding several interrupts/messages? According to the documentation if the above option is enabled, I would need to implement a custom IRQ handler in Qsys. Is this necessary based on my requirements? Regards, J