Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Altera_Forum
Honored Contributor I
744 Views

PCIe Compiler IRQ Handling SOPC

Hello, 

 

I have a question about the handling of the IRQs by the PCIe Compiler from Altera. Espacially what is happening if there is more then one Interrupt at a time. 

 

First of all I can see a single IRQ signal (RXmlrq_i) coming to the core with a specific IRQ number. 

( I have to route them by hand after generation of the SOPC-Builder http://www.altera.com/support/kdb/solutions/rd08032010_560.html (http://www.altera.com/support/kdb/solutions/rd08032010_560.html)) 

 

pcie_compiler_0_Rx_Interface_irq <= IRQ_0 or 

IRQ_1 or 

IRQ_2; 

 

If one of the three IRQs is coming from the local side the number is updated in the IRQ number Register (RXmIrqNum_i [5:0]). 

 

pcie_compiler_0_Rx_Interface_irqnumber <= std_logic_vector'("000000") when IRQ_0= '1' else 

std_logic_vector'("000001") when IRQ_1 = '1' else 

std_logic_vector'("000010") when IRQ_2 = '1'; 

 

My question is about the handling with multiple IRQs. 

 

Example: 

IRQ_0 has been shown at the core. The register is filled with "000000". The Host is reading the AVL_IRQ_INPUT_VECTOR from the configuration space of the pcie_compiler. Before he can do that, IRQ_2 is signaled and the value in the Register is changed to "000010". So we can say, IRQ_0 is lost. 

 

Is that a possible scenario? At this point I can not see any mechanism to store the single IRQs one after another. But if there is one, my next question would be, how is the priority handling realized? 

 

Thank you in advance for your answers!
0 Kudos
0 Replies
Reply