Line 6... |
Line 6... |
[frame="topbot",grid="none"]
|
[frame="topbot",grid="none"]
|
|=======================
|
|=======================
|
| Hardware source file(s): | neorv32_xirq.vhd |
|
| Hardware source file(s): | neorv32_xirq.vhd |
|
| Software driver file(s): | neorv32_xirq.c |
|
| Software driver file(s): | neorv32_xirq.c |
|
| | neorv32_xirq.h |
|
| | neorv32_xirq.h |
|
| Top entity port: | `xirq_i` | IRQ input (up to 32-bit)
|
| Top entity port: | `xirq_i` | IRQ input (32-bit, fixed)
|
| Configuration generics: | _XIRQ_NUM_CH_ | Number of IRQs to implement (0..32)
|
| Configuration generics: | _XIRQ_NUM_CH_ | Number of IRQs to implement (0..32)
|
| | _XIRQ_TRIGGER_TYPE_ | IRQ trigger type configuration
|
| | _XIRQ_TRIGGER_TYPE_ | IRQ trigger type configuration
|
| | _XIRQ_TRIGGER_POLARITY_ | IRQ trigger polarity configuration
|
| | _XIRQ_TRIGGER_POLARITY_ | IRQ trigger polarity configuration
|
| CPU interrupts: | fast IRQ channel 8 | XIRQ (see <<_processor_interrupts>>)
|
| CPU interrupts: | fast IRQ channel 8 | XIRQ (see <<_processor_interrupts>>)
|
|=======================
|
|=======================
|
Line 20... |
Line 20... |
single _CPU fast interrupt request_.
|
single _CPU fast interrupt request_.
|
|
|
**Theory of Operation**
|
**Theory of Operation**
|
|
|
The XIRQ provides up to 32 interrupt _channels_ (configured via the _XIRQ_NUM_CH_ generic). Each bit in the `xirq_i`
|
The XIRQ provides up to 32 interrupt _channels_ (configured via the _XIRQ_NUM_CH_ generic). Each bit in the `xirq_i`
|
input signal vector represents one interrupt channel. An interrupt channel is enabled by setting the according bit in the
|
input signal vector represents one interrupt channel. If less than 32 channels are configure, only the LSB-aligned channels
|
|
are used while the remaining bits are left unconnected. An interrupt channel is enabled by setting the according bit in the
|
interrupt enable register `IER`.
|
interrupt enable register `IER`.
|
|
|
If the configured trigger (see below) of an enabled channel fires, the request is stored into an internal buffer.
|
If the configured trigger (see below) of an enabled channel fires, the request is stored into an internal buffer.
|
This buffer is available via the interrupt pending register `IPR`. A `1` in this register indicates that the
|
This buffer is available via the interrupt pending register `IPR`. A `1` in this register indicates that the
|
corresponding interrupt channel has fired but has not yet been serviced (so it is pending). An interrupt channel can
|
corresponding interrupt channel has fired but has not yet been serviced (so it is pending). An interrupt channel can
|