I built a programmable 8-bit computer from scratch on breadboards using only simple logic gates. I documented the whole project in a series of YouTube videos and on this web site. For an introduction:
Background
If you’re interested in seeing the computer in action to get a sense of what it can do, check out these videos:
- Programming my 8-bit breadboard computer
- Stepping through a program on the 8-bit breadboard computer
- Comparing C to machine language (this and the following video will give you a sense of how this simple computer relates to modern computers you may be more familiar with)
- Programming Fibonacci on a breadboard computer
If you want to dive into the details of how the computer works and understand it from first principles, but are a little unsure of how transistors and logic gates work (or just want a refresher), here’s a few videos to serve as an introduction:
- How semiconductors work
- How a transistor works
- Making logic gates from transistors
- SR latch
- D latch
- D flip-flop
Computer modules
The computer is composed of several modules, each of which performs just a few basic functions. Check out these posts for more detailed information on building each module:
- Clock module (CLK)
- Registers (A, B, IR)
- Arithmetic and logic unit (ALU)
- Random access memory (RAM)
- Program counter (PC)
- Output (OUT)
- Bringing it all together (BUS)
- Control logic (CONT)
Complete parts list
Here’s a complete parts list of everything I used to build the breadboard computer. The total cost works out to roughly $150-$200 USD depending on what breadboards you use and how much you end up paying for shipping.
There’s no right way to do this project. There are tons of substitutions and other approaches which will work just as well (or better), so if you want to build something similar and can’t find all the parts, try to figure out what the missing part does and find a different way of doing it. It might not work the first time, but you’ll learn a ton from trying to figure out why.
Quantity | Description | Approx. cost each | Approx. total cost | Sources | Modules |
---|---|---|---|---|---|
14 | Breadboard | $3 - $8 | $36 - $96 | Amazon | All |
1 | 22 AWG Solid Tinned-Copper Hook-Up Wire | $18.00 | $18.00 | Amazon Jameco | All |
9 | 1kΩ resistor | $0.04 | $0.36 | Digikey Amazon | CLK, RAM, OUT |
8 | 10kΩ resistor | $0.04 | $0.32 | Digikey Amazon | BUS |
2 | 100kΩ resistor | $0.04 | $0.08 | Digikey Amazon | CLK, OUT |
8 | 470Ω resistor | $0.04 | $0.32 | Digikey Amazon | BUS |
1 | 1MΩ resistor | $0.04 | $0.04 | Digikey Amazon | CLK |
1 | 1MΩ potentiometer | $2.50 | $2.50 | Digikey Amazon | CLK |
6 | 0.01µF capacitor | $0.15 | $0.90 | Digikey Amazon | CLK, RAM, OUT |
2 | 0.1µF capacitor | $0.18 | $0.36 | Digikey Amazon | CLK |
1 | 1µF capacitor | $0.71 | $0.71 | Digikey Amazon | CLK |
4 | 555 timer IC | $0.41 | $1.64 | Digikey Ebay | CLK, OUT |
1 | 74LS00 (Quad NAND gate) | $0.50 | $0.50 | Digikey Ebay | RAM |
5 | 74LS04 (Hex inverter) | $0.50 | $2.50 | Digikey Ebay | CLK, RAM, CONT |
2 | 74LS08 (Quad AND gate) | $0.50 | $1.00 | Digikey Ebay | CLK, OUT |
1 | 74LS32 (Quad OR gate) | $0.50 | $0.50 | Digikey Ebay | CLK |
1 | 74LS76 (Dual JK flip-flop) | $2.00 | $2.00 | Ebay | OUT |
2 | 74LS86 (Quad XOR gate) | $0.50 | $1.00 | Digikey Ebay | ALU |
1 | 74LS138 (3-to-8 line decoder) | $0.50 | $0.50 | Ebay | CONT |
1 | 74LS139 (Dual 2-line to 4-line decoder) | $0.50 | $0.50 | Ebay | OUT |
4 | 74LS157 (Quad 2-to-1 line data selector) | $0.50 | $2.00 | Ebay | RAM |
4 | 74LS161 (4-bit synchronous binary counter) | $0.50 | $2.00 | Ebay | PC, CONT |
7 | 74LS173 (4-bit D-type register) | $1.00 | $7.00 | Ebay | REG, RAM |
2 | 74LS189 (64-bit random access memory) | $1.50 | $3.00 | Ebay | RAM |
6 | 74LS245 (Octal bus transceiver) | $0.50 | $3.00 | Ebay | REG, ALU, RAM, PC |
1 | 74LS273 (Octal D flip-flop) | $0.50 | $0.50 | Ebay | OUT |
2 | 74LS283 (4-bit binary full adder) | $2.00 | $4.00 | Ebay | ALU |
4 | 28C16 EEPROM | $6.00 | $24.00 | Ebay | OUT, CONT |
2 | Double-throw toggle switch | $3.80 | $7.60 | Amazon | CLK, RAM |
2 | Momentary 6mm tact switch | $2.50 | $5.00 | Amazon | CLK, RAM |
1 | 8-position DIP switch | $0.50 | $0.50 | Amazon Ebay | RAM |
1 | 4-position DIP switch | $0.50 | $0.50 | Ebay | RAM |
41 | Red LED | $0.05 | $2.05 | Amazon Ebay | BUS, REG, ALU, RAM |
20 | Yellow LED | $0.05 | $1.00 | Amazon Ebay | REG, RAM, CONT |
11 | Green LED | $0.05 | $0.55 | Amazon Ebay | RAM, PC, CONT |
22 | Blue LED | $0.05 | $1.10 | Amazon Ebay | CLK, REG, CONT |
4 | Common cathode 7-segment display | $0.75 | $3.00 | Amazon Ebay | OUT |
Additionally, I used an Arduino Nano and two 74HC595 shift registers to build a simple EEPROM programmer to program the 28C16 EEPROMs used in the output module and control logic.
Breadboards
A note on breadboards: You can get them from lots of places for different prices. The best quality I’ve found is the BB830 by BusBoard Prototype Systems. I get them on Amazon, but they’re not cheap. (If you’re paying less than $7-8 USD each, you’re probably getting a fake.)
Lower quality, cheaper breadboards will probably work just fine (and save a bunch of money if you’re buying ~12 of them). The biggest differences include inadequate funneling on each hole, making it harder to properly insert components (this can vary a lot, from not a big deal to useless); inconsistent coloring (i.e., several breadboards, even ordered at the same time, are different shades of white); confusing labeling (e.g., numbers not lining up with holes); and warping (i.e., the breadboard doesn’t sit completely flat). Most of those aren’t deal-breakers, and if something doesn’t work right, look on the bright side: you get to troubleshoot it and learn more 🙂