Living to Learn
Learning is a process, not an activity with an end.
 |
For hints, tricks and ideas about better ways to build embedded systems, subscribe to The Embedded Muse, a free biweekly e-newsletter. No hype, just down to earth embedded talk. 23,000 other engineers subscribe. It takes just a few seconds (all we need is your email address, which is shared with absolutely no one) to subscribe to the Embedded Muse. |
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.
|