The Interrupt System can forcedly place calls into the pipeline stage s3, as a result of specific IO activity.
The core of the Interrupt System is the Interrupt Manager module. It prioritizes the interrupt sources, checks if interrupts are enabled and if the pipeline is ready to process interrupts, and finally sends interrupt requests to the pipeline, together with the associated interrupt vector and other pipeline control signals.
The pipeline acknowledges interrupt requests by forcing the Instruction Decoder to decode a call instruction, with the absolute jump address given by the Interrupt Manager. Next 2 instructions, that were already uselessly fetched, are flushed.
The interrupt vectors are parameterized, and can be placed anywhere in the Program Memory.
Every interrupt has a parameterized priority.
In the present implementation, up to 32 interrupt sources are handled.
2 interrupt sources are implemented: external interrupt 0 and timer 0 interrupt.
Because the Interrupt Manger shares much with the IO File, it is not built as a separate entity, but rather embedded into the IO File. The Interrupt Manager might be implemented as separate entity in a future version of pAVR.
The interrupt latency is 5 clocks (1 clock needed by the interrupt manager and 4 clocks needed by the implicit call).
Generated on Tue Dec 31 20:26:31 2002 for Pipelined AVR microcontroller by
@Importing into repository the new directory structure.