Micro8 - A very simple VHDL FPGA microprocessor
Micro8 started of as a minimal set 4 instruction
computer By Tim Boscke designed to fit in a 32 Macrocell CPLD.
http://gforge.openchip.org/projects/mcpu/
I've added to it considerably and run it on
the B3-Spartan2+ board using a Xilinx XC2S200.
Tim's computer had only ADD, NOR , STA and JCC instructions.
It had a single carry bit which was set (?) by the JCC (Jump on Carry
Clear) instruction. Most microprocessor instructions can be built
up using these basic instructions.
In my Micro8 design I have an 8 bit accumulator
and an 8 bit index register and four addressing modes, Immediate,
Absolute, Indexed and PC Relative and I've extended the addressing
range from 6 bits or 64 bytes to 11 bits or 2K bytes. The top five bits
of the opcode byte determine the operation and addressing mode. the
bottom 3 bits of the opcode form the high bits of the address argument.
I've also added a Zero (Z) Flag and a Negative (N) flag and corresponding
conditional branches that do not change the condition codes.
Micro8 uses 12% of an XC2S200, including the wishbone miniUART by Phillipe
Carton.
Doug Hodson has a version of the Micro8 for the Xess XSA100 FPGA board on
his
RetroMicro web page.
21 May 2003 - Update
I've updated Micro8 to correct a number of problems. check out the
Micro8 page for details
Micro8a - Adding a Stack
In my Micro8A I have added a 7 bit stack pointer
at $0FF that works down to $080. I've added subroutine calls,
Push and Pull registers
and interrupts as well as some inherent single
byte instructions to operate on the accumulator and index register.
Micro8b - Extending the Index Register
(Proposed Design)
Micro8b is a proposed enhancement to make the Index
register 11 bits rather than 8 bits. That means the index
register can index the full addressing range of the microprocessor.
ADDX and NORX instructions have been replaced with LDX and CPX as these
are more common operations performed by an index register. INX and DEX
instructions also need to be included in the opcode map.
This project has not progressed because it almost developed into a MC6805
design.
Similar Projects
Vincent Crabtree from Loughborough University has
also extended Tim Boscke's design:
http://staffi.lboro.ac.uk/~elvpc/fpga/soc.html