Issue
109, August 1999
Using
System-on Chip Design with Virtual components
Multiple
VC Applications
Its
becoming common for an SOC design to use more than one
VC. Although there may be no direct interaction between
one VC and another, in other cases they may be linked
on a common bus. The term "on-chip bus" (OCB)
describes a formally specified bus that interconnects
multiple VC blocks within a single chip.
An
OCB is likely to fall into one of two categoriessystem
or peripheral bus. A system bus connects an embedded
processor or DSP with the memory controller and higher
speed I/O devices. A peripheral bus connects to lower
speed I/O technologies.
An
interface block generally bridges these two buses, although
some embedded processors directly drive both buses.
In SOC designs with multiple embedded processors, the
processors generally communicate over the system bus.
Figure
2 shows an SOC that has both system and peripheral OCBs.
In an actual chip, the system bus might link to a 400-Mbps
1394 interconnect VC and the peripheral bus would support
slower I/O technologies such as USB, RS-232, and IrDA
(infrared). Its also possible for the SOC designer
to create custom I/O blocks that connect to an OCB to
support functions not available from commercial VC sources.
Figure 2System-on-chip
designs may contain both a system bus connect
and a peripheral bus connect. Custom I/O blocks
that provide functions not commercially available
may also be included.
|
It
would be nice if widely adopted OCB standards existed,
but this is not the case. Nearly every embedded processor
has its own proprietary system bus; some have defined
proprietary peripheral buses as well. This situation
can make it difficult to take a VC designed for an SOC
with one embedded processor and move it to a different
chip. A few buses (e.g., AMBA buses for ARM processors)
are supported widely enough to be considered a de facto
standard in some application spaces.
One
interesting option for a peripheral OCB is an on-chip
version of PCI. Several popular embedded processors
are available in versions that provide PCI support,
and many interconnect VC families include an option
for PCI support on the application interface. Using
a PCI OCB also enables existing PCI-based chips to be
easily transformed into macros for use in larger SOC
designs in newer technologies.
The
size of a PCI VC, which usually ranges from 7k to 15k
gates, is not a major issue in the context of a million-gate
SOC. Other objections to PCI as an OCB (e.g., its use
of tristates and multiplexed address/data lines) can
be addressed by using a PCI derivative.
In
fact, a number of SOC designers use PCI or a derivative
bus as an OCB. Figure 3 shows one interesting application,
a multiprotocol I/O controller.
Figure 3A
multiprotocol I/O controller can be enabled
using PCI as an on-chip bus. In this application,
a PCI-to-PCI bridge supports multiple I/O technologies
using a single PCI load or slot.
|
This
design allows multiple I/O technologies (e.g., USB,
1394, and Ethernet) to be combined by using a VC with
PCI for each and then using a PCI OCB to link the VCs
together. A PCI-to-PCI bridge permits this wide range
of I/O support while using only a single PCI load on
the motherboard or a single PCI slot in the system.
VSI
is tackling the OCB issue by defining the virtual component
interface (VCI), a standard application interface for
VC designs done in-house or available from commercial
IP suppliers. VCI is not an OCB but a standard VC interface
that enables OCB usage.
The
idea is that the SOC designer needs to develop only
a bus translator from VCI to the chosen OCB. With this
translator, any VCI-based block can easily be connected
to a given OCB. VCI has been defined for easy translation
to popular OCBs (including PCI) and translators for
such buses will be available as licensable IP.