Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CS 220 / ARM / ARM1176JZ-S Technical Reference Mmanual.pdf
Источник:
Скачиваний:
45
Добавлен:
16.04.2015
Размер:
4.47 Mб
Скачать

Vectored Interrupt Controller Port

12.3Timing of the VIC port

Figure 12-2 shows a timing example of VIC port operation. In this example IRQC is received followed by IRQB having a higher priority. The waveforms in Figure 12-2 show an asynchronous relationship between CLKIN and HCLK, and the delays marked Sync cater for the delay of the synchronizers. When this interface is used synchronously, these delays are reduced to being a single cycle of the receiving clock.

B1

Processor

clock

Peripheral port HCLK

IRQADDR[31:2]

nIRQ

IRQACK

IRQADDRV

IRQC

B2

B3

IRQB

B4

B5

B6

B7

B8

B9

B10

B11

B12

 

IRQC vector address

IRQB vector address

Address sampled

Sync

Sync

Sync

Sync

Figure 12-2 VIC port timing example

Figure 12-2 illustrates the basic handshake mechanism that operates between the processor and a PL192 VIC:

1.An IRQC interrupt request occurs causing the PL192 VIC to set the processor nIRQ input.

2.The processor samples the nIRQ input LOW and initiates an interrupt entry sequence.

3.Another IRQB interrupt request of higher priority than IRQC occurs.

4.Between B3 and B4, the processor decides that the pending interrupt is an IRQ rather than a FIQ and asserts the IRQACK signal.

5.At B4 the VIC samples IRQACK HIGH and starts generating IRQADDRV. The VIC can still change IRQADDR to the IRQB vector address while IRQADDRV is LOW.

6.At B6 the VIC asserts IRQADDRV while IRQADDR is set to the IRQB vector address. IRQADDR is held until the processor acknowledges it has sampled it, even if a higher priority interrupt is received while the VIC is waiting.

7.Around B8 the processor samples the value of the IRQADDR input bus and deasserts

IRQACK.

8.When the VIC samples IRQACK LOW, it stacks the priority of the IRQB interrupt and deasserts IRQADDRV. It also deasserts nIRQ if there are no higher priority interrupts pending.

9.When the processor samples IRQADDRV LOW, it knows it can sample the nIRQ input again. Therefore, if the VIC requires some time for deasserting nIRQ, it must ensure that IRQADDRV stays HIGH until nIRQ has been deasserted.

ARM DDI 0333H

Copyright © 2004-2009 ARM Limited. All rights reserved.

12-5

ID012410

Non-Confidential, Unrestricted Access

 

Vectored Interrupt Controller Port

The clearing of the interrupt is handled in software by the interrupt handling routine. This enables multiple interrupt sources to share a single interrupt priority. In addition, the interrupt handling routine must communicate to the VIC that the interrupt currently being handled is complete, using the memory-mapped or coprocessor-mapped interface, to enable the interrupt masking to be unwound.

12.3.1PL192 VIC timing

As its part of the handshake mechanism, the PL192 VIC:

1.Synchronizes IRQACK on its way in if the peripheral port clocking mode is asynchronous or bypasses the synchronizers if it is in synchronous mode.

2.Asserts IRQADDRV when an address is ready at IRQADDR, and holds that address until IRQACK is sampled LOW, even if higher priority interrupts come along.

3.Stacks the priority that corresponds to the vector address present at IRQADDR when it samples the IRQACK signal LOW, while IRQADDRV is HIGH.

4.Clears IRQADDRV so the processor can recognize another interrupt. If nIRQ is also to

be deasserted at this point because there are no higher priority interrupts pending, it is deasserted before or at the same time as IRQADDRV to ensure that the processor does not take the same interrupt again.

12.3.2Core timing

As its part of the handshake mechanism, the core:

1.Starts an interrupt entry sequence when it samples the nIRQ signal asserted.

2.Determines if an FIQ or an IRQ is going to be taken. This happens after the interrupt entry

sequence is started. If it decides that an IRQ is going to be taken, it starts the VIC port handshake by asserting IRQACK. If it decides that the interrupt is an FIQ, then it does not assert IRQACK and the VIC port handshake is not initiated.

3.Ignores the value of the nFIQ input until the IRQ interrupt entry sequence is completed if it has decided that the interrupt is an IRQ.

4.Samples the IRQADDR input bus when both IRQACK and IRQADDRV are sampled asserted. The interrupt entry sequence proceeds with this value of IRQADDR.

5.Ignores the nIRQ signal while IRQADDRV is HIGH. This gives the VIC time to deassert the nIRQ signal if there is no higher priority interrupt pending.

6.Ignores the nFIQ signal while IRQADDRV is HIGH.

ARM DDI 0333H

Copyright © 2004-2009 ARM Limited. All rights reserved.

12-6

ID012410

Non-Confidential, Unrestricted Access

 

Соседние файлы в папке ARM