16-Bit Computer (bigger and better)

Ah.  My 16 bit computer. I’m still working on this one so I’ll add more media as I complete the project. Here is a picture of what I have so far:

This time I was determined to have a computer with a full instruction set. I wanted a computer that the control logic would do a 16 bit multiplication and division with 1 opcode, so I would need at least 1 32bit shift register to do those types of calculations. The ALU would also need to do a bit more than just add subtract so I plan on using 4 4bit ALU IC’s for this project just so save space. The registers them selfs barely fit on a single breadboard:

So to make the ALU I wire up 2 registers into the ALU chips and have an output LED desplay for each (Makes the computer really interesting when its working):

Next I lay out chips for the Memory module. This time I’m planning on having only 1 RAM fetch per opcode cycle and use pointers for large operands, this will limit the number of large operands to 256 but I just cant seem to think of a reason why I’m going to need more than 256 large immediate values. I can also use those extra micro-cycles for the multiplication and division operations. Here’s the computers ALU and shift register, display and RAM chips all ready for wiring:

In the RAM module i added a few shift registers so I can program the computer using an Arduino or other Micro-Controller. I still had the old dip-switch method too so i could quickly throw in some op codes and see if they work as expected.

The Output display I used a small LCD display and I programmed a ATMEGA256 chip to convert the the binary number into a readable number and display it. The LCD had 2 lines so I added a previous number just in case I missed the halt switch while debugging

I also Added a usable counter to my list of things this computer needed so i added it below the RAM module.

Now the computer was getting too big to move around so i Glue it to a piece of wood. This also makes it hang able for some super nerdy tech art for the wall.

I added the control logic chips and finished the bus so each module can can communicate.

Now its testing time I made this video of every component working with the lights down. Even the micro-cycle counter is up and running:

Finally I got everything wired and ready to be programmed:

Now the tedious task of programming the control logic EEPROM’s to control each module to perform their tasks. First I did the load, and Add/Sub features. Here is an add load 13 add program running in a loop:

Now just for Testing I wrote a program to use each module  then loop:

This is still a work in progress but I’m almost done. My current Issues are saving into RAM from the registers and Jump Condition Logic.

 

Leave a Reply

Your email address will not be published. Required fields are marked *