OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [docs/] [datasheet/] [soc_xirq.adoc] - Diff between revs 69 and 70

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 69 Rev 70
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.