Logic Diagrams, Transistor Level

The 2-1 multiplexer (2mux.mag)
This transistor level diagram is the simply two transmission gates stuck put together. Using a control signal A0 and its inverse, this system is capable of choosing between two input lines. By itself, it is not a very good implementation, since there is a possibility of backwards transmission, but we attach a latch immediately afterwords, to protect the output.

The 4-1 multiplexer
Similar to the 2-1 multiplexer, except that it can handle 4 inputs. It has two different control lines, A0 and A1, and their associated inverses. A latch can be added to the end to prevent backwards transmission.

The Generic Latch
All of our latches are based on this design. We opted to go with an output inverter, in order to protect the latch from corruption from an output bus. Though this design requires a few more transistors, we weren't pressed for space.

The Adder
The large transistor diagram below can add two one-bit numbers together, considering the Carry_in as well. It outputs a sum and a carry out. In order to accomodate 8-bit numbers, 8 of these adders are connected together to make a ripple carry adder. The subtraction mechanism is not included in the adder. Instead, if a number is to be subtracted, the original number is first inverted. This inverted value is chosen through the multiplexer, and is an input into the adder. A carry_in of 1 is also included, since you must add 1 to an inverted number in order to actually negate it.