The 8 Bit Computer

Here I’ll be documenting my second large electronics project, which was a lot of fun to work on. It’s not quite 100% finished as of writing this (some very minor issues and optional improvements left), but I decided I’d call it done and maybe get back to it later.

The idea for this project came from the awesome YouTube educator Ben Eater, who made a series about the basics of computer architecture where he built an 8 bit computer based on a very simple model/structure. I highly recommend that you watch the series, he does an amazing job at explaining every part of his design from the ground up and in my opinion it’s just fun to watch as well. My design is directly based on Ben’s, but I added new features on top of it and expanded/reworked some core sections. Therefore I’ll be referring to his videos when writing about the individual sections, particularly if I haven’t changed them a lot. Most of this design adaptation was done in early 2018, when I was still in school.

I initially tried to build the computer on prototyping breadboards just like Ben did, but some modules just ended up being too complicated and cramped, so I didn’t get it to work. Suboptimal breadboard quality and dense wiring caused connection problems all over the place, causing the behaviour to be very erratic, which stopped me from going any further with that design. So in early 2019, I sat down and spent a lot of time creating a full schematic of the computer and designing a PCB based on that. Let’s start with a summary of the specs and modules of the computer:

  • Adjustable clock (about 1Hz to 5kHz) with pause/single-step function
  • 8 bit shared address + data bus (“main bus”)
  • 32KB of static RAM
  • 8 bit arithmetic unit (add/subtract)
  • 8 bit logic unit (NOT, AND, OR, XOR)
  • 8 bit comparator (with 4 bit flags register)
  • Two 8 bit and one 16 bit general purpose registers
  • 8 bit bidirectional shift register with roll function
  • 15/16 bit program counter
  • 7 bit opcode length (up to 128 instructions) with up to 16 steps per instruction
  • 8 bit user input (using switches for binary input or data from an external connector)
  • Seven segment display for numerical output with up to 8 output modes/formats
  • Character LCD for text output
  • Programmed manually with switches or using an Arduino Nano
  • And perhaps most importantly: 196 LEDs showing exactly what is going on in every part of the computer.

This may seem like a lot, and it is, but I’ll do my best to go through everything and explain it in the next few posts:

2 Replies to “The 8 Bit Computer”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.