[net.arch] Timing sensitive devices

mo@seismo.CSS.GOV (Mike O'Dell) (02/22/86)

Sorry to break the news, folks, but almost every Unibus device
ever attached to a PDP-11 or a VAX has timing sensitivites which
must be considered when stroking the hardware from fast machines.
(The 780 Unibus adaptor itself is certainly in this group!!)
Such things, while a pox on the programmers, are in fact the way
the world really works.  I didn't say I like it, or that it's the
way it should be, but that's the way it is.  One valid criticism is
that much of the microprocessor-derived hardware was designed when
a 4 MHz Z80 was considered fast, and a "bus" was a handful of 8080
signals all running down the board together (crosstalking all the way!),
and correspondingly exhibit these problems more visibly than
discrete implementations designed for other environments.

There is a simple hack which solved the problem more gracefully than
arguing over it.  Keep in mind the point is to wait AT LEAST long
enough, not to time things precisely. Therefore, you find preprocessor
symbols like CPUDELAY which you simply count down to zero, and the
constant is tuned per the CPU speed.  The usual hack is CPUDELAY
represents about 10-100 Microseconds, depending on the delay
intervals which must be burned, and whether you want to multiply
to get the right number.  A slight variant is to make CPUDELAY
a global cell containing the right number, so binary programs can
get the right number without recompiling.  

Again, it ain't wonderful, but it works fine, and you can get on
with other more productive things.

	-Mike O'Dell

carl@sdcsvax.UUCP (Carl Lowenstein) (02/25/86)

In article <1475@seismo.CSS.GOV> mo@seismo.CSS.GOV (Mike O'Dell) writes:
>Sorry to break the news, folks, but almost every Unibus device
>ever attached to a PDP-11 or a VAX has timing sensitivites which
>must be considered when stroking the hardware from fast machines.
>(The 780 Unibus adaptor itself is certainly in this group!!)

Putting on my hardware hat for a moment, I would like to assert that
1) the 780 Unibus adaptor is not a particularly fast machine, and
	has its own problems
2) there are interlocked timing handshakes on the Unibus which make devices
work.  Every device that I have seen that was designed with the bus spec.
in mind has worked over a wide range of bus speeds, some devices that tried
to cheat on the timing have not worked.