
8-4
External Coprocessor Interface
Copyright 2000–2001 by LSI Logic Corporation. All rights reserved.
At the rising edge of CLK, if CPCLKEN is HIGH and nCPMREQ is LOW,
an instruction fetch is taking place. On the next rising edge of the clock,
when CPCLKEN is HIGH, the coprocessor instruction bus
(CPINSTR[31:0]) contains the fetched instruction.
In this case, the following occurs:
1.
The last instruction fetched enters the decode stage of the
coprocessor pipeline.
2.
The instruction in the decode stage of the coprocessor pipeline
enters its execute stage.
3.
The fetched instruction is sampled.
In all other cases, the ARM9E-S pipeline is stalled, and the coprocessor
pipeline does not advance.
During the execute stage, the condition codes are compared with the
status flags to determine whether the instruction can actually execute.
The output CPPASS is asserted (HIGH) if the instruction in the execute
stage of the coprocessor pipeline:
Is a coprocessor instruction
Has passed its condition codes
If a coprocessor instruction busy-waits, CPPASS is asserted on every
cycle until the coprocessor instruction is executed. If an interrupt occurs
during busy-waiting, CPPASS is driven LOW, and the coprocessor stops
execution of the coprocessor instruction.
Another output, CPLATECANCEL, cancels a coprocessor instruction
when the instruction preceding it causes a Data Abort. This output is
valid on the rising edge of CLK on the cycle that follows the first execute
cycle of the coprocessor instruction. This is the only cycle in which
CPLATECANCEL can be asserted.
On the rising edge of the clock, the ARM9E-S processor examines the
coprocessor handshake signals, CHSDE[1:0] or CHSEX[1:0], based on
the following criteria:
If a new instruction is entering the execute stage in the next cycle, it
examines CHSDE[1:0].