Building the main processor system solely within the self-contained walls of the OpenBus System document will be an attractive solution for the majority of designs. However, you may need (or even want) to separate certain devices from the system, and have them reside on the top-level schematic sheet. For example, you may be using additional components that are not supported as graphical representations in the OpenBus Palette panel, and therefore cannot be placed within the OpenBus System document. Not a problem.
Two connector components are available from the OpenBus Palette panel that facilitate the use of external, schematic-based devices, within the overall processor-based system:
Bus Importer component. This component exposes bus interface signals external to the OpenBus System document. It allows you to wire from the master interface of a device on the schematic sheet to a slave port of a component in the OpenBus System.
Bus Exporter component. This component exposes bus interface signals external to the OpenBus System document. It allows you to wire from the master port of a component in the OpenBus System to the slave interface of a device on the schematic sheet.
There's nothing like an example to better illustrate a concept and hit home the power of a feature. To give you an idea of how these Bus Importer and Exporter components are used in a design, let us consider the base FPGA design and constituent OpenBus System in Figure 1.
To keep this example simple, we will just add a couple of devices to the top-level schematic – a MicroBlaze 32-bit RISC processor and an Infrared Decoder (Figure 2).
In this example, the processor will share access to the bank of peripherals currently accessed by the TSK30000A. The Infrared Decoder will be an addition to this group, resulting in the two processors sharing access to the following five peripheral devices:
- Floating Point Unit
- Parallel Port Unit
- SPI Controller
- VGA Controller with TFT Interface
- Infrared Decoder.
The first step is to modify the OpenBus System document, with use of Bus Importer and Exporter components to provide links to the external processor and Infrared Decoder devices respectively (Figure 3).
Notice also, the use of a second Arbiter component in the system, to allow the two processors to share the peripherals.
Prior to returning to the schematic sheet to finalize the wiring, there are some additional configuration steps to be performed from the OpenBus System document.
Firstly, the Bus Importer and Exporter components must be configured in relation to the external interfaces they are connecting to. This involves setting the Address Mode, Address and Data bus widths, as well as specifying that data and select lines are to be made available outside of the OpenBus System document (Figure 4).
Next, the base address for the Infrared Decoder peripheral must be defined, in the configuration dialog for the associated Interconnect component (Figure 5). The initial information comes directly from the configured Bus Exporter component.
The new peripheral is automatically mapped into the TSK3000A processor's address space (Figure 6).
Once the wiring and configuration is finalized in the OpenBus System document, you can then turn your attention back to the schematic top-sheet.
Use the Synchronize Sheet Entries and Ports feature for the sheet symbol, and place the additional sheet entries relating to the Bus Importer and Exporter components. Rearrange sheet entries within each interface as necessary and then wire each interface signal to its corresponding pin of the processor and Infrared Decoder devices (Figure 7).
Once the wiring is in place, the processor in the OpenBus System has access to the Infrared Decoder device. Likewise, the processor on the schematic can access both the peripheral on the sheet, as well as all peripheral devices defined in the underlying OpenBus System. Remember to map the peripherals into the schematic processor's memory.