|
VMEbus is a computer bus standard originally developed
for the Motorola 68000 line of CPUs, but later widely used for many applications. It is physically based on the Eurocard sizes, mechanicals and connectors, but uses its own signalling system, which Eurocard does not define. It
was first developed in 1981, and continues to see widespread used today.
History
In 1979 Motorola were developing their new 68000 CPU, and one of their
engineers, Jack Kister, desided to set about creating a standardized bus system for 68000-based systems, which he called
VERSAbus. He was later joined by John Black, who refined the specifications and created the
VERSAmodule product concept. Sven Rau and Max Loesel of Motorola-Europe added a mechanical specification to the
system, basing it on the Eurocard standard that was then late in the
standardization process. The result was first known as VERSAbus-E, but was later renamed to VMEbus, for
VERSAmodule Eurocard bus (although some refer to it as Versa Module Europa).
At this point a number of other companies involved in the 68000's ecosystem agreed to use the standard, including Signetics,
Phillips, Thompson, and Mostek, and soon it was being officially standardized by the IEC as
ANSI/IEEE 1014-1987.
The original standard was a 16-bit bus, designed to fit within the existing Eurocard
DIN connectors. However there have been several updates to the system to allow wide bus
widths, and the current VME64 includes a full 64-bit bus in a 6U sized
card, and 32-bit for 3U cards. Other associated standards have added hot swapping
(plug-and-play) in VME64x, smaller cards known as IP's that plug into a
single VMEbus card, and various interconnect standards for linking VME systems together.
VMEbus was also used to develop a closely related standard, VXIbus.
Description
In many ways the VMEbus is the pins of the 68000 run out onto a backplane. In
most cases this is a bad design, because it limits you to systems similar to the chipset the bus was originally designed for, the
ISA bus is still useful only for Intel chips
for instance. However one of the key features of the 68000 was a flat 32-bit memory
model, free of memory segmentation and other "anti-features". The
result is that while VME is very 68000-like, the 68000 is generic enough to make this a non-issue in most cases.
Like the 68000, VME uses separate data and address buses, both 32-bits. In the case of the 68000 the address bus was actually
24-bits and the data bus 16-bits (although it was 32/32 internally), but the designers were already looking towards full 32-bit
implementations. In order to allow both widths of buses to be used, VME uses two different Eurocard connectors, the P1 and P2. P1
contains three rows of 32 pins each, implementing the first 24-bits of the address and 16-bits of the data buses, along with all
of the control signals. The P2 contains one more row, which includes the remaining 8 address and 16 data pins.
In order to control the bus a set of nine lines known as the arbitration bus is used. All communications are
controlled by the card inserted in slot one of the Eurocard chassis, known as the arbiter module. In general use the
cards will request access to the bus by holding the bus request in lines of the arbitration bus low to indicate their
slot number. When the arbiter module frees the bus it scans these lines to see if there are any held low. If so, it pulls the
bus busy line low to indicate the bus is going busy again, and writes the card number back out on the bus grant
out lines.
At this point the numbered card has gained access to the bus. To write data the card writes the address and data to the bus,
and then pulls the address strobe line and the two data strobe lines low to indicate the data is ready, and
then pulls the write pin to indicate the operation. There are two data strobes so the cards can indicate if the data is 8, 16, or
32 bits (or 64 in VME64). The card at the indicated address on the bus then reads the data and pulls the data transfer
acknowledge line when it is complete (or the bus error line if need be). Reading data is essentially the same, but
the controlling card places only the address on the bus and pulls the READ pin. The other card then writes the data and pulls the
data strobe pins when the data is ready.
VME also includes an interrupt bus, supplying all seven of the 68000's interrupt pins. When an interrupt is supplied the
arbiter module writes the interrupt level back out to the address bus to tell which interrupt is being handled. Note that there
is no concept of card number in this case, because cards will often share interrupts. The excessive number of interrupt levels
has often been pointed to as one of the few examples of overdesign in the 68000, and it makes even less sense in the case of a
bus.
Note that in VME all transfers are DMA and every card is
a master (or slave). In most bus standards there is a considerable amount of complexity added in order to support various
transfer types and master/slave selection. For instance, in the ISA bus both of these
features had to be added on top of the already existing "channels" model where all communications was handled by the host
CPU. This makes VME considerably simpler at a conceptual level while being more powerful,
although it requires somewhat more complex controllers on each card in order to work.
External links
|