UNIBUS and QBUS termination

From Computer History Wiki
Jump to: navigation, search

UNIBUS and QBUS termination are very similar, since in analog terms the two buses are very similar (e.g. their use of the same transceiver chips, such as DS8641's).

Their terminators do a number of things:

  • they provide analog termination of the otherwise un-terminated transmission lines of the bus (i.e. a resistance at the end of a transmission line that prevents reflections of signals passing down it, 'bouncing' off its end);
  • provide pullups (so those wired-OR broadcast transmission lines normally float at roughly 3 volts, unless actively driven low by one of the boards plugged into the bus);
  • in some cases, (such as the M9302 UNIBUS terminator‎), they do 'SACK turnaround' (an 'unused' bus grant from the CPU is 'turned around' by the terminator, and returned to the CPU as the SACK signal); this is discussed at greater length below.

The first is not always absolutely necessary; this can be seen in small QBUS systems which can get away without it in small configurations. Whether it's needed on particular system is hard to predict, theoretically; the easiest thing is to just try it and see. Note: it may 'work' without it, but not be as reliable as with it.

The second is necessary, but can be provided anywhere on the bus; most UNIBUS/QBUS CPUs do so, with the notable exception of the KD11-D of the PDP-11/04, and the KD11-E/-EA of the PDP-11/34-34A. (In the PDP-11/40, there's an oddball exception: the M981 UNIBUS jumper does it - but that's 'sort of' part of the CPU.)

(Note that the first and second are usually both done by a single set of components.)

UNIBUS SACK turnaround

The full story of the third function, 'SACK turnaround', is somewhat complex. The need for it is, as mentioned, that an 'unused' bus grant, theoretically for a device's interrupt, can, if not 'turned around' by the terminator, can cause the CPU to freeze up. This because if the CPU does not have an 'interrupt grant timeout' circuit, then after such an 'un-needed' grant has been sent out, the CPU can potentially freeze up, waiting for the interrupt bus cycle to come in.

So SACK turnaround is therefore required by some UNIBUS CPUs, which do not have that circuit; this includes the KD11-D CPU of the PDP-11/04 and the KD11-E CPU of the PDP-11/34 (although the optional M8264 No-SACK Timeout Module can be used on both of these to add that functionality). However, most PDP-11 CPUs (including all QBUS CPUs, such as the KDF11 CPUs) have it, and will time out unused grants. (This takes somewhat longer than the SACK turnaround mechanism, which is why that is preferred.)

How can a device not accept the grant of an interrupt that it requested? There are several possible causes for an unused grant. One possibility is that noise on a request line will look to the arbitrator (in the CPU) like a valid request. Another possible cause is that if, having requested an interrupt, the device is reset just as the CPU is granting that interrupt, by the time the grant arrives at the device, it will have 'forgotten' that it was ever requesting an interrupt, and pass the grant on through. If no downstream (on the bus) device is requesting an interrupt, the grant will go unused - hanging a CPU which does not have a grant timeout circuit.

Machines which do not have a grant timeout circuit will function correctly most of the time without a terminator with SACK turnaround functionality; they are potentially vulnerable to the 'un-claimed grant' bug described above, though.

SACK turnaround and CPU hangs

On machines which use the KY11-L to CPU interface (the KD11-D CPU of the PDP-11/04, the KD11-E CPU of the PDP-11/34, and the KD11-EA CPU of the PDP-11/34A), SACK turnaround terminators can hang the CPU if the machine is powered on with a break in the bus grant lines somewhere between the CPU and the terminator - e.g. by someone forgetting to plug in a grant continuity card.

That is because the KY11-L to CPU interface uses SACK for the front panel to signal to the CPU that it should remain halted; if there is a break in a grant line, the resulting 'open' input to the TTL gate monitoring the grant line in the device immediately down-stream from the break will float high, thereby looking like a permanent incoming grant. The device will pass it on, and the SACK turnaround circuit in the terminator will turn it into a permanent assertion of SACK - which will cause the CPU to hang forever once it halts.

(SACK turnaround could potentially be used for a start-up 'safety check' for grant line continuity, where an un-requested - and thus 'un-grabbed' by any device - bus grant from the CPU on start-up is turned around by the terminator; this would verify that the grant line is continuous between the CPU and the terminator. Apparently no CPU does this, though.)

QBUS termination

The QBUS uses a somewhat complex termination scheme, particularly in system which contain multiple backplanes. (By the time DEC got to the QBUS, they had necessarily gained a lot more experience with large wired-OR broadcast buses, and the issue of signal reflections on them in various configurations, and the problems those could cause. They thus paid much more attention to carefully specifying how to configure and terminate larger systems.)

Each QBUS line is a 120-ohm transmission line, which must be terminated at each end by an appropriate terminator, in order to prevent reflections from the end. This type of termination is provided by an appropriate terminator module, or is built in to some backplanes and expansion cable connector cards. (Note that the required termination can be give by a combination of two modules, each providing 220 ohms to ground; many QBUS processor modules supply 220 ohms to ground.)

QBUS system which have multiple backplanes (up to three) formally require separate configuration rules from those which have only a single backplane. Notionally, termination must be provided at the start of the first backplane, and the end of the last. In practice, especially in single-backplane systems, it was usual to ignore termination requirements; such systems usually ran without noticeable problems.

See also

External links