Forum Discussion

fa_fpga_enthusiast's avatar
fa_fpga_enthusiast
Icon for Occasional Contributor rankOccasional Contributor
11 months ago

Nios V Hardware Interrupt Limitations

Hello,

Based on the Nios V Processor Reference Manual and AN 978 Nios V Processor Migration Guidelines, Nios V supports only 16 hardware interrupts, whereas Nios II supports 32. Additionally, the External Interrupt Controller is not available in Nios V.

Since Nios II has been deprecated, we are evaluating the transition to Nios V. However, our system requires more than 16 hardware interrupts.

Does Intel provide any recommended approach for handling more than 16 hardware interrupts in Nios V? Are there plans to extend this capability in future releases?

Best regards.

12 Replies

  • fa_fpga_enthusiast's avatar
    fa_fpga_enthusiast
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    Thank you for your response.

    I initially understood that the IRQ Bridge could be used as a multiplexing mechanism to connect multiple interrupt sources to a single IRQ line on Nios V. However, after reviewing its configuration, it seems that the IRQ signal width must be set to match the exact number of sender IRQs, meaning it does not dynamically multiplex interrupts.

    For example, if I set the IRQ signal width to 2, the receiver_irq port becomes 2 bits wide (receiver_irq[1:0]), and exactly two interrupt sender ports (sender0_irq and sender1_irq) are created. If I then try to connect a third interrupt source, Platform Designer throws an out-of-range error, preventing me from adding more sources than the set width allows. This suggests that the IRQ Bridge does not act as an interrupt multiplexer in the way I originally assumed.

    Based on the link that you shared, The IRQ Bridge Intel FPGA IP allows us to route interrupt wires between Platform Designer subsystems.

    Given that Nios V has a limited number of IRQ lines and does not support an external interrupt controller, how do you expect us to use the IRQ Bridge to overcome these limitations? If the IRQ Bridge does not support dynamic multiplexing, is there another recommended approach for handling more interrupts than the CPU natively supports?

    One possible solution would be to develop a custom interrupt bridge that aggregates different interrupts into a register and generates a single interrupt for the processor when any of the sources become active. The processor could then access this register via the Avalon interface to determine the original interrupt source. However, we would like to know Intel’s recommended approach for handling this scenario.

    Best regards.

  • tehjingy_Altera's avatar
    tehjingy_Altera
    Icon for Regular Contributor rankRegular Contributor

    Hi


    Sorry for the confusion, the IRQ Bridge just reroutes the interrupt.

    It does not increase the interrupt number of the NiosV.

    After confirming with my colleague, the NiosV current interrupt limitation is at 16 interrupts.

    This is limited by the hardware design of the NiosV, however there are plans to increase the interrupt numbers in the future release.


    Regards

    Jingyang, Teh


  • fa_fpga_enthusiast's avatar
    fa_fpga_enthusiast
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    Thanks for your response.

    Do you know in which future Quartus version the number of hardware interrupts for Nios-V will be increased?

    In the meantime, we may need to develop a custom "External Interrupt Controller" to aggregate multiple peripheral interrupts into a single interrupt for the processor.

    Best regards.

  • tehjingy_Altera's avatar
    tehjingy_Altera
    Icon for Regular Contributor rankRegular Contributor

    Hi


    From a quick discussion internally they mentioned they are planning to increase the interrupt in 25.1 but software support will be in a later not confirm release.

    At this point I have raised it up to the team and they are aware of this and looking at improve the interrupt numbers.


    Regards

    Jingyang, Teh


  • tehjingy_Altera's avatar
    tehjingy_Altera
    Icon for Regular Contributor rankRegular Contributor

    Hi


    I will now transition this thread to community support. If you have a new question, Please login to ‘https://supporttickets.intel.com/s/?language=en_US’, view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you on your follow-up questions.


    Regards

    Jingyang, Teh



  • fa_fpga_enthusiast's avatar
    fa_fpga_enthusiast
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    We wanted to check if there have been any updates or progress on this ticket.

    Thank you very much for your support.

    Best regards,

    • RichardH_Altera's avatar
      RichardH_Altera
      Icon for New Contributor rankNew Contributor

      Hi,

      The Nios V/g CPU now supports the Core Level Interrupt Controller, which extends the number of interrupt sources to 2048. The Nios V/c supports the ext_int input, which can be used to connect an external interrupt controller.

      Kind regards,
      Richard

      • fa_fpga_enthusiast's avatar
        fa_fpga_enthusiast
        Icon for Occasional Contributor rankOccasional Contributor

        Hello,

        Thank you for the clarification.

        Could you please confirm from which Quartus version the following features are officially supported?

        1. Core Level Interrupt Controller support for Nios V/g (up to 2048 interrupt sources)
        2. Support for the ext_int interface on Nios V/c for connection to an external interrupt controller

        In particular, we would like to know whether these capabilities are already available in Quartus 25.1.

        Kind regards,