Figure 1 shows the overall structure of the BusMatrix.
The design is made up of the following blocks:
- Input stage
There is one input stage for each layer input port. The input stage is responsible for holding the address and control information when the transfer to a shared slave is not able to commence immediately.
- Decode stage
Each layer input port also has a decoder associated with it. The decoder determines which shared slave a transfer is destined for.
- Output stage
Each shared slave has an output stage which is used to select which of the various input layers is routed to the slave.
- Output arbiter
Each output stage contains an output arbiter. The arbiter looks at which of the input stages has to perform a transfer to the shared slave and decides which is currently the highest priority.
- Top level
The top level of the BusMatrix connects each input stage or decoder to all the output stages.