June 11, 2022

FPGA - 8 bit CPU cores

It seems to be a sport to work up an old (or not so old) CPU design in Verilog or VHDL and get them running on an FPGA.

8 bit cores and other beginner projects

Some of these are new designs, but most are implementations of classic (and historic) 8 bit cores like the 6502 or Z80. Here are 4 that I find interesting:
8080 - 1974 - 4500 transistors
6502 - 1975 - 3510 transistors
Z80  - 1976 - 8500 transistors
6809 - 1978 - 9000 transistors

The 6502 is very simple (only an A, X, and Y register).

The 8080 had A, B, C, D, E, H, and L registers and had some provision to use them as 16 bit pairs (BC, DE, HL).

The Z80 added 16 bit IX and IY registers as well as shadow ABCDEHL that would be switched to during interrupt handling. Oddly, the Z80 had only a 4 bit ALU and required 2 cycles for 8 bit operations.

The 6809 had only A and B (and allowed AB, aka "D" to be used as a 16 bit register. It also has X and Y index registers. It had a multiply instruction as well as allowing position independent code and seemed like the most sophisticated 8 bit processor.

All of these have verilog (and/or VHDL) implementations available. You usually have several to choose from.

Some guys in the UK (and perhaps elsewhere) are BBC Micro fans. The BBC Micro had an "add-on" facility (called "the tube" of all things) that allowed an outboard "coprocessor) to be connected to the main machine. Clever people decided to use an FPGA to function as a variety of different processors (including the 6502, Z80, and 6809) and that is what these pages are all about:

The 6809

Pushing the limit

I'm not sure what the limit is, but the following projects go where these 8-bit processors never went before: The 16 core Z80 uses an Intel (Altera) "Stratix IV 530GX FPGA" (a $6000 item in 2019). This has 212,480 ALMs and has 20,736 Kb of embedded memory.
Feedback? Questions? Drop me a line!

Tom's Computer Info / [email protected]