Joseph Naberhaus' First Big Electronics Project Is a Doozy: Building a Computer From Discrete Logic
Despite no major prior experience in electronics, Naberhaus set about building his own eight-bit microcomputer — and succeeded.
Software engineer Joseph Naberhaus has taken a break from his usual hobby of woodworking to tackle something different: the creation of a functional eight-bit computer built using discrete 7400-series logic chips.
"Earlier this year," Naberhaus explains, "I came back from a camping trip with an inspiration to learn electronics. I started reading a text book, Practical Electronics for Inventors, and began accruing equipment. After building some basic frequency filters, I had the desire to tackle a substantial project. For many years, I've dreamed about building a working computer from just logic gates. I ordered some breadboards, jumper cables, and integrated circuits and set to work."
As far as first projects go, building a computer from discrete logic chips is an ambitious one. The invention of the microprocessor was a breakthrough for compact computing, taking systems from room- or at best desk-size into compact boxes you could reasonably have in the home. Stepping back from that to create an equivalent using only AND, OR, NOT, NAND, and XOR gates is a real challenge — but one Naberhaus tackled with relish.
"With enough logic gates you can replicate any computer in the world," Naberhaus explains. "The computer I built, on the other hand, used only about 800. I cheated in two places. For both the program memory and the RAM I used flash memory chips. This means I can't say I wired the entire computer by hand. While this pains me to admit, I wasn't willing to invest the time or money to remedy it."
The computer — which splits its various core functions across multiple breadboards for modularity — is programmed using a custom assembly language Naberhaus developed for the project, which compiles into 24-bit machine code. "While the rest of the computer uses 8-bit busses," he explains, "I decided to splurge on the machine language for two reasons. First, it allowed me to implement a richer set of instructions. Second, it made implementing the instructions simpler."
The finished system, which has 256 bytes of memory, 256 lines of program memory, and a clock speed of 500kHz, is detailed on Naberhaus' website and in the video embedded above and on the maker's YouTube channel.