Close

V2 Lives!

A project log for z80 Experimentation Kit

A project to produce a kit for experimenting with z80 CPUs - More an embedded board than a PC

michael-cullenMichael Cullen 12/19/2018 at 05:070 Comments

Well, I finally got around to assembling a V2.0 board. They’ve been sitting around for probably too long heh.

The only major screwup I’ve found in the design so far is around the processor supervisor, a Microchip MCP100 I included to make sure the z80 CPU was correctly reset after power up. The problem was that when I pressed the reset button, it appeared to short the 5v rail to ground - upon further inspection, the MCP100 doesn’t just ground the reset line at startup then let it float on a pull-up resistor as I assumed, but actually forcefully asserts the reset line high - so the switch really was directly across 5v and GND! I decided to just remove the MCP100 since it’s not really needed - one of the things I included in this board revision is the ability for the AVR-based programming circuit to reset the z80, so I’ve included a bit of code in the firmware for that to assert a reset on startup to get things into a known state.

The USB circuitry seems to work well enough from the limited testing I’ve done so far, however the 1k5 pull-up resistor on D- should probably be on the main board supply rather than on the USB power pin. The idea originally was only power it when there’s something plugged into the USP port, however the actual effect it has had is to make it so you must power the board up before connecting the USB cable to it. The purpose of the 1k5 resistor is to tell the host that there is a USB device connected, and also indicate the speed of device it is. The problem is, upon sensing this resistor, the host attempts to talk to the device - but if the device is not powered on, then there is nothing to talk to, and the host assumes the device is malfunctioning.

Another relatively minor issue was that the ground planes make soldering the ground connections really difficult because they sink heat away. I probably should have used a larger iron tip, however, since I hope this to be available in kit form at some point, I should probably make an effort to make it easier to solder.

There will be at least one more hardware revision of the board addressing these issues and adding a few other nice to have features:

  1. Switchable power between USB and external power
  2. A bypass on the 5v regulator for when there is a 5v supply available
  3. Better silkscreen labelling of some parts


The next steps are software - I made some progress back in April with AVR code to drive the 16 bit i2c port expander, so I need to do something similar for the 8 bit expander used on the data bus, and also I need to finish off writing the host side of the new protocol, implementing some USB stuff on both sides, and porting the examples over to the new board. Oh, and documenting it!

There’s lots to do, but progress is being made!

Discussions