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.
Nathan's Z80 Project Mark 2: Overview
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).
Giving the Z80 a good boot
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.
Z80 Homebrew update
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?
Developing an Architecture
Last updated: 08 May 2007 - 21:09
It's been a while since I thought up this project now, and it's heading for a shelf as fast as it's vestigial legs will carry it. I blame this rapid attempt at mothballing on a lack of practical progress while I'm at Uni with no Z80 chips in sight. I have however been thinking about the project a bit and come up with some basic ideas for the architecture.
Firstly, I've decided that instead of the normal idea of holding the operating system on a ROM chip that's used in most Z80 systems, I want to set it up something more like a conventional PC with a boot ROM containing the system BIOS (Basic Input-Output System) which causes the processor to boot from the IDE bus. In my design this is going to be a small compact flash card.
One advantage of this is that it should allow advanced functionality such as being able to edit a version of the operating system kernel on the device itself, reboot, test the new kernel by selecting it from a boot loader menu, if it fails, go back to the f