Software simulations allow you to understand how a CPU functions. These tools support both the classic 8-bit architectures as well as more complex modern chips. But these are only software representations. Would it not be more fun to debug and operate the inter-workings of a CPU using LED indicators? With the MK1 8bit Computer from Federico Scozzafava, you can see what is happening inside of a CPU.
You might notice the MK1 8bit Computer shares a few similarities with Ben Eater's breadboard computer project (and excellent education series.) Scozzafava readily admits that his project drew significant inspiration from Eater's. But he is also quick to point out that his CPU has a different architecture. A cursory glance of the capabilities of the two machines shows that the MK1's arithmetic logic unit (ALU) supports more operations and more RAM than Eater's design. However, as the pictures show, it is clearly a printed circuit board (PCB) design and not a breadboard!
Here, Scozzafava explains the reason for creating his CPU from scratch:
I always wondered if I could build a CPU myself from scratch. There are so many smart devices and constantly increasingly complex circuits and computing devices coming out every day that we are now used to consider this technology as a black box, impossible to replicate or even understand at a fine level.
Creating a clean PCB with plenty of LED indicators certainly makes understanding this CPU much easier.
The MK1 8bit Computer features:
- Extensible 8-bit bus
- Support for peripherals, like a character LCD
- Adjustable 1 Hz to 32 kHz Clock
- ALU with Add, Sub, OR, AND, NOT, Shift and Rotate
- Control Until combinational logic in EEPROM
- 4-digit display for computation output
A careful, or perhaps even a casual, inspection of the PCB reveals an Arduino Nano. Wait a minute! Is Scozzafava trying to pull a fast one? Is the Arduino running the LEDs instead of the 7400-series logic gates!? No, of course not.
While you can load code into the computer's memory by using the dip switches, the preferred method is to load code directly into memory with the Nano. It is acting as a USB to Serial to DIY CPU converter. Version two of the DIY CPU includes a separate board to load code from flash memory, eliminating the PC and Arduino combination. Speaking of version two, did you notice the bodge wires in the picture? Version one was Scozzafava's first PCB design. The next revision of the circuit board fixes these minor issues. Also, version two adds new functions to the computer's feature set.
This video shows different programs running on the MK1 8bit Computer. Examples include a Fibonacci sequence, multiplication tables, prime numbers, bubble sorting, and a random sequence.
With such a clean looking PCB and work already going into its successor, Scozzafava's CPU project is one worth following. Check out the MK1 8bit Computer GitHub repository for documentation and design files. There are KiCad schematics for each of the boards, code for the uploader, some explanations, and pictures.