Close
0%
0%

PERIHELION 1: An 8 Bit Computer

An 8 bit computer made (mostly) from 7400 series logic.

Similar projects worth following
The goal of this project is to build a computer that is comprised mostly of 7400 series ICs. I depart from this ideal where it would be too difficult, impractical, or boring to achieve the equivalent with 7400 series logic (for example, I'm using specialized RAM ICs, not building memory from logic gates). The other objective of this project is for the computer to be usable for some simple tasks. To this end, it will have lots of memory for storing large programs, a relatively capable homebrew CPU, GPIOs, and lots of tolerance for added modules.

Here's a more detailed description of the computer I'm building:

It'll have flash memory used as a hard drive; this memory will be programmed from my laptop so long programs can be created and written from text files, making complex programs easier to write. The computer will also, of course, be able to rewrite its flash memory to save data.

The CPU will be able to perform 8 operations: Addition, subtraction, left/right bitshift, bitwise NAND, NOR, AND, XOR, and checking to see if all bits in a byte are ones. It is built from 7400 series ICs, except for the control unit which I'm probably going to make from either EEPROM or a CPLD.

It has 32KB of RAM.

It will also have ports to allow external flash memory to be connected to the computer. The purpose of this is to allow programs to be saved externally and plugged into the computer when you want to run them, and to allow you to save data to external memory.

On the I/O side of things, it will have an array of 7-segment displays for outputting computation results. Furthermore, I'm building a control panel with 8 reprogrammable buttons, switches, and LEDs so that your programs can get user input. Lastly, the main bus (along with some control lines from the CPU) will be routed to a port on the side of the computer so keypads, fancier displays, or whatnot can be connected to the computer and controlled at a later date, should the need arise.

On the manufacturing side of things...

I'm going to order or mill my own PCBs for this computer. It will require some 20-30 boards, so this project is certainly going to take a while. As I get the boards designed, made, and assembled, I'll upload the gerbers and KiCad project files.

Once all the electronics are ready to go, I plan on building one gigantic plywood box to house this beast. Lastly, I'll give it a nice pretty control panel with loads of switches and blinkenlights (maybe even a buzzer to yell at you) to really tie the whole thing off.

ALU_Alpha8_B1.zip

Board 1 for ALU. (There is a bug in this board I missed until after I milled it (hence the bodge wires in the photo). You will need to add two clock lines for the registers).

x-zip-compressed - 283.52 kB - 03/22/2018 at 18:47

Download

  • RAM, CPU Boards 1 & 3

    Grant Giesbrecht04/04/2018 at 22:33 1 comment

    I got my PCBs in the mail and assembled them. This batch included the boards for my RAM module, 2 boards for my CPU, along with the remainder of the boards for the ALU. I can't test the ALU yet because I need to order more chips to finish populating the boards. The RAM board works (except for Q1, whose source and drain I swapped in the schematic. It's a simple enough fix, however; you've just got to flip the transistor around 180 degrees), along with CPU board 1 (houses instruction register, flip flops to specify which flash memory device from which to read the program, and the state counter). Alas, CPU board 3 (program counter) needs to be remade - I  made a wiring mistake in the schematic. 

  • ALU: Board 1 & Breakout Boards

    Grant Giesbrecht03/22/2018 at 18:58 0 comments

    The ALU is too complex for me to fit on one PCB, so i've broken it into 5 seprate PCBs which will stack. I finished the first board and made some breakout boards to make testing go faster for this project. One just converts between a 2x5 header (which I'm using to route the main bus and power throughout the computer) to a section of female header pins. The other lets me read high/low values of 8 pins or write high/low values to 8 pins.

    (The blue tape is just covering the strip of 8 LEDs because they are too bright)

    Here is ALU Board 1:

    This board houses the ALU's three registers. I forgot to allow the registers to be clocked individually, so I had to cut the clock trace and add some bodge wires.

    I've got ALU boards 2-5 designed and ordered, along with the RAM module and 2 other boards for the CPU (they house the program counter, instruction register, and a bank of flipflops that lets the user specify at boot-up which flash memory device to load the program from), so those will be coming along shortly.

View all 2 project logs

Enjoy this project?

Share

Discussions

Natalie wrote 12/21/2018 at 04:52 point

Dang, looks incredible!

  Are you sure? yes | no

Dr. Cockroach wrote 04/04/2018 at 23:55 point

I second that, very nice :-)

  Are you sure? yes | no

Yann Guidon / YGDES wrote 03/23/2018 at 03:00 point

Nice !

  Are you sure? yes | no

Similar Projects

67.2k
372
190
Project Owner Contributor

MC68000 Computer

BenchoffBenchoff

Does this project spark your interest?

Become a member to follow this project and never miss any updates