> I think the original is 'Digital circuits are
made from analog
> parts'
> Another of the laws is 'There is no such thing
as ground'
This reminds me of an incident of my own which is one of my favourite
examples of why learning about things at every level possible is
useful.
I built a PROM reader from discrete logic, to attach to a parallel
port. Basically, with 8 output and 3 input pins, you could load an
address, then read back the ROM's content for that address,
incremement, repeat.
But every ROM showed 0xFF as the contents for the last byte, even in
cases where I knew better.
Well, the ROM socket was in one corner of the board. Some of the
inputs were tied to specific logic levels; I tied those to the Vcc or
GND pins of the ROM. The only inputs from the rest of the circuit were
the address pins of the ROM.
And, I tied the ROM's Vcc pin to circuit Vcc. But it turned out I'd
neglected to tie the ROM's GND point to circuit ground. As soon as I
noticed that it all made sense: as long as at least one address line
was low, it powered the ROM through the input clamping diodes and it
all worked (apparently one diode drop was not enough to put power
outside the effective operating range - it may have been slower than
speed spec, but the circuit was not running anywhere close to that).
But, as soon as all address lines were high, there was nothing but Vcc
coming into that corner of the board, so of course there couldn't be
anything but Vcc coming out. Grounding that corner's ground point made
it all work.
But, if I understood the ROM purely at the logic-gate level, this would
have been mysterious and cryptic. If I hadn't known that a low-level
output could sink a fair bit of current with little-to-no voltage rise,
if I hadn't known input clamping diodes existed, that would have been
cryptic, incomprehensible magic.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse at
rodents-montreal.org
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B