Nathan's Z80 Project Mark 2: Debug Ports
Last updated: 24 Aug 2009 - 20:19
One thing I've learned about Z80 systems is that they are quite hard to debug, at least compared to modern micro-controller based things that you can always get to flash an LED at you or dump data through a serial port. To help with the inevitable debugging that this system is going to require I built in a couple of debug features. One is that I connected more control lines that were absolutely necessary to the PIC. These extra control lines coupled with its design requirement to be able to take over the whole data and address bus mean that it can run as an in-circuit emulator, with access to all the RAM and IO devices in the system. To make this access useful to me, I added a 4 pin port compatible with the Parallax PropPlug, a simple USB to TTL serial adapter. Basically it's like any serial to USB adapter but with only the receive and transmit lines, and without all the annoying RS232 signal level issues. So the plan is to write a basic debug mode for the PIC that accepts comman
Nathan's Z80 Project Mark 2: Real Time Clock
Last updated: 20 Aug 2009 - 22:41
The only additional feature I actually included in this project was the Real Time Clock (RTC) chip. I had got hold of this chip a couple of years back and was planning on using it in the Z80 Project (Mark 1). It was the last one Farnell had in stock and was then discontinued by them, I believed at the time that they were generally going out of production but I found this evening that they are still an "active" product according to Texas Instruments. There seems to be stock available from Digi-Key.
The chip provides a real time clock (i.e. counts seconds, minutes, hours etc.) as well as a number of additional functions with its built in CPU supervisor. There is a watchdog timer as well as brown-out detection and NVSRAM control. I'm only using it as a clock and counter though. There are only three components to fit to make it work which is one of the great advantages of this elderly technology, the chip itself which shares m
Nathan's Z80 Project Mark 2: UART
Last updated: 20 Aug 2009 - 19:44
I chose to keep the peripheral count low on this system, this was for several reasons;
- Less to debug
- Less to build (so faster, very important to stop me adding "features"!)
- Provides a better system for experimenting (more IO address free)
The basic requirement was for some sort of output display and some sort of alpha-numeric input. So the simplest solution I could think of was a UART, attached to something with a screen and keyboard running a serial terminal. I looked at using the PIC already in the system as a UART as well, but decided that it would be better used as a fast DMA controller with all its pins allocated to that. I had a 6402 UART chip of a similar vintage to the Z80 CPU lying around so that became the core of the UART peripheral.
There are three peripheral chips in the UART system, a 74HC4060 clock/divider chip, a MAX232 RS232 level shifter and a 74LS541, an 8 bit tri-state buffer. The clock/divider chip provides an independent clock source for the U
Nathan's Z80 Project Mark 2: Memory
Last updated: 17 Aug 2009 - 23:23
The memory part of my Mark 2 system is extremely simple. There are two 32K SRAM chips (actually FRAM because I had them lying around, but there isn't any significant difference in this application). These are selected with the logical OR of the MREQ signal and A15 (or inverse of A15 for the upper chip). Because the boot code for the Z80 is held by the PIC and the PIC can control the whole address bus while it holds the Z80 in reset the boot code is written to normal RAM after power-on. This provides the advantage of less decode logic, and no ROM chip, as well as allowing the whole of the memory space to be used by whatever application is running as there are no "unwriteable" regions.