| Adder | |||||||||||||
| In order to construct a CPU, we need to perform arithmetic and logical operations. | |||||||||||||
| Basic arithmetic operator: addition | |||||||||||||
| What's involved in adding binary numbers? | |||||||||||||
| carry | 0 | 1 | 1 | 0 | decimal | ||||||||
| 0 | 0 | 1 | 1 | 3 | |||||||||
| 0 | 1 | 1 | 0 | 6 | |||||||||
| result | 1 | 0 | 0 | 1 | 9 | ||||||||
| In each column: | |||||||||||||
| input: add 2 bits, along with a carry bit from the previous result | |||||||||||||
| output: 1 bit result, 1 bit carry | |||||||||||||
| Half-adder | |||||||||||||
| adds 2 bits (x, y), generates sum (s) and carry (c) | |||||||||||||
| (note that previous carry is being ignored) | |||||||||||||
| Truth table | Boolean expressions: | ||||||||||||
| x | y | s | c | ||||||||||
| 0 | 0 | 0 | 0 | s = \xy + x\y = x XOR y | |||||||||
| 0 | 1 | 1 | 0 | c = xy | |||||||||
| 1 | 0 | 1 | 0 | ||||||||||
| 1 | 1 | 0 | 1 | ||||||||||