The Z80 Microprocessor


Overview

The Z80 microprocessor was designed by Zilog Corp. (which was comprised of ex-Intel engineers), released in July 1976 and produced to this day. Through the years it hasn't changed much. They operate at frequencies ranging from 2.5MHz (the original) to 10MHz (a later CMOS version). It was originally designed to be compatible with Intel's 8080, but improve upon it.

That it did, while it could execute all of the 8080's op codes, it contained 80 of it's own (including 1,4,8,16 bit operations and even block I/O). It had dual banks of registers, which could be switched between to allow fast interrupts.

But what was really unique (at the time) about the Z80 was that it produced it's own RAM refresh signals, which would reduce design complexity and cost. This was a contributing factor to the decision to use it in many embedded applications.

Programmatically it's a primitive device. To make it cheaper, smaller, and less complex, the designers left off some of the more advanced instructions. Among those that didn't make it into the Z-80 is multiplication (the only mathematical ops on the chip are addition and subtraction). I find this particularly frustrating, but I doubt I'll always view it this way. The simplicity of the chip allows you to write software that does exactly what you need, nothing else. While annoying at first, the simplicity is growing on me.


Some Applications

The Z80 was, and still is a very widely used microprocessor in embedded applications. Here are a few examples of devices they've been used in:

As I mentioned earlier, the chip doesn't actually contain any math functionality beyond basic addition and subtraction, so the fact that it found it's way into such math-dependant environments shocked me at first. I guess if you really need fast math routines then you add a math coprocessor to your embedded device. (Or use another processor <grin>)


Descendants

As with all good things, the Z80 was improved upon, and newer chips were made in it's image. Here are some of the chips that were spawned by or related to the Z-80 (sorted by date).

Shortly after the release of the 8086, the Z-8000 was released as a competitor. It was basically a 16-bit processor, but could address up to 23-bits in some versions. It contained sixteen 16-bit registers, but register size and use were very flexible (ie. Registers could be paired together to form 32-bit, some could be referenced by high or low byte to form 8-bit registers. They could even all be grouped into four 64-bit registers.) All were general purpose, and the instruction set included 32-bit multiply (into 64-bit) and divide, which made applications much easier to write and add robustness to. The Z-8000 inherited the automatic RAM refresh circuitry from the Z-80. Also notable about the Z-8000 was that it featured two modes of operation: one for the operating system and one for applications (compare to the 386's Real/Protected modes), and was one of the first microprocessors to do so.

In the beginning of 1986, the Z-80000 was released (about the same time as the Intel 386). The Z-80000 was much more advanced than it's immediate predecessor, having been fully expanded internally to 32-bit registers (sixteen 32-bit registers), essentially doubling the number of registers. It also had a larger memory space (16Mb), and on-chip 16-line 256-byte write-through cache (which could cache only data, instructions, or both, and could be frozen by software). Also featured was multiprocessor and coprocessor support. Despite all these obvious advantages, the Z-8000 and Z-80000 never made it into the mainstream.

Zilog and Hitachi produced the Z-180 (HD64180Z) around 1987, which was designed for embedded applications. It had two 16-bit timers, two DMA controllers, three serial ports, and could map a 20-bit (1M) address space into the (64k) Z-80 memory map. It maintained compatibility with Z-80 peripheral chips and Z-80 variants (Z-181, Z-182).

About July of 1987, Zilog released the Z-280, a 16-bit version. It loosely based on the Z-800 with a paged (like Z-180) 24-bit (16M) MMU (8/16-bit bus resizing). It had user/supervisor modes and features for multitasking. It also had many more op codes than previous variations (almost 3500 more, including some undocumented Z-80 instructions). The increased size of the chip made some of the instructions very slow, though. Notably, however, the internal clock could be run at twice the speed of the external clock.

In 1994, a 16/32 bit Z-380 was released, with added 32-bit linear addressing mode. (This is the mode used in modern PCs, and is not Z-80 compatible).


Bibliography

Much of the historical data regarding the Z-80 was taken (sometimes verbatim) from a website written by John Bayko titled Great Microprocessors of the Past and Present. I've emailed him asking permission to reprint his work (although the information wasn't copied verbatim, I just wanted to extend the courtesy). As of yet I have gotten no response. If you have time to spare, take a glance at it, it's a good read.


Please feel free to send me any questions/comments/links/etc you may have. I'll try to respond to everyone's email A.S.A.P., but occasionally I get really busy.
email: ticalc_z80@yahoo.com

[Home]