Overview:
CPU | 8BP3 |
Data | 8 bits |
Memory | 16 bits |
Registers | 256 |
Architecture | Von Neumann |
Technology | Verlog on FPGA |
Status | Only a few instructions implemented, but enough for Turing completeness |
Successor | 16BP was planned to happen, but was never designed (fortunately) |
Time period | 4/22/16 - December 2016 |
Problems:
- Control logic is way to complex
- Only a few instructions are actually implemented in the Verilog code
Have you ever heard of the second system effect? That never happened to me. Instead, 8BP3 was the result of the third system effect. Different name, same phenomenon. 8BP3 would not be a bad architecture at all (by my low standards) if it were not for its massive instruction set that resulted in overcomplicated control logic. Compared to processors like the Z80 or 6502 it is not so bad, but it was still too many for me to handle.
Even with the complexity of 8BP3 and the lack of an assembler, it was still possible to do some interesting things on my FPGA. One of the test programs I ran set up a timer that put out a PWM signal on an I/O pin. It also gained a UART and text video over VGA. The largest and most useful program I wrote for it was a serial terminal that would display ASCII characters that were sent to it. I actually used this in two projects. One of them was when I used it to help debug a microcontroller for a robot that my team was competing in MATE with. The other project I used it in was a calculator that took input from a keyboard and printed the output on a video screen. An Arduino Uno did all the calculations, but 8BC3 made the video a lot easier.
Files:
Beware! The current version of the sources were changed, and I think I broke the access of the memory. If I were using git at that time, I would gladly have provided the working version. It should not be too hard to make it work again.
8BP3 Reference (pdf)
Basys 3 FPGA register and memory map (txt)
8BC3 Verilog sources (zip)
"Logical Circuit" Simulation (CircuitProject)
Microcode states (txt)
Test programs (txt)