Figure 61: interrupt controller block diagram – Digi NS9750 User Manual

Page 292

Advertising
background image

I n t e r r u p t c o n t r o l l e r

2 6 8

N S 9 7 5 0 H a r d w a r e R e f e r e n c e

Figure 61: Interrupt controller block diagram

The IRQ interrupts are enabled by the respective enabling bits. Once enabled, the
interrupt source programmed in the Interrupt Configuration register for each priority
level connects the interrupt to one of 32 priority lines going into the priority encoder
block
. The priority encoder block has a fixed order, with line 0 as the highest priority.
The interrupt with the highest priority level has its encoded priority level displayed,
to select the appropriate vector for the ISRADDR register (see "ISRADDR register" on
page 288). The CPU, once interrupted, can read the ISRADDR register to get the
address of the Interrupt Service Routine. A read to the ISRADDR register updates the
priority encoder block, which masks the current and any lower priority interrupt
requests. Writing to this address indicates to the priority hardware that the current
interrupt is serviced, allowing lower priority interrupts to become active.

The priority encoder block enables 32 prioritized interrupts to be serviced in nested
fashion. A software interrupt can be implemented by writing to a software interrupt
register. The software interrupt typically is assigned level 1 or level 2 priority.

Interrupt sources

An Interrupt Status register shows the current active interrupt requests. The Raw
Interrupts register shows the status of the unmasked interrupt requests.

Interrupt Source 0
Interrupt Source 1

Interrupt Source 31

Priority Level 1

Interrupt Source ID Reg 1

Interrupt Source 0

Interrupt Source 1

Interrupt Source 31

Priority Level 0 (highest)

Interrupt Source ID Reg 0

Interrupt Source 0
Interrupt Source 1

Interrupt Source 31

Priority Level 31 (lowest)

Interrupt Source ID Reg 31

Priority

Encoder

IRQ

FIQ

Interrupt Vector Address Reg Level 1

Interrupt Vector Address Reg Level 31

Interrupt Vector Address Reg Level 0

Winning Priority Level

ISADDR Reg

Active Interrupt Level Reg

Enable

Invert

Enable

Invert

Enable

Invert

Advertising