Circuits
MUX (Multiplexor)
Decoder
Adder
Combinational Circuits 1
Some commonly used components
• Decoders: n inputs, 2n outputs.
– the inputs are used to select which output is
turned on. At any time exactly one output is on.
• Multiplexors: 2n inputs, n selection bits, 1
output.
– the selection bits determine which input will
become the output.
• Adder: 2n inputs, 2n outputs.
– Computer Arithmetic.
Combinational Circuits 2
1 input Decoder
O0
I Decoder O1
Combinational Circuits 3
1 input Decoder
O0
I
O1
Combinational Circuits 4
2 input Decoder
O0
I0
O1
Decoder O2
I1
O3
Combinational Circuits 5
2 input Decoder
I0 I1
Combinational Circuits 6
3 Input Decoder
O0
I0
O1
O2
I1
O3
Decoder
O4
I2 O5
O6
O7
Combinational Circuits 7
3-Decoder Partial Implementation
I0 I1 I2
O0
O1
...
Combinational Circuits 8
2 Input Multiplexor
Inputs: I0 and I1
Selector: S I0
Output: O
Mux O
I1
If S is a 0: O=I0
If S is a 1: O=I1
S
Combinational Circuits 9
2-Mux Logic Design
S I0 I1
I0 && !S
I1 && S
Combinational Circuits 10
4 Input Multiplexor
Inputs: I0 I1 I2 I3
Selectors: S0 S1 I0
Output: O I1
Mux O
I2
S0 S1 O
0 0 I0 I3
0 1 I1
S0 S1
1 0 I2
1 1 I3
Combinational Circuits 11
One Possible 4-Mux
S0 I0
S1 2-Decoder I1
O
I2
I3
Combinational Circuits 12
Adder
• We want to build a box that can add two 32
bit numbers.
– Assume 2s complement representation
Combinational Circuits 13
Addition
• We need to build a 1 bit adder
– compute binary addition of 2 bits.
• We already know that the result is 2 bits.
A B O0 O1
0 0 0 0 This is addition! A
0 1 0 1 + B
1 0 0 1 O0 O1
1 1 1 0
Combinational Circuits 14
One Implementation
A A && B
B O0
Combinational Circuits 15
Binary addition and our adder
1 1 Carry
01001
+ 01101
10110
What we really want is something that can be
used to implement the binary addition
algorithm.
– O0 is the carry
– O1 is the sum
Combinational Circuits 16
What about the second column?
1 1 Carry
01001
+ 01101
10110
Combinational Circuits 17
Truth Table for Addition
A B Carry Carry Sum
In Out
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Combinational Circuits 18
1 bit adder (3 inputs!)
• We can come up with a logic design:
Combinational Circuits 19
New Component: 1 Bit Adder
Carry In
A
adder Sum
B
Carry Out
Combinational Circuits 20
Building a 32 bit Adder
A0 A1 … A31 B0 B1 … B31
… …
…
R0 R1 … R31 Result
• 64 inputs
• 32 bit output
Combinational Circuits 21
4 Bit Ripple Carry Adder C3 C2 C1 C0
A3A2A1A0
+ B3B2B1B0
S3S2S1S0
B3 A3 B2 A2 B1 A1 B0 A0
C3 C2 C1
adder adder adder adder C0
S3 S2 S1 S0
Combinational Circuits 22
4 Bit Ripple Carry Adder 01 0
0011
+ 0010
0101
0 0 0 0 1 1 0 1
0 0 1 0
adder adder adder adder 0
0 1 0 1
Combinational Circuits 23
Subtraction
• Compute A-B as A + (-B-1) + 1
Combinational Circuits 24
Subtraction 0101
- 0011
B inverted
0010
1 0 1 1 0 0 0 1
1 1 0 1
adder adder adder adder 1
0 0 1 0
Combinational Circuits 25
Two’s Complement Numbers
• Nothing is different!
– This is the advantage of using 2’s complement
representation.
• Overflow:
– For addition: sign of the result is different than
the sign of the operands (and they have the
same sign).
Combinational Circuits 26
-3 + 7 11 1
1101
+ 0111
0100
0 1 1 1 1 0 1 1
1 1 1 1
adder adder adder adder 0
0 1 0 0
Combinational Circuits 27
-3 + -7 00 1
1101
+ 1001
0110
1 1 0 1 0 0 1 1
1 0 1 0
adder adder adder adder 0
0 1 1 0
Overflow!
Combinational Circuits 28
Ripple Carry Timing
• All the adders are actually operating all the time
(they are just combinational circuits).
Combinational Circuits 30
4 Bit Carry Look-ahead 01 0
0011
+ 0010
00 00 11 01 0101
0
Carry Generator
0 0 0 0 1 1 0 1
0 0 1 0
adder adder adder adder 0
0 1 0 1
Combinational Circuits 31