ZX Spectrum in an FPGA


After doing the Apple-2 and BK0010 my next system on a chip was the ZX Spectrum.
Actually it is still work in progress. The project is based on the TV80 code - z80 in Verilog, allegedly cycle accurate. At least I didn't notice anything wrong so far.
In standard mode the x80 code is executed at 3.5 MHz to be compatible with all the games and demos. There is also a "turbo" mode. I tried it at 28 MHz clock, but the tools tell me it will run at at least 56 MHz. I didn't try it because apart from a brief claim to the fastest ZX on the planet I see no point in it.
I tried to make the timing as close as possible to the real Speccy with one notable exception - my video output is intended for the VGA monitors rather than a TV set. One reason is that a bad VGA screen looks better than a good TV in a monitor role.
And LCD screens look real good. My frame rate is still 50 Hz but the line rate is double that of the conventional Speccy. I compensate by doubling the number of lines, but of course 2 consecutive lines display the same pixels.

As you can see the result is pretty decent.


closeup picture


The plan is to make an IDE interface and use a Compact Flash card to load the software. Right now I only have this interface to a "tape recorder". In fact I'm using a sound card output to play .TAP files. Works fine, but it is so damn slow...

interface
The small chip is a 256K EEPROM that holds the code that is normally stored in a PROM. My verilog code loads the software from the serial EEPROM to RAM before the system boots. Doesn't take long with 32K of code and  28 MHz clock :)