Follow @jack_ganssle
Go here to sign up for The Embedded Muse.
Logo The Embedded Muse
Issue Number 231, November 19, 2012
Copyright 2012 The Ganssle Group

Editor: Jack Ganssle, jack@ganssle.com
Jack Ganssle, Editor of The Embedded Muse

You may redistribute this newsletter for noncommercial purposes. For commercial use contact info@ganssle.com. To subscribe or unsubscribe go to http://www.ganssle.com/tem-subunsub.html or drop Jack an email.

Contents
Editor's Notes

Did you know it IS possible to create accurate schedules? Or that most projects consume 50% of the development time in debug and test, and that it’s not hard to slash that number drastically? Or that we know how to manage the quantitative relationship between complexity and bugs? Learn this and far more at my Better Firmware Faster class, presented at your facility. See http://www.ganssle.com/onsite.htm .

For as long as I've been an engineer the issue of professional licensing has been debated. Bob Paddock has some good state-by-state information on his site; you'll have to scroll down a bit to get to it.

Quotes and Thoughts

We try to solve the problem by rushing through the design process so that enough time is left at the end of the project to uncover the errors that were made because we rushed through the design process. - Glenford J. Meyers

Tools and Tips

Please submit neat ideas or thoughts about tools, techniques and resources you love or hate.

Richard Tomkins submitted the following: Number one and this is a really great tool, DraftSight, a free (FREE), professional 2D CAD application from Dassault Systemes, it runs on Macintosh, Linux and Windows platforms and it does DWG (AutoCAD) files, opening, editing and saving.

Number two is DesignSpark, a free (FREE), Schematic capture, design and PCB layout application, it reads Eagle files and will work with Eagle libraries, it does 3D board images with the use of Google Sketchup. It runs on Windows.

Several readers have been asking about USB scopes and logic analyzers. I wrote about this in 2005, but there are so many more products on the market today. Do you have experience with these?

What I'm Reading

Here's a cool circuit - an op amp made from three transistors.

And here's one way to drive 16 LEDs from a single I/O line.

The demand for software people is exploding. Google's average salary for a developer is a whopping $128k! Also see the BLS data here.

Datasheets

Matt Boland wrote: For analog devices I would love to see probability density functions for various parameters. Take Vos for an op-amp. It doesn’t do me much good to see a typical specification of 0.1mV and a MAX specification of 10mV. If they just told me it was Gaussian (or whatever it was) and the associated parameters to fully characterise the distribution, then I could really work out if I could use this particular op-amp, or whether I could still use it and expect to calibrate 1% of devices, or whether to avoid it. The last time I looked, “typical” wasn’t a true statistical term…

Hardware Features

Readers have been reporting on hardware features they wish processors had for safer software. Tony Brown commented that the PIC24 family from Microchip has a stack limit register. For instance, section 4.2.5 of http://ww1.microchip.com/downloads/en/DeviceDoc/39881D.pdf discusses this. You program the stack limit register and any push that exceeds this value generates a trap.

David Brooks wrote: The Infineon TriCore (& probably others) do this. An attempt to dereference a null pointer causes a CPU trap, as does any attempt to access invalid addresses. Since all addresses below 0x80000000 are defined invalid, this catches just about any offset from a null pointer, also. Of course, what you do with that trap is your business... Note that the TriCore also contains some intriguing hardware that will trap if calls are nested deeper than a value specified in a register; the idea is to detect runaway recursion. And the memory protection system guards against a variety of illegal accesses.

Andrew McIver noted that the old 80C196EA had a stack limit register.

Gesture Recognition

One of the  most natural ways we communicate is to enhance verbal I/O with hand gestures. At least one study suggests that it's possible that those who routinely articulate digitally are more intelligent than those who don't.

In recent years a number of computer interfaces that exploit hand motions have been introduced, like smart phones' swipes, the Wii and the Kinect. (In fact, this technology goes way back; graphics pads and the like have been around for a very long time). The phones I'm familiar with use capacitive sensors, but the user must touch the screen, limiting motions to two dimensions. The Kinect and Wii can read motion in three dimensions using cameras or MEMS sensors.

Last week Microchip introduced a novel variant: their GestIC chip that senses 3D gestures using an electromagnetic field. The part generates an electrical field which is radiated to the world via an antenna-like track on a PCB (or on an ITO-coated screen); up to five similar tracks receive the field. A 32 bit on-board processor parses the info and returns gesture commands via a serial link.

GestIC Field

Gesturing distorts the field generated by the GestIC chip.

The device can sense gestures within 15 cm of the sense tracks. Though details are a little sketchy at this point, on-board software called the Colibri Suite (this is a genus of Hummingbirds, and the company is using a Hummingbird metaphor for the part) figures out exactly what the user's hand is doing and sends that high-level info back to a host CPU. It will detect the hand position in 3D space, flicks, an index finger making clockwise or counterclockwise circles, and various symbols.

It's an interesting idea: let the user interact with a device in a more natural way. After all, using a keyboard or mouse is a very odd activity not part of the normal human repertoire. I remember confronting a mouse at a computer store when the very first Mac came out in 1984 - it was very cool but at first I had no idea what to do when running off the table.

Block Diagram of the GestIC

Microchip's new GestIC device is easy to use and enables novel ways of interacting with devices.

An important feature is called "wake-up on approach." In a pseudo-sleep mode the device consumes only 150 µW but goes to full power mode (where it can sense the other gestures) when the field is disturbed by an approaching body part. Full power is 90 mW. Cameras, like in the Kinect, must be fully powered all of the time and are therefore too power-hungry for applications which spend most of their time sleeping. Of course, a camera needs a light source as well, plus a lot of processing horsepower to make sense of the visual field.

Though the radiated field is nominally at 100 KHz, the device uses frequency hopping to tune out inference and noise. Resolution is mouse-like at 150 DPI.

Schematic of GestIC

Typical connections required by the GestIC.

An eval board is available, which in the Hummingbird metaphor is called the Sabrewing. (I never expected to learn so much ornithology in a product briefing.) A four minute video gives an excellent overview of the board and the technology.

They claim to have massively patent-protected the technology.

In volume the GestIC costs $2.26. More info is on Microchip's web site.

To answer the obvious question: the Colibri Suite currently cannot detect that particular hand gesture.

Modules and Components at the Computer History Museum

If you're ever in Northern California a "must see" is the Computer History Museum in Mountain View. The collection is incredible and they do a great job of making the artifacts understandable.

On a recent visit I took some pictures of some of the interesting modules and components on display. Today we're accustomed to using fingernail-sized ICs that have millions or even billions of transistors on a single board. It wasn't always that way!

The first electronic digital computing device was the 1937-42 Atanasoff-Berry machine. With about 300 vacuum tubes it could solve simultaneous linear equations. It wasn't programmable at all. But the machine was deemed prior art many years later and so invalidated ENIAC's patents.

This add-subtract module (below) from the Atanasoff-Berry computer was one of thirty identical modules used to do math. The original computer was junked so this is a reproduction. Apparently the electronic design was pretty poor as the reconstructors found they had to hand select resistor values to make it work. It has seven twin-triode 6C8G tubes. That's 14 active elements in a fairly-sizeable form factor; with the transistor densities possible now a single chip could hold tens of millions of these.

Each of these modules could add or subtract a single binary bit, plus a carry in, and generate a sum/difference and carry out.

Atanasoff-Berry module

Atanasoff-Berry add-subtract module

For a time electronic modules were made from vacuum tubes with passive components mounted in a structure underneath the tubes. I remember flip flops that used a single dual triode and a few resistors. The following is a picture of an op amp module at the Computer History Museum. The idea was that the modules were interchangeable, just like tubes, and using modules allowed a level of "abstraction" that eased circuit design.

K2-W op amp

A K2-W op amp

But how were these modules connected? Everything was hand wired; there were no circuit boards in the early days. Sockets for the modules, and for tubes, were bolted to a metal chassis and wires and components were connected from the pins to whatever their destination was. This picture is part of the wiring of the 1949 Magnetic Drum Differential Analyzer, which was used to solve differential equations.

Point to point wiring

Point-to-point wiring

Thankfully, transistors became available in the 1950s. It's thought by some that the 1955 TX-0 was the first transistorized computer; others will dispute this. The Museum does have the 1954 TR-1, a four transistor radio which was one of the first successful transistorized products. The price was about $400 in today's dollars.

 

TR-1 computer circuit board

Circuit board of the TR-1

Possibly the most extreme pre-IC use of modules was in IBM's Stretch computer, a $100 million (in today’s dollars) supercomputer that wasn’t super enough. It missed its performance goals by a factor of three, and was soon withdrawn from production. Only 9 were built. The machine had a staggering 169,000 transistors on thousands of individual printed circuit boards. Interestingly, in a paper named The Engineering Design of the Stretch Computer, the word “millimicroseconds”  is used in place of “nanoseconds.”

Stretch computer circuit board

One of the boards from Stretch (photo from Wikipedia)

I came across the following display at the Museum which appears to show transistors being hand assembled as late as 1970. Contrast that with a modern fab which assembles billions of transistors with hardly any human interaction.

Transistors

Hand-assembling transistors as late as 1970?

The now defunct and lamented DEC pioneered the creation of computers which were somewhat affordable, at least by decent-sized organizations. Many of their computers were assembled from standard modules the company also sold. This is one from a PDP-5, the company's first 12 bit machine.

DEC PDP-5 module

PDP-5 module

And the following is a module (which DEC called a "Flip Chip") from a PDP-8. These modules used diode-transistor logic, and were hand-assembled, though may have been wave-soldered. Think of the labor needed to build a computer this way! This module implements three bits of storage and a single bit adder.

DEC PDP-8 Flip Chip

PDP-8 Flip Chip

These Flip Chips were plugged into connectors that were wire-wrapped together. The modules largely resided in the black structure on top of the control panel in the following picture.

PDP-8

An early PDP-8

Digital computers are superior to their analog cousins in many respects. But they require huge quantities of active components. Some early designs processed data in bit-serial rather than the much faster parallel method used today in order to reduce the number of parts needed. But the need for speed has always driven computer design, and with enough money engineers could accomplish tasks that would seem impossible or improbable today. Consider Stretch: 169,000 transistors and uncounted other components were manually assembled. The CPU was 31 feet long, 6 feet tall and 7 deep.

Recently my main computer suffered a complete meltdown. A quick trip to Best Buy netted a machine with six cores, 10 GB of SDRAM, etc. The CPU chip probably has over a billion transistors on it; the RAM a couple of orders of magnitude more. All that for $700. In 50 years we've gone from Stretch to cheap PCs - which is an astonishing stretch.

Jobs!

Let me know if you’re hiring embedded engineers. No recruiters please, and I reserve the right to edit ads to fit the format and intents of this newsletter. Please keep it to 100 words.

Joke For the Week

Note: These jokes are archived at www.ganssle.com/jokes.htm.

Mathew Swaffield sent the following, which he notes was created by Nick Helm and voted the funniest joke of the Edinburgh Fringe Festival 2011:

"I needed a password eight characters long, so I picked Snow White and the Seven Dwarves."

Advertise With Us

Advertise in The Embedded Muse! Over 23,000 embedded developers get this twice-monthly publication. For more information email us at info@ganssle.com.

About The Embedded Muse

The Embedded Muse is Jack Ganssle's newsletter. Send complaints, comments, and contributions to me at jack@ganssle.com.

The Embedded Muse is supported by The Ganssle Group, whose mission is to help embedded folks get better products to market faster. We offer seminars at your site offering hard-hitting ideas - and action - you can take now to improve firmware quality and decrease development time. Contact us at info@ganssle.com for more information.