Search This Blog

Monday, March 14, 2016

Homebrew 4 bit CPU - Part2 (Registers, scratch-pad RAM and Breadboard maze)

Here is a quick update on my homebrew 4 bit CPU. 
After few hours with the jumper wires and breadboard I managed to create a nasty looking maze of connections, starting with the accumulator: I used a 74HCT173 D register and connected it so that it feeds the 4 bit output of the ALU (F0...F3) back to it's A input (A0..A3) .

The ALU is able to run arithmetic and logical operations on 2 operands A and B. The value of the A operand is provided by the accumulator which also stores the result of the operation. (control signal /LOADA )
Another 74HCT173 serves as the flags register, and it stores the carry output (Cn+4) bit and the Not Zero bit. The carry out bit is used for relative magnitude comparison and the Not Zero bit is the output of 3 OR gates (74LS32) and indicates if at least one line of the ALU 4 bit datapath is at High state. (control signal /LOADFLAGS)
One more 74HCT173 serves as an output register and stores the value on the Data Bus (control signal /LOADOUT) to deliver it later to the 7 segment Driver (74LS47)
Then there is the dual Bus Driver 74HCT244, which puts the ALU result on the Data Bus (orange wires in photo) when needed (/OEALU and /OEOPRAND control signals at pins 1 & 19, see nippler schematic)

Finally I got the 64 bit (4 x16)  RAM (SN7489) connected to the data bus, well the nippler uses a different 4 bit RAM, much larger and with a 12 bit Address Bus (A0..A11)
I still dont have the right PROM and EEPROMs for Program and Microcode so i was thinking maybe i could emblement both using a microcontroller and some i2c port expansion chip!?