notes/education/computer engineering/ECE2700/Binary Logic.md
2025-01-14 18:32:16 -07:00

149 lines
8.4 KiB
Markdown

# History of Boolean Algebra
- In 1849, George Boole published a scheme for describing logical thought and reasoning
- In the 1930s, Claude Shannon applied Boolean algebra to describe circuits built with switches
- Boolean algebra provides the theoretical foundation for digital design
# Properties of Boolean Algebra
| Number | Col. A | Col. A Description | Col. B | Col. B Description |
| ---------------------- | --------------------------------------------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------- | ------------------ |
| 1. | $0 \cdot 0 = 0$ | | $1 + 1 = 1$ | |
| 2. | $1 \cdot 1 = 1$ | | $0 + 0 = 0$ | |
| 3. | $0 \cdot 1 = 1 \cdot 0 = 0$ | | $1 + 0 = 0 + 1 = 1$ | |
| 4. | if $x = 0$ then $\overline{x} = 1$ | | if $x = 1$ then $\overline{x} = 0$ | |
| 5. | $x \cdot 0 = 0$ | | $x + 1 = 1$ | |
| 6. | $x \cdot 1 = x$ | | $x + 0 = x$ | |
| 7. | $x \cdot x = x$ | | $x + x = x$ | |
| 8. | $x \cdot \overline{x} = 0$ | | $$x + \overline{x} = 1$ | |
| 9. | $\overline{\overline{x}} = x$ | | | |
| 10. Commutative | $x \cdot y = y \cdot x$ | | $x + y = y + x$ | |
| 11. Associative | $x \cdot (y \cdot z) = (x \cdot y) \cdot z$ | | $x + (y + z) = (x + y) +z$ | |
| 12. Distributive | $x \cdot (y +z) = x \cdot y + x \cdot z$ | | $x + y \cdot z = (x + y) \cdot (x + z$ | |
| 13. Absorption | $x + x \cdot y = x$ | | $x \cdot (x + y) = x$ | |
| 14. Combining | $x \cdot y + x \cdot \overline{y} = x$ | | $(x + y) \cdot (x + \overline{y}) = x$ | |
| 15. DeMorgan's Theorem | $\overline{x \cdot y} = \overline{x} + \overline{y}$ | | $x + y = \overline{x} \cdot \overline{y}$ | |
| 16. | $x + \overline{x} \cdot y = x + y$ | | $x \cdot (\overline{x} + y) = x \cdot y$ | |
| 17. Consensus | $x \cdot y + y \cdot z + \overline{x} \cdot z = x \cdot y + \overline{x} \cdot z$ | | $(x + y) \cdot (y + z) \cdot (\overline{x} + z) = (x + y) \cdot (\overline{x} + z)$ | |
# Synthesis
In the context of binary logic, synthesis refers to the act of creating a boolean expression that evaluates to match a given truth table.
This is done by creating a product term for each entry in the table that has an output of $1$, that also evaluates to $1$, then ORing each product term together and then simplifying.
Example:
Given the below truth table, synthesize a boolean expression that corresponds.
| $x_1$ | $x_2$ | $f(x_1, x_2)$ |
| ----- | ----- | ------------- |
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
- $f(0, 0)$ evaluates to true with the expression $\overline{x}_1 \cdot \overline{x}_2$
- $f(0, 1)$ evaluates to true with the expression $\overline{x}_1\cdot x_2$
- $f(1, 0)$ should provide an output of zero, so that can be ignored
- $f(1, 1)$ evaluates to true with the expression $x_1 \cdot x_2$
ORing all of the above expression together, we get:
$$ f(x_1, x_2) = \overline{x}_1\overline{x}_2 + \overline{x}_1 x_2 + x_1x_2 $$
$$
\begin{multline}
= x_1x_2 \\
= x
\end{multline}
$$
# Logic Gates
![](./assets/logic-gates.jpeg)
# NOT Gate
A binary NOT gate has a single input, and inverts that input (output is not the input).
## Truth Table
| $x$ | $y$ |
| --- | --- |
| 0 | 1 |
| 1 | 0 |
## Mathematical Expression
A NOT operation is mathematically expressed using a bar:
$$ y = \bar{x} $$
# AND Gate
An AND gate will only output a 1 if *both* inputs are a one (input one *and* input two are enabled).
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
## Mathematical Expression
An AND operation is mathematically expressed using a times symbol, or with no symbol at all:
$$ y = x_1 \cdot x_2 = x_1x_2$$
# NAND Gate
A NAND gate outputs a 1 *unless* both inputs are enabled (input one *and* input two are *not* enabled).
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
## Mathematical Expression
A NAND operation is mathematically expressed using a bar over an AND operation:
$$ y = \overline{x_1 \cdot x_2}$$
# OR Gate
An OR gate outputs a 1 if either or both inputs are enabled (if input one *or* input two is enabled).
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
## Mathematical Expression
A mathematical OR is notated with a $+$ symbol.
$$ y = x_1 + x_2 $$
# NOR Gate
A NOR gate outputs a one if neither gate is enabled.
## Truth Table
| $x_1$ | $x_2$ | $y_1$ |
| ----- | ----- | ----- |
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
## Mathematical Expression
A NOR operation is expressed using a bar over an OR operation.
$$ y = \overline{x_1 + x_2} $$
# XOR Gate
An XOR gate is on if one input is enabled, but *not* both (exclusively one or the other).
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
## Mathematical Expression
An XOR operation is expressed using a circle around an addition symbol:
$$ y = x_1 \oplus x_2 $$
## XNOR Gate
An XNOR gate is on if neither input is enabled, or both inputs are enabled.
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
## Mathematical Expression
An XNOR operation is expressed using a bar over an XOR operation:
$$ y = \overline{x_1 \oplus x_2} $$