Autosave: 2022-12-19 08:00:05

This commit is contained in:
thomasabishop 2022-12-19 08:00:05 +00:00
parent 17a184be3c
commit 5a2aa69384

View file

@ -14,3 +14,48 @@ This is an important skill that we will use when constructing [logic circuits](/
## The process
The process proceeds as follows:
1. Work out the truth conditions for the circuit we want to construct
2. Identify the rows where the output is equal to 1
3. For each of these rows construct a Boolean expression that evaluates to that output
4. Join each expression with OR
5. Reduce these expressions to a single expression in its simplest form
## Example
Let's say we have the following truth table:
| Line | $x$ | $y$ | $z$ | $f$ |
| ---- | --- | --- | --- | --- |
| 1 | 0 | 0 | 0 | 1 |
| 2 | 0 | 0 | 1 | 0 |
| 3 | 0 | 1 | 0 | 1 |
| 4 | 0 | 1 | 1 | 0 |
| 5 | 1 | 0 | 0 | 1 |
| 6 | 1 | 0 | 1 | 0 |
| 7 | 1 | 1 | 0 | 0 |
| 8 | 1 | 1 | 1 | 0 |
We only need to focus on lines 1, 3, and 5 since they have the output 1:
| Line | $x$ | $y$ | $z$ | $f$ |
| ---- | --- | --- | --- | --- |
| 1 | 0 | 0 | 0 | 1 |
| 3 | 0 | 1 | 0 | 1 |
| 5 | 1 | 0 | 0 | 1 |
For each line we construct a Boolean expression that would result in the value in the $f$ column. In other words we construct the function:
| Line | $x$ | $y$ | $z$ | $f$ |
| ---- | --- | --- | --- | ------------------------------------------- |
| 1 | 0 | 0 | 0 | $ \lnot(x) \land \lnot (y) \land \lnot(z) $ |
| 3 | 0 | 1 | 0 | $ \lnot(x) \land y \land \lnot(z) $ |
| 5 | 1 | 0 | 0 | $ x \land \lnot(y) \land \lnot(z) $ |
We can now join each expression to create a complex expression that covers the entire truth table. Since 1 will be output for any one of these sub-expressions we can just join them up with OR:
$$
(\lnot(x) \land \lnot (y) \land \lnot(z)) \lor \lnot(x) \land y \land \lnot(z) \lor x \land \lnot(y) \land \lnot(z)
$$
It's clear that we have transcribed the truth conditions accurately but that we are doing so in a rather verbose way. Let's simplify: