Digital logic has always fascinated me and is my favourite part of electronics. I decided I wanted to apply the knowledge that I gained from university and online research by building a breadboard computer.
The concept was heavily inspired by YouTube videos by Ben Eater who built an 8-bit breadboard computer. I wanted to step mine up and build a truly functional computer with lots of capability. This project has tought me a lot about different series of IC chips and how to read data sheets. |
Computer architecture
The design is based off the NAND-2-Tetris (ww.nand2tetris.org) computer architecture with some modifications. I did this because because the ALU is very intuative to control, chip efficient and is powerful. My design does not include a screen, however, in the future, I may implement a VGA graphics output.
Jump LogicThe computer is capable of jumping to a different line of machine code when certain conditions are met. First, a binary value is loaded into the D-register. There are different jump op-codes that evaluate the D-register and jump when the D-register value is either: >0, <0, =0, ≥0, ≤0. There is also a jump op-code that ignores the value in the D-register.
|
Using the 74LS chip series
The 74LS series is a series of logic ICs created in 1971 that uses a TTL design. I chose this series because it is low cost, has a wide range of logic chips and operates on 5V logic, which allows it to work with an Arduino. This is important as I will use an Arduino to programme, diagnose and analyse the circuit.
I decided to use all Texas Instruments chips (except for the SRAM and EEPROM as, they are not part of the 74LS series). In total, the project required 92 chips as seen below:
I decided to use all Texas Instruments chips (except for the SRAM and EEPROM as, they are not part of the 74LS series). In total, the project required 92 chips as seen below:
PROGRAMMING AND TESTING
To test and programme the computer, I developed some software to run on the Arduino to monitor, program and track execution. It was instrumental in checking for design issue and problems with the architecture. It has the following features:
- It can write binary applications to the EEPROMs from a txt file.
- Terminal line interface to run and single step the computer clock. It can also step a given number of clock cycles and is able to display the number cycles that have been completed.
- Reset the computer clock and erase and reset the EEPROMS and ALU registers
FUTURE PLANS
Now that the core project is complete, I have started to consider future plans
- Architecture changes
- Reduce RAM & add peripherals: To add more functionality to the computer, I would be keen to reduce the amount of ram to 16k and add the most siginificant bit as a selector to select between storing values in RAM or sending the data to the peripherals. These peripherals could innclude an LCD screen, 7-segment display, indicator LEDs or perhaps sound or VGA video output (see below).
- VGA Video Output: Without a video output, this computer does not do a lot and having reviewed the VGA standard, I think that it would be possible to add additional circuitry to enable the computer to display Black or White video on a screen.
- PCBs: I am keen to learn more about PCB design and would like to create a PCB version of this computer. Replacing the breadboard with PCBs would allow for a significantly denser and smaller design whilst reducing trace lengths and inter-trace capcitance which would allow for the clock speed to be increased.