[Electronics]  [Files]   [Links]

 
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!