Page 127 - The Art of Designing Embedded Systems
P. 127

1 14  THE  ART OF  DESIGNING EMBEDDED SYSTEMS


                           Unused Inputs
                           Once upon a time, back before CMOS logic was so prevalent, you
                      could often leave unused inputs dangling unconnected and reasonably ex-
                      pect to get a logic one. Still, engineers are a conservative lot, and most
                      were careful to tie these spare pins to logic one or zero conditions.
                           But what exactly is a logic one? With 74LS logic it’s unwise to use
                      Vcc as an input to any gate. Most LS devices will happily tolerate up to 7
                      volts on Vcc before something fails, while the input pins have an absolute
                      maximum rating of around 5.5 volts. Connecting an input to Vcc creates a
                      circuit where small power glitches that the devices can tolerate may blow
                      input transistors. It’s far better (when using LS) to connect the input to Vcc
                      through a resistor, thus limiting input current and yielding a more power-
                      tolerant design.
                           Modern CMOS logic in most of  its guises has  the  same absolute
                      maximum rating for Vcc as for the inputs, so it’s perfectly reasonable to
                      connect input pins  directly to Vcc-if   you’re  sure that  production  will
                      never substitute an LS equivalent for the device you’ve called out.
                           CMOS does require that every unused input be pulled to a valid logic
                      zero or one to avoid generating an SCR latchup condition.
                           Fast CMOS logic (like 74FCT) switches so quickly, even at very low
                      clock rates, that glitches with Fourier components into billions of cycles
                      per second are not uncommon. Reduce noise susceptibility by tying your
                      logic zeroes and ones directly to the power and ground planes.
                           And yet . . . one must balance the rules of good design with practical
                      ways to make a debuggable system. A thousand years ago circuits used
                      vacuum tubes mounted on a metal chassis. All connections were made by
                      point-to-point  wiring, so making engineering changes during prototype
                      checkout must have been pretty easy. Later, transistors and ICs lived on PC
                      boards, but incorporating modifications was still pretty simple. Now we’re
                      faced with whisker-thin leads on surface-mount components, with 8- and
                       10-layer boards where most tracks are buried under layers of epoxy and out
                      of reach of our X-Acto knives. If we tie every unused input, even on our
                      spare gates, to a solid power or ground connection, it’ll be awfully hard to
                      cut the connection free to tie it somewhere else. Lifting the pins on those
                      spare gates might be a nightmare.
                           One solution is to build the prototype boards a little differently than
                      the production versions. I look at a design and try to identify areas most
                      likely to require cutting and pasting during checkout. A prime example is
                      the programmable device-PALS  or FPGAs or whatever. Bitter experi-
                      ence has taught me that probably I’ll forget a crucial input to that PAL, or
   122   123   124   125   126   127   128   129   130   131   132