- 2004 11 01 — /me drawing the CPU to be made (just 2 photos)
- 2004 11 11 — /me making a CPU simulation with Verilog (no photos, just Verilog files)
- 2004 11 22 — First series of 74LS parts arrived, /me played with them whole night ^_^ (11 photos)
- 2005 06 30 — Test setup of the switch board and the LED board is complete, layout of the ALU board planned (7 photos)
- 2005 07 01 — Power is supplied by the ATX power supply unit's +5V Stand-By instead of the old model railway's supply (3 photos)
- 2005 07 02 — Better mechod of soldering – cables go on one side, but are soldered to chip leads on the other, ALU in progress, but it already works (8 photos)
- 2005 07 03 — ALU not finished yet, but it nands, nors and even adds in 8 bit. I almost fried everything in process, but now it works. (6 photos)
- 2005 07 04 — ALU making continues, design switched from 1 board to 2 board ALU, circuits for zero-check and other 8 bits started. (7 photos)
- 2005 07 05 — ALU finally emits signals over IDE output cable. At the moment only the first 2 bits are connected, as I wanted to make photos fast. The diodes are much brighter than on the photos, due to camera flash (5 photos)
- 2005 07 05 — 8 bit ALU complete, here are some calculations. "138 - 28 - 1" means "138 + not28, no carry", "138 - 28" means "138 + not28 + carry". Diode 5 of 0-7 didn't flash, dunno if the problem is at diode board or ALU board. (3 photos)
- 2005 07 06 — Life Support from the East. (1 photo)
Switch board
Parts:
- 5x 8-DIP switch
- 5x 1kΩ 8+1 resistor ladder
- 1x IDE male socket
At the moment red power cable is GND and black power cable is +5V.
The quick rewiring was required to make the negative output strong enough to power 20+ gates,
like 74LS-compatible stuff is supposed to be.
Maximal output on high is 5 mA, on low it's practically unlimited (directly connected to the power rail,
of course the cabling will fry at some point).
As 74LS TTL are supposed to source at least 8 mA on low, in the original wiring the board
would emit quite weak signals, being able to drive only 12 gates, instead of at least 20.
This is a problem, as two signals ALU uses are fed to 16 XOR gates each.
Actually each of this signals is transfered over 2 wires, as each XOR gate sinks
twice as much current as normal gates.
LED board
Parts:
- 20x green LED
- 20x red LED
- 5x 1kΩ 8+1 resistor ladder
- 1x IDE male socket
The logic is inverted (it emits light on low voltage).
This is more practical solution, due to asymmetric 74LS output current limits.
Maximal output current on high (0.4 mA) is 20 times lower than on low (8 mA).
ALU board
Parts:
- 8x 74LS86 Quad XOR
- 2x 74LS83 4-bit Full Adder
- 2x 74LS00 Quad NAND
- 4x 74LS02 Quad NOR
- 4x 74LS157 Quad 2-Input Multiplexer
- 1x 74LS30 8-input NAND (missing)
- 3x IDE male socket - input, output, bidirectional to ALU extension board
Because it got way too dense, I decided to split ALU board into main ALU board (21 of 31 chips),
and ALU extension board (the other 10).
Main ALU board does all work on first 8 bits.
Other 8 bits are processed as follows - negation layer is on the main board,
xored inputs, carry-8, and select signals go to the extension board,
output and carry-16 return to the main board, where they're checked for being zero
and forwarded to output.
It's not all wired yet.
Connector IN:
Top
|
---|
A 8 | A 9 | A 10 | A 11 | B 8 | B 9 | B 10 | B 11
| A 12 | A 13 | A 14 | A 15 | B 12 | B 13 | B 14 | B 15
| Ai | Bi | NC | S1
|
A 0 | A 1 | A 2 | A 3 | B 0 | B 1 | B 2 | B 3
| A 4 | A 5 | A 6 | A 7 | B 4 | B 5 | B 6 | B 7
| Ai | Bi | Carry-IN | S0
|
Bottom
|
---|
Connector OUT:
Top
|
---|
R 8 | R 9 | R 10 | R 11 | R 12 | R 13 | R 14 | R 15
| Carry-OUT | Zero | NC | NC | R 7 | R 6 | R 5 | R 4
| R 3 | R 2 | R 1 | R 0
|
NC | NC | NC | NC | NC | NC | NC | NC
| NC | NC | NC | NC | NC | NC | NC | NC
| NC | NC | NC | NC
|
Bottom
|
---|
Connector EXT:
Top
|
---|
R 8 | R 9 | R 10 | R 11 | R 12 | R 13 | R 14 | R 15
| NC | NC | NC | NC | NC | NC | NC | NC
| NC | NC | Carry-OUT | S1
|
Ax 8 | Ax 9 | Ax 10 | Ax 11 | Bx 8 | Bx 9 | Bx 10 | Bx 11
| Ax 12 | Ax 13 | Ax 14 | Ax 15 | Bx 12 | Bx 13 | Bx 14 | Bx 15
| NC | NC | Carry-MID | S0
|
Bottom
|
---|
- A - input A
- B - input B
- Ai - controls negahiot of input A
- Bi - controls negahiot of input B
- S0 - controls first mux layer (low=nand, high=nor)
- S1 - controls second mux layer (low=nand/nor, high=addition)
- Ax - input A xor Ai
- Bx - input B xor Bi
- Zero - true if R==0
- Carry-IN - carry input to first adder
- Carry-MID - carry output after first 8 bits, input to the other 8 bits
- Carry-OUT - carry output from adding full 16 bits
- R - result
- NC - not connected
ALU extension board (planned)
Parts:
- 2x 74LS83 4-bit Full Adder
- 2x 74LS00 Quad NAND
- 2x 74LS02 Quad NOR
- 4x 74LS157 Quad 2-Input Multiplexer
- 1x IDE male socket - bidirectional to ALU board
Register file (planned)
At first I thought I would use 74LS273 octal D flip flops and 74LS151 8-input muxes,
but after some experience with wiring the ALU I see what a cabling nightmare it would probably be.
So I think I'll use some 3->8 decoders and octal 3-state drivers. Unfortunately I only have
a few 74LS240 3-state inverters (that's a minor problem) and no 3->8 decoders.