Vectored interrupt controller, 1 introduction, Chapter 6. vectored interrupt controller -1 – Cirrus Logic EP93xx User Manual

Page 163: 1 introduction -1

Advertising
background image

DS785UM1

6-1

Copyright 2007 Cirrus Logic

6

6

6

Chapter 6

6

Vectored Interrupt Controller

6.1 Introduction

The EP93xx processors contain two cascaded Vectored Interrupt Controllers (VIC). A
Vectored Interrupt has improved latency compared with a simple interrupt controller, since it
provides direct information about where the interrupt’s service routine is located and
eliminates levels of software arbitration.

Each individual Vectored Interrupt Controller can handle up to 32 interrupts, but there are
more than 32 interrupts in this design. Therefore two VICs are connected in a daisy-chain,
which allows the system to handle up to 64 interrupt sources.

There are up to 16 vectored interrupts and 16 non-vectored interrupts available on each VIC.
Vectored interrupts can only generate an IRQ interrupt. Non-vectored interrupts can generate
either an IRQ interrupt or a FIQ interrupts. Vectored Interrupt Requests (IRQ) provide an
address for an Interrupt Service Routine (ISR). Reading from the vector interrupt address
register,

VICxVectAddr

, provides the address of the ISR, and indicates to the interrupt priority

hardware that the interrupt is being serviced. Writing to the

VICxVectAddr

register indicates

to the interrupt priority hardware that the interrupt has been serviced, allowing lower priority
interrupts to go active.

Registers in the VIC use a bit position for each different interrupt source. The bit position is
fixed, but the handling of each interrupt is configurable by the VIC. Software can generate
software interrupts by controlling each request line.

The VIC provides a software interface to the interrupt system. Two levels of interrupts are
available:

Fast Interrupt Request (FIQ) for fast, low latency interrupt handling

Interrupt Request (IRQ) for more general interrupts

All interrupt inputs to the VIC are presented as active-high level sensitive signals. Any
conditioning needed to achieve this is performed by the block generating the interrupt
request. In the case of external interrupts, the GPIO block takes care of the conditioning.

Note: Some GPIO signals are not configurable but are used as inputs by other functional

blocks. EGPIO[2:1] are routed to the DMA controller to allow for external DMA requests.

Note: An interrupt vector may be overwritten when two interrupts occur simultaneously. If a

VIC2 interrupt is immediately followed by a VIC1 interrupt, the VIC1 address will
incorrectly be the default handler address for 2 HCLK cycles. To work around this
problem, first check for pending non-vectored VIC1 interrupts in the interrupt routine. If
there are none then return from interrupt. The interrupt will immediately re-occur with the
correct vector address.

Advertising