[sci.electronics] PMBUS - a public domain, low cost system bus.

eeyore@cs.qmw.ac.uk (Mark Anthony Brown) (02/07/91)

The following is a specification for a public domain system bus,
primarily designed for 68000-based machines. A TeX-format version will
be posted after this.

-----------------------------------------------------------------------


                               The PMBUS
			       =========

			Revision 5: December 1988

General
-------

The PMBUS was developed in 1982 to address the need for a fast, low-cost
system bus for the emerging 16/32-bit processors.  Today it is in use in
commercial products from various companies, ranging from workstations to
embedded controllers. 

The PMBUS specification is completely public-domain.  It may be copied and
distributed freely, and may be implemented for any purpose without
restriction. 


Introduction
------------

The PMBUS is a modular, expandable bus system for 16 and 32 bit micro systems. 
Although designed primarily for the MC68000, it is compatible with most
current and projected 16 and 32 bit micros.  The bus protocol and timings are
based closely on those of the 68000, as this makes implementation on a 68000
simple, while most other processors can be interfaced with some simple logic. 

The PMBUS is implemented on three levels, and uses a double-size (standard or
extended) Eurocard format with single or dual DIN 41612 (A+B) connectors. 
Level 0, using the lower connector only, provides a low-cost approach for
systems with a memory space of up to 128 Kbytes, and three separate
prioritized interrupts.  It is directly up-compatible to level 1, which
provides a full 16 Mbyte address range, eight levels of interrupt, prioritised
DMA, multi-processor systems and full virtual memory, using two DIN
connectors. 

Level 2 provides true 32 bit operation.  Dynamic data bus sizing is provided,
allowing Level 0/1 hardware to be accessed at its proper location, and in
particular allowing Level 0/1 devices to appear 32 bits wide, so that Level
0/1 memories etc can be used, albeit with a speed penalty since twice as many
accesses are required. 


Implementation
--------------

Since the PMBUS is based around the bus protocol and timings of the 68000,
some familiarity with the 68000 bus is assumed; this document will not
describe the 68000 bus in detail.  Full timings are given, however, as these
are system-level timings taking into account such things as buffer propagation
delays. 


Structure of the PMBUS
----------------------

The PMBUS requires only a simple backplane, running all lines in parallel to
all cards.  A simple groundplane should be used; a normal double-sided PCB
provides a perfectly adequate structure with the tracks on one side and a
groundplane on the other.  Unlike many other bsuses, the PMBUS does not
require elaborate multilayer PCBs. 

The PMBUS also avoids complex and costly termination schemes.  The DATA lines,
which do not require ultra-fast, ringing-free edges, are normally driven with
standard LSTTL devices, while the address and control lines use high-threshold
CMOS devices to minimise susceptibility to noise.  For these lines, simple
series termination (22ohm typical) will suffice, and is only required on cards
capable of assuming bus mastership.  Some slower PMBUS implementations
dispense with the terminations altogether. 

One board (usually the main CPU) is designated as overall bus controller, and
generates the clocks CLK and E.  Other potential bus masters, such as other
CPUs and DMA peripherals, are designated DMABMDs (Direct Memory Access
Bus Master Devices).


Logic Levels and Electrical Considerations
------------------------------------------

To maximise the noise immunity of critical signals, some lines (addresses and
some control lines) are noted as 'H' (High threshold) in the definition below;
these are to be driven to CMOS logic levels (e.g.  by 74HCT or 74ACT series
drivers) rather than LSTTL levels, which are acceptable for all other signals. 
Receivers may use CMOS or TTL thresholds, at the card designer's discretion,
but in the interests of reliability, cards which cannot tolerate ringing or
other noise on signal transitions should use CMOS thresholds.  FTTL is
acceptable in many applications, as it has significantly more noise immunity
than LSTTL, although CMOS levels are to be preferred.  When designing,
remember that 74HCT and 74ACT devices have TTL, not CMOS, input thresholds. 

The drive requirements are as follows: Open-collector lines (*1 below) may be
driven by standard-drive (8mA) LSTTL or CMOS open-collector gates; all
non-open-collector lines must be driven with high-drive (e.g.  '244, '541,
'245, '374 etc) drivers of the appropriate (CMOS or TTL) family.  Note that
there is no objection to driving the TTL-level lines to CMOS levels, however. 
Also, when the 74AC/74ACT family is used, any device type may be used, as all
outputs have 24mA drive. 

RESET' on the bus is bidirectional and therefore unbuffered (from a 68000
CPU); HALTO' is buffered on the CPU card.  Other open-collector lines are
inputs to the microprocessor and should in general not be buffered to maintain
speed, with the exception of BGAK', which when asserted tri-states all
non-open-collector lines except CLK, BG', and E, and must therefore be
buffered so as to present a low capacitive load to the bus rather than
controlling numerous buffers directly. 

The open-collector lines should be terminated at the master CPU card by the
following resistances to +5V:

	 RESET':  				4k7
	 DTAK', BERR', VPA', BR', BGAK', SIZE': 560 ohms
	 I1'--I7', HALTI', WAIT':  		2k2

The 560R pull-ups ensure a quick rise time for those signals which require it,
even with the capacitance of a large backplane with many cards.  Additionally,
the lines INTAK', IOS' and HALTO' should be pulled up with 4k7 resistors on
the master CPU card so that DMA devices which do not require these lines can
leave them undriven without them becoming spuriously asserted. 


PMBUS LEVEL 0 -- Bottom connector
---------------------------------

Pin	  Function	Notes
---	  --------	-----
AB 1/2    GND 
AB 31/32  +5V 
AB 3      +12V 
A 4       PWRFAIL'  *6H   Power supply failure warning 
A 5       -12V 
A 6-21    D0-D15          16 bit data bus (bidirectional)
A 22      RADS        H   Active high address strobe for lower 128kb
A 23      UDS'        H   Upper data strobe
A 24      LDS'        H   Lower data strobe
A 25      DS'         H   Data strobe
A 26      RESET'    *2    Reset input/output
A 27      HALTI'    *1    Processor halt input
A 28      R/W'        H   Write strobe
A 29      AS'         H   Address strobe for any access
A 30      DTAK'     *1    Data transfer acknowledge
B 4       (reserved)      (Unused on revision 5)
B 5       CLK         H   Processor clock output
B 6-21    A1-A16      H   Reduced address bus
B 22      BERR'     *1    Bus error signal
B 23      IOS'      *3H   Address strobe for I/O page
B 24      VPA'      *1    Request for 6800-type synchronous bus cycle
B 25      VMA'        H   Shows 6800-type cycle in progress
B 26      E           H   Clock for 6800-type cycles
B 27      I1'       *1    Priority 1 interrupt (maskable)
B 28      I2'       *1    Priority 2 interrupt (maskable)
B 29      I7/NMI'   *1    Non-maskable priority 7 interrupt
B 30      INTAK'       H  Interrupt acknowledge


PMBUS LEVEL 1 -- Top connector
------------------------------

Pin	  Function	Notes
---	  --------	-----
AB 1      GND   
A 2       BGAK'     *1    Bus grant acknowledge
A 3       BG'         H   Bus grant
A 4       BR'       *1    Bus request
A 5-7     FC0-2       H   Processor function codes
A 8-11    I3-6'     *1    Maskable interrupts
B 2-8     A17-A23     H   Extended address bus
B 9       HALTO'      H   Active if HALTI' low or CPU halts
B 10      WAIT'     *1,4  Disables nonresponding device timer
B 11      REFCLK    *4H   Refresh control line for d-RAM controller
B 21-27   DP1-7'    *1    DMA priority signals


PMBUS LEVEL 2 -- Top connector
------------------------------

Pin	  Function	Notes
---	  --------	-----
A 12-19   D16-D23         Extended data bus
A 20      XLDS'       H   Data strobe for D16--23
A 21      SIZE'     *1,5  Indicates 32--bit wide device addressed
B 12-19   D24-D31         Extended data bus
B 20      XUDS'       H   Data strobe for D24--31


Notes
-----

*1 Open collector common line. Any device may operate line as required.

*2 Resets CPU if HALTI' is also low. Also resets external devices.

*3 Defined on CPU card; goes low when AS' is active and address is within a
   256 word (512 byte) block reserved for I/O devices.  This may be mapped into
   the main address space or be a separate space, according to the processor
   used and the designer's preference. 

*4 Optional extension.  These lines are reserved for the purpose indicated but
   are frequently not implemented.  If your design uses them, proceed with
   caution. 

*5 The PMBUS is by default 16 bits wide (although byte-wide devices will
   ignore half the bus), and even if a 32 bit processor is installed, bus
   cycles are by default 16 bits.  If a device capable of 32 bit operation is
   addressed, it pulls down SIZE' (no later than it asserts DTAK') to show it
   is using the entire 32 bit data bus (gated by XUDS' and XLDS' from the
   processor).  Note that for a processor using 68020-style databus ordering,
   on a 32 bit transfer, bus lines D0-D15 will actually carry the more
   significant 16 bits of the data, while D16-D31 will carry the less
   significant word.  In other words, PMBUS data lines 0-15 correspond to
   68020 data lines 16-31 and vice versa. 

*6 PWRFAIL' is a signal from the system power supply unit which drops low at
   least 5 milliseconds before the PMBUS power rails fail when the machine is
   switched off or disconnected from the mains.  In addition, it must not go
   high until at least 200 milliseconds after the power rails reach their
   proper voltages when the machine is powered up.  The line is driven by a
   current source with a pull-down resistor, and must not be used to drive TTL
   gates (CMOS is OK).  The line is not intended as a system reset, but to
   protect devices such as battery-backed memory from corruption. 


Derivation of signals from a 68000 microprocessor
-------------------------------------------------

The following logic equations define the lines listed below:

	 DS' = UDS'.LDS'
	 INTAK' = ([AS']'.FC0.FC1.FC2)'
	 RADS = (AS'+A17+A18+A19+A20+A21+A22+A23)'

In addition, IOS' is derived by gating address lines and AS' (or RADS) to
select a specific 256-word (512-byte) block of memory.  By convention this is
at $1000 - $11FF, but may be located anywhere in the processor's address
space. 


Timing Requirements
-------------------

All cards must conform to these specifications.  Signals are quoted for 6, 8
and 10 MHz CLK frequencies, although the vast majority of PMBUS systems today
run the bus at 10 MHz.  The slower speeds are regarded as obsolescent and are
not recommended for new designs. 

Remember that these timings refer to an entire card, and the signal names
refer to the PMBUS, not the microprocessor chip itself, so allow for any
buffers on the card in question only.  All timings are in nanoseconds. 


CPU Cards and DMABMDs
---------------------

Parameter				       6MHz  8MHz  10MHz
---------				       ----  ----  -----
Address valid to AS' low                         35    30    20 min
Address hold after AS' high                      40    30    20 min
MPUs AS' low to RADS high                        48    48    38 max
MPUs AS' high to RADS low                        48    48    38 max
MPUs UDS'/LDS' to DS' (high or low)              38    38    16 max
MPUs AS' to INTAK' (high or low)                 50    50    40 max
MPUs AS' low to IOS' low                        100   100    80 max
MPUs AS' high to IOS' high                       90    90    70 max
Data setup time before UDS'/LDS' low (write)     30    30    20 min
Data hold time after UDS'/LDS' high (write)      40    30    20 min
Address/control buffer prop delay (for 68000)    20    20     8 max
Data buffer prop delay (for 68000)               12    12    12 max


Peripheral Cards
----------------

Parameter				       6MHz  8MHz  10MHz
---------				       ----  ----  -----
DS' low to DTAK' low for full speed reads       120    75    64 max
DTAK' release time from DS' high                120    80    74 max
DTAK' release time from UDS'/LDS' high          140   100    82 max
Read access time from RADS (full speed)         263   180   135 max
Read access time from UDS'/LDS' (full speed)    293   210   165 max
DTAK' low before data valid (slow read cycle)   102    72    57 max
Strobes inactive to data bus tri-state          150   120    85 max
IOS' high to VPA' high                           68    28    20 max
AS' high to VPA' high (alternative)             140    80    74 max


Further Notes
-------------

Bus Error Timer

The CPU card contains a timer which is started when AS' is low, and if the
cycle has not terminated (ie.  AS' is still low) after (e.g.) 10 us, asserts
BERR' to terminate the bus cycle in the event of a non-responding device or an
access to unpopulated address space.  The level 1 signal WAIT' holds this
timer at zero when asserted, to allow long cycles if necessary (although these
are not advised, and may prevent use of dynamic.  NOTE that WAIT' is optional. 

Pull Ups (68000 processors)

OUTPUT lines on the processor chip which are tri-state (other than address and
data pins) should be pulled up with a 10k resistor before buffering to prevent
inadvertent assertion when the lines are in the off-state. 

Tri-state Control

In a level 0 system, the CPU card drives the bus all the time.  In a level 1
or 2 system, (with bus arbitration), the CPU card buffers are disabled when
BGAK' is low.  Note that BGAK' will require a buffer to drive the many control
inputs.  The following lines are not affected (ie.  turned off) by BGAK': CLK,
BG', E, RESET'. 


DMA on the PMBUS
----------------

Any card capable of taking bus mastership and performing DMA is termed a DMA
Bus Master Device (DMABMD).  When in control of the bus, a DMABMD must drive
all of the following lines: AS', UDS', LDS', DS', RADS, R/W', VMA', and all
data and address lines.  INTAK', IOS', HALTO' are pulled up on the CPU card
with 4k7 resistors, so they can be ignored by DMABMDs which do not need them. 

The DMA mastership arbitration is performed in a distributed manner: each
DMABMD has its own arbitration unit, and these contend with each other via the
DP1-7 lines for mastership.  (DP7' has the highest priority; only one DMABMD
is allowed on each priority).  The arbitration rule is "first come first
served", except when more than one DMABMD is requesting mastership
simultaneously, in which case the requests are satisfied in priority order. 
Once a DMABMD has control of the bus, it cannot be forced to relinquish it,
even by a higher priority DMABMD, but re-arbitration will occur as soon as the
present master relinquishes the bus. 

The arbitration state machine is described below, although most
implementations use a commercially-available two-chip semi-custom IC set to
perform the entire function, including buffer control and a simple
'request-proceed' interface to a DMA device. 


Arbitration Sequence
--------------------

All state transitions (at the bus itself) must take place between 0-30 ns
after the rising edge of bus CLK.  The state machine is therefore fully
synchronous. 

When the DMABMD wishes to request the bus, it waits until BR', BG' and BGAK'
are all high, then asserts BR' and its own DPn' line simultaneously.  On the
first rising edge of CLK after BG' has gone low (indicating the start of
arbitration), the DMABMD latches the output of its priority network (signal
MINE+, which by definition will only be true for the highest-priority DMABMD
currently requesting the bus).  On the next CLK rising edge after AS' and
DTAK' both become high, the DMABMD with MINE+ high asserts BGAK', turns on its
tri-state buffers and takes over the bus.  When they see BGAK' asserted, all
DMABMDs simultaneously cancel their BR' and DPn' signals. 

When the last cycle is complete and DTAK' has been cancelled, the bus master
cancels BGAK' and turns its tristate buffers off.

(End)

-- 

-----------------------------------------------------------------
I felt like a punk who'd gone out for a switchblade and came back
with a tactical nuke.
"Shit", I thought. Screwed again. What good's a tactical nuke in
a streetfight?
                              "Burning Chrome" -- William Gibson
Mark A. Brown                     |
Research Student                  |  land line: +44 71 975 5220
Department of Computer Science    |  JANET: eeyore@uk.ac.qmw.cs
Queen Mary & Westfield College    |  UUCP:  eeyore@qmc-cs.UUCP
Mile End Road, London E1 4NS      |
-----------------------------------------------------------------