Living
to Learn
Copyright 1995,
Jack G. Ganssle
Abstract
Learning is a
process, not an activity with an end.
Published in
EDN, June, 1995
Colleges do a
lousy job of preparing engineers for the real world. It's appalling that so
little of a typical curricula is dedicated to making things work, to experiencing
dramatic failure in all its guises, to taking an idea from inception through
design and debug to a functioning product.
Engineering is
about making things. Though we do need the theoretical grounding colleges
seem so enamored of - now more than ever as complexity spirals - what differentiates
us from scientists is our focus on producing products. Things that work. Things
that improve life for the world's masses. Personally, I love to make things,
and take great delight in the process of invention that leads to something
that finally works.
It seems, though,
that most young engineers graduate convinced that their education is over.
After four or five years of struggling through differential equations and
organic chemistry, they just know that studying is yet another of life's unpleasant
obstacles they've finally overcome.
Balderdash.
Embedded design
is a dynamic field that changes daily. The knowledge half-life is around 2
years; if you are not studying constantly, then count on being obsolete before
turning thirty. Yes, it's possible to find a comfortable niche where you can
park for a number of years, ignoring the advance of technology. When it's
time to hit the job market, though, you may be shocked to find everyone speaking
an incomprehensible language.
Though night
courses are a great way to catch up with new programming methods like C++,
it's awfully hard to find universities offering state of the art information
about hardware design. Generally the best courses are those offered by vendors.
Any successful vendor is pushing the very latest technology, and many recognize
that they simply must offer some sort of training. Take advantage of these
(often free) opportunities. Convince your boss that a day or two here and
there is time well spent.
Probably the
best way to stay current is to read constantly and widely. Greedily suck ideas
from EDN and other publications. Don't expect to understand everything immediately,
but never give up the battle just because you don't understand the concepts.
The whole goal is to learn new things!
Blow up your
TV. Spend time in good bookstores, both real ones and the virtual, order-by-mail,
varieties. Never has so much information been available in so many easily
digestible forms. Though lots of books still resemble those heavy tomes we
slugged through in college, now many are fun and almost light... even when
equations litter the pages.
Every embedded
hardware designer simply must read High Speed Digital Design (a Handbook of
Black Magic) by Howard Johnson and Martin Graham (1993 PTR Prentice Hall,
NJ). Though the book will challenge you if your grasp of theory is rusty,
it's worth reading even if you must skip the math.
Modern components
are so fast that even slowly-clocked systems suffer from all sorts of speed
problems. This book leaves no stone unturned in the quest for reliable digital
designs.
The authors cover
transmission line theory in detail. At first glance I shuddered, remembering
with no joy two incomprehensible semesters of electromagnetics. Johnson and
Graham balance theory with lots of practical information. For example, a right
angle bend on a PCB trace is a transmission disaster... that you can sure
simply by rounding the edges of the track.
Most of us vaguely
know that corrupting a PCB ground or power plane is not a good thing to do.
Yet we sometimes yield to temptation when that board will simply not route
on 6 layers, so running a couple of tracks on the plane. In a few paragraphs
this book shows why this is a horrible idea, as the current return for any
track runs under the track itself. A slot etched in the ground plane, to allow
the routing of tracks, may block a return path. Current will flow around the
slot, greatly increasing the path's inductance. Even designers with the best
of intentions may accidentally create this situation by poorly specing out
hole sizes for connectors. If the holes are too large, they may intersect,
creating a similar, though unintended, slot.
What's the best
way to stack layers on a PCB? The book includes an entire chapter about this,
though I would have liked to see more discussion about how signals couple
with different stack configurations.
Vias, too, get
their own chapter. There's lots of good advice. The best sound bite is that
small vias are much faster than larger ones. Small sure helps routing as well,
especially with SMT boards, so there's a ray of hope for us yet!
One of the biggest
challenges faced by digital designers is propagating signals off-board through
cables. A chapter about this subject is worth the price of the book alone.
Ribbon cable is far better than I realized, especially when you run grounds
as the authors recommend.
What's the best
way to use a scope on a high speed system? What is the effect of that short
little ground wire coming from the probe? It turns out that the 3 inch ground
lead can degrade the displayed risetime by more than 4 nsec! The authors offer
the best description of scope probe problems, and solutions, I've ever seen.
They show how to build a better probe using parts found in any shop.
Did you know
that skin effect, the tendency of high frequency signals to travel only in
the outer edges of a conductor, can become important on PCB tracks at frequencies
as low as 4 MHz? Halving the length of a conductor improves its frequency
response by a factor of 4. Until reading this book I was under the impression
that only RF designers needed to worry about this effect.
Read this book.
Pass it along to your PCB designers. Then, read it again. Bebopping Along
Clive Maxfield's
book Bebop to the Boolean Boogie, 1995, Hightext Publications, Solana Beach,
CA, is the MTV version of an embedded how-to book. It's fun. It's a fast read.
You'll find neither calculus nor much about basic electronics. It's focus
is entirely on logic design, and is designed as a primer for those without
much grounding in this area.
Hardware designers
who have been at this for a couple of years probably have the material down
pat. It seems, though, that the embedded world is evolving into two camps
- digital design and firmware - with less and less communication between the
two. Increasing specialization means there are fewer people who can deal with
system-wide problems. If you are an embedded software guru who just doesn't
understand the electronics part of the profession, then get this book and
spend a few delightful hours getting a good grounding in digital design basics.
Then watch the startled looks as your water cooler discussions include comments
about state machine design.
Bebop covers
all the basic bases, from the history of number systems (much more interesting
than the tiresome number system discussions found in all elementary texts),
to basic logic design, PALs, and even PCB issues. I often run into engineers
who have no idea how chips are made - the book gives a great, wonderfully
readable, overview of the process.
Its discussion
of memories is fast-paced and worthwhile. A chapter about DRAM RAS/CAS operation
would be a nice addition, as would something about Flash, but there's a limit
to what you can pack into 450 pages.
I found the chapter
about Linear Feedback Shift Registers the most interesting. This subject never
goes away. It pops up constantly on the embedded systems Internet listservers
(comp.realtime and comp.arch.embedded), often under the guise of CRCs. These
pages are worthwhile even for experienced digital engineers.
And yes, the
seafood gumbo recipe in Appendix H is worth the price of the book alone.
Jan Axelson's
The Microcontroller Idea Book (1994, Lakeview Research, Madison, WI) is an
ideal introduction to low-end embedded design. The book's protagonist is 8052-BASIC
CPU, a very low-end controller suited for those with no assembly language
or C expertise. It takes the reader from essentially no knowledge of programming
through the Basic language, meanwhile offering lots of insight into the design
of simple embedded systems. This work is much too simple for the experienced
engineer, but is worthwhile for the novice embedded designer.
The next time
I hire an new college graduate with either a CS or EE degree I'll have them
work through both "Bebop" and "Ideas". A week spent soaking
up these practical concepts will help ground their feet in reality and balance
the four years of theory still ringing in their ears. C Books
Another Hightext
publication, Programming Microcontrollers in C, by Ted Van Sickle (1994, Solana
Beach, CA) is a succinct introduction to embedded firmware. Where "Bebop"
is ideal for the digital designer wannabe, Programming is a must-read for
engineers trying to get their hands around software issues.
In 88 pages Van
Sickle gives a very readable, complete introduction to C programming. To quote
the book, "programming is a contact sport", so don't expect to become
a C whiz till you've written and debugged a few thousand lines of code. The
book's discussion does make a great starting point for those wanting to broaden
their background.
Obviously, with
the Motorola backing all of the text is oriented to their processors, primarily
the 68HC11 and 68HC16. If you are considering using these chips, I'd advise
looking through the book to get a feel for what the CPUs can do. The text
is definitely not an advanced user's guide (thankfully! Motorola's manuals
serve this function), but gives a nice overview of using the timers, pulse
width modulators, interrupts, and the like.
Even better is
its discussion about actually using the Byte-Craft and Intermetrics compilers.
Everyone dreads setting up a new environment; this book will ease that process,
especially since it includes header files.
I get a constant
stream of queries for introductory texts to the embedded world. This is that
book. It, or something similar, should be required reading in even computer
since curriculum where embedded systems get virtually no mention.
Space limits
the number of books I can cover here, and worse, permits only the most cursory
of reviews. Believe me: these books are hot stuff, and are worth their cost.
More important
than a discussion of any one book is developing a philosophy that embraces
continuous learning. As a parent, one of my greatest hopes is to instill a
love of learning and a competence at reading into their little skulls. All
else follows from this; without it, nothing but stagnation is possible.
Never succumb
to the temptation to let someone else dictate your career. Too many professionals
avoid training because their company won't pay for it. That's career suicide.
Take charge of your future, yourself, because no one else will.
Frustration is
a part of learning so practice patience. Most engineering texts border on
unreadable. Cull the best of the bunch, sigh when yet another book disappoints,
but continue seeking out the pearls.
Avoid excessive
specialization. My dad relates the story of an engineer at Grumman in the
early 60s who knew everything there was to know about designing wheels for
lunar roving vehicles. Presumably pencil cup donations are keeping the family
fed now.
Take time to
read a little poetry, some science fiction, and literature. The greatest ideas
come from those who exercise their mental muscles in many, diverse areas.