Electronics » Z80 Laptop Project... Mainboard
 V4 mainboard - front |
The V4 mainboard still has a Z80 CPU running at 8MHz but now uses a small FPGA to handle
the system logic. I chose the Xilinx XC2S30 Spartan II for the job as it has 5volt tolerant
inputs, useful dual port blockram and is/was reasonably priced. (A larger FPGA would've held
a virtual Z80 core of course but I dont have an actual development board with such a chip
and I wanted to keep things as familiar as possible).
Where the V3 project used microcontrollers
for the keyboard interface, serial port and sound system, these features are now done in pure
logic in the FPGA. The sound system has been totally revamped and now offers 4 channels of
8-bit sampled sound from a dedicated 128MB sample RAM (it can now play native Amiga protracker modules:)
One area where things went slightly awry was with the IDE interface. I didnt have enough FPGA
pins to connect it directly so I used a CPLD to provide the 8<->16 bit interface (and Compact
flash friendly) voltage shifting. Unfortunately I was getting uncurable ground bounce which
was pretty weird, as it never happened in the previous version of the project. In the end
I had to remove the CPLD from the board, desolder its PLCC socket, cut all the tracks relating
to the IDE system and patch on a small PCB with an IDE interface made from discrete logic.
Kind of annoying as it bulked things up a bit.
 V4 mainboard - back |
Not much else has changed drastically on the mainboard. I've allowed some pins for a MMC card
interface and there are now two joystick ports. Architecture-wise, the FPGA has allowed for some
refinements such as CPU read capability on some of the output ports.
Other bits.. A 8-pin 12F629 PIC and 24C512 64KB serial EEPROM upload the configuration data to
the FPGA on boot - not the fastest solution, but cheap and both parts are programmable with the
popular ICprog util which I use a lot. The config data also contains
the Z80 boot ROM code (it occupies 3 of the FPGA's block RAMs and is mapped into the beginning
of the Z80 address space). The Z80's reset line is held active until both the mainboard and
graphics system have been configured.
I decided to keep the graphics system and mainboard on seperate PCBs early on - it made
construction and testing a lot easier. The PCBs (you'll notice:) are still home-etched,
single sided affairs. With the wire links etc, they aren't the neatest things ever but
hey, if you're going to make a laptop from scratch you cant offload things like that.
Also, it works!
|