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
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.
Last updated: 17 Aug 2009 - 19:50
I've actually started building this Z80 project already, so this one might get to do something more than just a debug pattern on some LEDs. The design for this is fairly minimal and is based around two main factors; stuff I've done or planned before (so understand to a certain degree) and parts I have lying around. As such the components might be a bit odd, and possibly unavailable (sorry).
Last updated: 15 Aug 2009 - 15:31
Booting computers is an age old problem. It seems like an easy task to you, just press the button, but the software and hardware involved is often a bit of a hack. When you start a Z80 processor (ignoring reset hold times and clock stability for the moment) it will try to load an instruction from memory address 0, execute it then move on. So the traditional way Z80 micro computers (like the Sinclair ZX Spectrum and the Amstrad NC100, to name a couple I own) are built is with a ROM chip at the bottom of the address space with some kind of operating system on it, e.g. a BASIC interpreter. This is cheap and simple, but has some big problems for the hobbyist or developer.
Last updated: 15 Aug 2009 - 10:12
It's been over two years since I've posted anything about my Z80 project. I haven't given up, I've been working on odds and ends on and off for the last couple of years, but no huge advances. The reason the posts dried up is that I actually got the original Z80 project working! But it was quite under-whelming. After weeks of work I managed to get a program that could write data to an 8 bit latch with LEDs attached. So what was the point of it all, and what have I done since?