
ARM9E-S Coprocessor Interface
6-2
Copyright 2000 ARM Limited. All rights reserved.
ARM DDI 0165B
6.1
About the coprocessor interface
The ARM9E-S supports the connection of coprocessors. All types of ARM
coprocessors are supported. Coprocessors determine the instructions they need to
execute using a pipeline follower in the coprocessor. As each instruction arrives from
memory, it enters both the ARM pipeline and the coprocessor pipeline. The coprocessor
determines when an instruction is being fetched by the ARM9E-S, so that the
instruction can be loaded into the coprocessor, and the pipeline follower advanced.
The coprocessor can be run either in step with the ARM9E-S pipeline, or one cycle
behind, depending on the timing priorities. The implications of the two approaches are
discussed in:
6.1.1
Coprocessor pipeline operates in step with the ARM9E-S
In this case, the pipeline follower inside the coprocessor matches that of the ARM9E-S
exactly. This complicates the timing of key signals such as the INSTR and CLKEN
inputs, because these now become more heavily loaded and therefore incur more delay.
For this reason, this method is only recommended for tightly integrated coprocessors
such as CP15, the system coprocessor.
6.1.2
Coprocessor pipeline one cycle behind the ARM9E-S
This method is recommended for external coprocessors. A coprocessor interface block
pipelines the instruction and control signals so that the loading is reduced on these
critical signals. This means that the pipeline in the coprocessor operates one cycle
behind the ARM9E-S pipeline. The disadvantage of this is that outputs of the
coprocessor are still expected in the correct pipeline stage, as seen from the ARM9E-S.
The most critical signal in this situation is likely to be CHSD[1:0], the coprocessor
decode handshake signal. This must return the availability of the coprocessor by the end
of the decode cycle, as seen by the ARM9E-S. This is equivalent to the fetch cycle of
the coprocessor pipeline, and therefore there is not much time to generate this signal.
This means that the design might have to insert wait states for external coprocessor
accesses.
There are three classes of coprocessor instructions:
LDC
/STC
MCR
/MRC
CDP
.