September
2004, Issue 170
Multilab
Build
a Z8 Encore!-Based Multipurpose Test Instrument
Brian’s
Multilab is comprised of an arbitrary function generator,
a digital pulse generator, and more. Read on to learn
how he built this multipurpose test instrument.
by
Brian Millier
Two
things struck me as interesting when I first looked
over the documentation that came with the Z8 Encore!
development kit: the three-channel DMA controller and
the IrDA encoder/decoders associated with each of the
two on-board UARTs. These aren’t common functions on
most MCUs, but I knew they would be significantly beneficial
for a project I had in mind.
I
wasn’t totally surprised to see the triple-DMA controller.
Back in the 1970s when Intel started the PC revolution
with the 8080 microprocessor, Zilog wasn’t far behind
with a compatible device, the Z80. It took over much
of Intel’s early market share largely because it contained
an on-board refresh counter, which made it easy to use
inexpensive dynamic RAM chips.
The
project I had in mind consisted of a multipurpose lab
instrument comprised of an arbitrary function generator,
a digital pulse generator, a high-resolution DC voltmeter,
and a DC reference source. To keep the unit compact
and inexpensive, I wanted to eliminate the conventional
front panel and use a Palm Pilot PDA to handle that
function. The Z8 Encore!’s DMA channels are ideal for
the arb function, and the IrDA encoder/decoder block
makes implementing the IR link to the Palm Pilot easier.
After
using flash memory MCUs for several years, I’m now spoiled.
Happily, the Z8 Encore! family comes with up to 64 KB
of flash memory. The arb generator function needs a
significant amount of waveform memory, and the 4-KB
RAM included in the Z8 Encore! fits the bill nicely
(see Figures 1 and 2).
(Click
here to enlarge)
|
Figure
1—Along with the Z8 Encore! MCU, most of the arb
function generator’s circuitry is contained here.
The DC voltmeter circuit is also included. |
|

(Click
here to enlarge)
|
Figure
2—Here you can see several mixed-signal components
associated with the Multilab, as well as both the
IrDA and RS-232 interface circuits. |
Although
I’ve used numerous 8-bit MCUs over the years, I had
not tried any Intel 8051-derived MCUs or Zilog MCUs.
The combination of a good development board, stable
IDE software, and the on-chip debug facility made the
transition relatively painless, I must say. I’m particularly
impressed by the on-chip debug/programming facility.
Basically, using a single-pin, half-duplex serial link
to the MCU, it manages to program the flash memory quickly.
Furthermore, it allows for the complete in-circuit debugging
of your program, including register/memory contents
and port status, as well as the symbolic readout of
your C program variables.
I
often use all of an MCU’s I/O pins in a design, so having
the programming/debug functions all handled by only
one dedicated MCU pin seemed like a great idea. In the
following sections, I’ll describe the hardware and software
aspects of the project.