Line 205: | Line 205: | ||
===Sum of Products (SoP) === | ===Sum of Products (SoP) === | ||
− | + | A '''[[minterm]]''' is the Boolean product (ANDing) of <math>n</math> variables and contains all <math>n</math> variables of the function just once, in either normal or complemented form. For example, for the function <math>f(a, b)</math> with two variables, we can have the following minterms: <math>a \land b</math>, <math>a \land \bar b</math>, <math>\bar a \land b</math>, and <math>\overline{a \land b}</math>. If the value assigned to a variable is 0, the variable is complemented, conversely a variable remains uncomplemented if the value assigned to it is 1. Consider the table to the right, since in the first row, the variables <math>a</math>, <math>b</math>, and <math>c</math> are all <math>0</math>, the minterms for them is <math>\bar a \land \bar b \land \bar c</math> | |
− | The '''[[sum of minterms]]''' | + | A '''[[sum term]]''' is the Boolean sum (ORing) of variables as a subset of the possible variables or their complements. For example, for the function <math>f(a,b,c)</math>, the following are a few possible sum terms: <math>\bar c</math>, <math>a \lor b</math>, and <math>\bar a \lor b</math>. |
− | :<math>f(a,b,c, d) = a | + | |
− | We can express that function in SoP form | + | The '''[[sum of minterms]]''' also called '''Sum of Product''' ('''SoP'''), '''canonical sum of products''', '''minterm expansion''', and '''canonical disjunctive normal form''' ('''CDNF''') is a Boolean expression in which each term contains all the variables, either in normal or complemented form as sum of all the minterms. For example, consider the following Boolean functions. |
− | :<math>f(a,b,c, d) = ( | + | :<math>f(a,b,c, d) = a(b+c+d)</math> |
− | + | We can express that function in SoP form as follows. | |
− | + | :<math>f(a,b,c, d) = (abcd) + (abc \bar d) + (ab \bar c d) + (ab \bar c \bar d) + (a \bar bcd) + (a \bar b c \bar d) + (a \bar b \bar c d)</math> | |
{| class="wikitable" style="float: right; margin-left: 20px;" | {| class="wikitable" style="float: right; margin-left: 20px;" | ||
− | ! colspan="7" | Sum of Product | + | ! colspan="7" | Sum of Product Example |
|- | |- | ||
! colspan="7" | Function | ! colspan="7" | Function | ||
Line 253: | Line 253: | ||
This function can now be more concisely written a in the following way: | This function can now be more concisely written a in the following way: | ||
− | :<math>f(a,b,c) = \sum(\mbox{list of 1-minterm indices})</math> | + | :<math>f(a,b,c) = \sum m(\mbox{list of 1-minterm indices})</math> |
I.e. | I.e. | ||
− | :<math>f(a,b,c) = m_3 + m_4 + m_5 + m_6 + m_7 = \sum(3,4,5,6,7)</math> | + | :<math>f(a,b,c) = m_3 + m_4 + m_5 + m_6 + m_7 = \sum m(3,4,5,6,7)</math> |
Likewise, the inverse of the function can be expressed as the '''sum of 0-minterms''': | Likewise, the inverse of the function can be expressed as the '''sum of 0-minterms''': | ||
Line 265: | Line 265: | ||
f^\prime(a,b,c) &= \bar a \bar b \bar c + \bar a \bar b c + \bar a b \bar c \\ | f^\prime(a,b,c) &= \bar a \bar b \bar c + \bar a \bar b c + \bar a b \bar c \\ | ||
&= m_0 + m_1 + m_2 \\ | &= m_0 + m_1 + m_2 \\ | ||
− | &= \sum(0,1,2) \\ | + | &= \sum m(0,1,2) \\ |
\end{align} | \end{align} | ||
</math> | </math> | ||
Line 271: | Line 271: | ||
===Product of Sum (PoS) === | ===Product of Sum (PoS) === | ||
− | :A '''[[maxterm]]''' is the Boolean sum (ORing) of <math>n</math> variables and contains all <math>n</math> variables of the function just once, in either normal or complemented form. For example, for the function <math>f(a, b)</math> with two variables, we can have the following maxterms: <math>a \lor b</math>, <math>a \lor \bar b</math>, <math>\bar a \lor b</math>, and <math>\bar a \lor \bar b</math>. | + | {| class="wikitable" style="float: right; margin-left: 20px;" |
+ | ! colspan="7" | Sum of Product Example | ||
+ | |- | ||
+ | ! colspan="7" | Function | ||
+ | |- | ||
+ | | colspan="7" | <math>f(a,b,c) = a \lor (b \land c)</math> | ||
+ | |- | ||
+ | ! a !! b !! c !! minterms !! notation !! <math>f</math> !! <math>f^\prime</math> | ||
+ | |- | ||
+ | | 0 || 0 || 0 || <math>a \lor b \lor c</math> || <math>M_0</math> || 0 || 1 | ||
+ | |- | ||
+ | | 0 || 0 || 1 || <math>a \lor b \lor \bar c</math> || <math>M_1</math> || 0 || 1 | ||
+ | |- | ||
+ | | 0 || 1 || 0 || <math>a \lor \bar b \lor c</math> || <math>M_2</math> || 0 || 1 | ||
+ | |- | ||
+ | | 0 || 1 || 1 || <math>a \lor \bar b \lor \bar c</math> || <math>M_3</math> || 1 || 0 | ||
+ | |- | ||
+ | | 1 || 0 || 0 || <math>\bar a \lor b \lor c</math> || <math>M_4</math> || 1 || 0 | ||
+ | |- | ||
+ | | 1 || 0 || 1 || <math>\bar a \lor b \lor \bar c</math> || <math>M_5</math> || 1 || 0 | ||
+ | |- | ||
+ | | 1 || 1 || 0 || <math>\bar a \lor \bar b \lor c</math> || <math>M_6</math> || 1 || 0 | ||
+ | |- | ||
+ | | 1 || 1 || 1 || <math>\bar a \lor \bar b \lor \bar c</math> || <math>M_7</math> || 1 || 0 | ||
+ | |} | ||
+ | A '''[[maxterm]]''' is the Boolean sum (ORing) of <math>n</math> variables and contains all <math>n</math> variables of the function just once, in either normal or complemented form. For example, for the function <math>f(a, b)</math> with two variables, we can have the following maxterms: <math>a \lor b</math>, <math>a \lor \bar b</math>, <math>\bar a \lor b</math>, and <math>\bar a \lor \bar b</math>. | ||
+ | |||
+ | A '''[[product term]]''' is the Boolean product (ANDing) of variables as a subset of the possible variables or their complements. For example, for function <math>f(a,b,c)</math>, the following are possible product terms: <math>\bar c</math>, <math>a \land \bar b</math>, and <math>c \land a</math>. | ||
+ | |||
+ | The '''[[sum of maxterms]]''' also called '''Product of Sum''' ('''PoS'''), '''canonical sum of products''', '''maxterm expansion''', '''canonical conjunctive normal form''' ('''CCNF''') is a Boolean expression in which each term contains all the variables, either in normal or complemented form as the sum of all the maxterms. | ||
+ | |||
+ | :<math>f(a,b,c, d) = a(b+c+d)</math> | ||
+ | We can express that function in PoS form as follows. | ||
+ | :<math> | ||
+ | \begin{align} | ||
+ | f(a,b,c, d) = (a+b+c+d)\cdot(a+b+c+\bar d)\cdot(a+b+\bar c+d)\cdot(a+b+\bar c+\bar d)\cdot \\ | ||
+ | (a+\bar b+c+d)\cdot(a+\bar b+c+\bar d)\cdot(a+\bar b+\bar c+d)\cdot(a+\bar b+\bar c+\bar d)\cdot \\ | ||
+ | (\bar a+b+c+d) | ||
+ | \end{align} | ||
+ | </math> | ||
+ | |||
+ | The maxterms for which the function produces a <math>1</math> are called '''1-maxterms'''. Likewise, maxterms for which the function produces a <math>0</math> are called '''0-maxterms'''. Any Boolean function can be expressed as product of its 0-maxterms. For example, consider the following function: | ||
+ | |||
+ | :<math>f(a,b,c) = a+(bc)</math> | ||
− | + | The truth table for it is on the right. We can express this function as '''product of 0-maxterms''': | |
+ | |||
+ | :<math>f(a,b,c) = (a+b+c)\cdot(a+b+\bar c)\cdot(a+\bar b+c)</math> | ||
+ | |||
+ | We can replace the individual minterms with their respective index which is also shown in the table. | ||
+ | |||
+ | :<math>f(a,b,c) = M_0 + M_1 + M_2</math> | ||
+ | |||
+ | This function can now be more concisely written a in the following way: | ||
+ | |||
+ | :<math>f(a,b,c) = \prod M(\mbox{list of 1-minterm indices})</math> | ||
+ | |||
+ | I.e. | ||
+ | |||
+ | :<math>f(a,b,c) = M_0 + M_1 + M_2 = \prod M(0,1,2)</math> | ||
+ | |||
+ | Likewise, the inverse of the function can be expressed as the '''product of 0-maxterms''': | ||
+ | |||
+ | ::<math> | ||
+ | \begin{align} | ||
+ | f^\prime(a,b,c) &= (a+\bar b+\bar c)\cdot(\bar a+b+c)\cdot(\bar a +b+\bar c)\cdot(\bar a+\bar b+c)\cdot(\bar a+\bar b+\bar c) \\ | ||
+ | &= M_3+M_4+M_5+M_6+M_7 \\ | ||
+ | &= \prod M(3,4,5,6,7) | ||
+ | \end{align} | ||
+ | </math> | ||
− | |||
== Minimization == | == Minimization == |
Revision as of 10:17, 2 December 2015
Boolean algebra (or less commonly symbolic logic) is a branch algebra that deals with only two logic values - 0 (corresponding to false) and 1 (corresponding to true).
Today, Boolean algebra is the primary mathematical tool used in designing modern digital systems. Switching functions are described using Boolean algebra since they deal with two discrete states - ON and OFF (or 1 and 0). Those functions are in turn implemented via transistors which act as switches, a natural implementation for representing Boolean algebra operations. Once primitive Boolean operation circuits such as NOT, AND, and OR gates are implemented, any conceivable system of logic can be implemented using them like Lego pieces.
Contents
Variables
- Main articles: Boolean Variables and boolean data type
Boolean algebra uses variables just like normal algebra. Those variables can only have one of two values - either a 0 or a 1. Variable are commonly represented as a single alphabet letter. While there is no one acceptable convention, a it's not uncommon to see letters such as used for inputs and for output. That's also the convention used on WikiChip. Sometimes it's desired to represent the negated (opposite) value of a variable, that's often done with a bar or a tick (prime) above or next to the letter, for example or although other notations exist. is read "not A", regardless of notation.
Operations & Truth tables
- Main articles: Boolean Operations and truth table
Boolean algebra has a set of operations that can be performed on Boolean values, those operations are conveniently enough called binary operations. The three common Boolean operators are AND, OR, and NOT. Understanding those operators can better be done by examining their behavior via tool called a truth table. truth tables is a table that lists all possible input values and their respective output values. Truth tables can be said to be the unique signature of a specific Boolean function. Truth tables are an excellent way of seeing the relationships between input values and given Boolean expressions. While there may be many ways to realize or construct a Boolean function to represent a specific relation, they all share the very same truth table.
AND operator
- Main article: conjunction
Inputs | Outputs | |
---|---|---|
A | B | Q |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
The Boolean operator AND is usually represented by either , , or no symbol at all: for example "", "", and "" are all equivalent and are read "A AND B". The behavior of this operator is shown in the truth table on the right. The result of "A AND B" is true if both A and B are true; otherwise the result is false. This expression is also called a Boolean product.
For example, suppose we have the function
Or
OR operator
- Main article: disjunction
Inputs | Outputs | |
---|---|---|
A | B | Q |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
The Boolean operator OR is usually represented by or operators. For example "" and "". The expression is read "A or B". The result of "A OR B" is true if either A is true or B is true; otherwise the result is false. This expression is also called a Boolean sum.
For example, suppose we have the function
Or
NOT operator
- Main article: negation
Inputs | Outputs |
---|---|
A | Q |
0 | 1 |
1 | 0 |
The Boolean operator NOT is represented by many notations, the three most popular ones are "", "", and "". Note that unlike the AND and OR operators, the NOT operator is a unary operator and is thus drawn above or on the side of the variable. The expression is read "not A". The truth table for the NOT operator is shown on the right. The result of the NOT operator is true if A is false, otherwise the result is true. This expression is called a Boolean complement.
For example, suppose we have the function
Or
Order of operations
- Main article: Order of Operations
So far we've made it simple by explicitly using parenthesis in all of our examples to indicate a certain part of the expression is evaluated before another part. The order of operations of a Boolean expression is very important to obtain correct result. For example consider the function for input . Does it mean ? or does it mean ? Same expression, different results. It turns out the the correct order is (and ). In Boolean expressions, the NOT operator has the highest precedence, followed by AND, then OR.
For example,
and
Axioms
- Main article: Boolean Algebra Axioms
Boolean algebra is govern by a set of special axioms that say what kind of Boolean expression manipulations can be done. They are called axioms because they not things that have to be proven but rather part of the definition of Boolean algebra. Many of those laws are common to both Boolean algebra and ordinary algebra. Using those laws, equations can be converted into different forms. One particular transformation known as minimization plays a crucial role in the design of logic circuits. One last thing to note before we get to the actual laws is that Boolean algebra identities come in pairs. This is known as duality principle and it is covered in much more detail later on.
Axiom | AND form | OR form |
---|---|---|
Identity Axiom | ||
Inverse Axiom | ||
Commutative Axiom | ||
Associative Axiom | ||
Distributive Axiom |
In addition to those five axioms, there are a number of other handful laws. Those laws can be proven using the axioms we've introduced above.
Law | AND form | OR form |
---|---|---|
Complement Law | ||
Dominance Law | ||
Idempotent Law | ||
Absorption Law | ||
DeMorgan's Law | ||
Involution Law |
It's interesting to note that it's easy to see the divergence between Boolean algebra and ordinary algebra from those laws. For example consider . From Dominance Law we know the answer is . This is clearly not true for ordinary algebra where . Likewise from the Absorption Law we know that while in ordinary algebra this is not true either.
Axioms explanation
The Identity Axiom simply states that any expression ANDed with 1 or ORed with 0 results in the original expression. Identity elements or simply identities are elements that when used with their appropriate operator leave the original element unchanged. In the case of Boolean algebra, the identity element for AND is 1 and 0 for OR.
Example:
The Inverse Axiom simply states that when you AND or OR an expression with its complement results in the identity element for that operation.
Example:
The Commutative Axiom states that individual elements in an expressions can be reordered without affecting the meaning of the expression. For example .
The Associative Axiom states that individual elements in an expression can be regrouped without affecting the meaning of the expression. For example . Simply put, it makes no difference in what order you group the expressions when ANDing or ORing several expressions together.
The Distributive Axiom states that ANDing distributes over over ORing. That is, ORing several expressions and ANDing the result is equaivilent to ANDing the result with a each of the individual expressions then ORing the product. Often times the Distributive Axiom is applied in reverse in a similar way to factoring in ordinary algebra. For example, given , the expression can be factored out to
Canonical Forms
a | b | c | minterms | notation |
---|---|---|---|---|
0 | 0 | 0 | ||
0 | 0 | 1 | ||
0 | 1 | 0 | ||
0 | 1 | 1 | ||
1 | 0 | 0 | ||
1 | 0 | 1 | ||
1 | 1 | 0 | ||
1 | 1 | 1 |
Earlier we've covered truth tables which are like signatures; there are many ways to represent the same logic, however it will always result in the very same truth table. When two Boolean functions result in the same exact truth table, the two functions are said to be logically equivalent. The different representations of a truth table are known as forms. In an attempt to eliminate confusion, a few forms were were chosen to be canonical or standard forms. Before we describe those forms we need to go over a few terms.
Sum of Products (SoP)
A minterm is the Boolean product (ANDing) of variables and contains all variables of the function just once, in either normal or complemented form. For example, for the function with two variables, we can have the following minterms: , , , and . If the value assigned to a variable is 0, the variable is complemented, conversely a variable remains uncomplemented if the value assigned to it is 1. Consider the table to the right, since in the first row, the variables , , and are all , the minterms for them is
A sum term is the Boolean sum (ORing) of variables as a subset of the possible variables or their complements. For example, for the function , the following are a few possible sum terms: , , and .
The sum of minterms also called Sum of Product (SoP), canonical sum of products, minterm expansion, and canonical disjunctive normal form (CDNF) is a Boolean expression in which each term contains all the variables, either in normal or complemented form as sum of all the minterms. For example, consider the following Boolean functions.
We can express that function in SoP form as follows.
Sum of Product Example | ||||||
---|---|---|---|---|---|---|
Function | ||||||
a | b | c | minterms | notation | ||
0 | 0 | 0 | 0 | 1 | ||
0 | 0 | 1 | 0 | 1 | ||
0 | 1 | 0 | 0 | 1 | ||
0 | 1 | 1 | 1 | 0 | ||
1 | 0 | 0 | 1 | 0 | ||
1 | 0 | 1 | 1 | 0 | ||
1 | 1 | 0 | 1 | 0 | ||
1 | 1 | 1 | 1 | 0 |
The minterms for which the function produces a are called 1-minterms. Likewise, minterms for which the function produces a are called 0-minterms. Any Boolean function can be expressed as sum of its 1-minterms. For example, consider the following function:
The truth table for it is on the right. We can express this function as sum of 1-minterms:
We can replace the individual minterms with their respective index which is also shown in the table.
This function can now be more concisely written a in the following way:
I.e.
Likewise, the inverse of the function can be expressed as the sum of 0-minterms:
Product of Sum (PoS)
Sum of Product Example | ||||||
---|---|---|---|---|---|---|
Function | ||||||
a | b | c | minterms | notation | ||
0 | 0 | 0 | 0 | 1 | ||
0 | 0 | 1 | 0 | 1 | ||
0 | 1 | 0 | 0 | 1 | ||
0 | 1 | 1 | 1 | 0 | ||
1 | 0 | 0 | 1 | 0 | ||
1 | 0 | 1 | 1 | 0 | ||
1 | 1 | 0 | 1 | 0 | ||
1 | 1 | 1 | 1 | 0 |
A maxterm is the Boolean sum (ORing) of variables and contains all variables of the function just once, in either normal or complemented form. For example, for the function with two variables, we can have the following maxterms: , , , and .
A product term is the Boolean product (ANDing) of variables as a subset of the possible variables or their complements. For example, for function , the following are possible product terms: , , and .
The sum of maxterms also called Product of Sum (PoS), canonical sum of products, maxterm expansion, canonical conjunctive normal form (CCNF) is a Boolean expression in which each term contains all the variables, either in normal or complemented form as the sum of all the maxterms.
We can express that function in PoS form as follows.
The maxterms for which the function produces a are called 1-maxterms. Likewise, maxterms for which the function produces a are called 0-maxterms. Any Boolean function can be expressed as product of its 0-maxterms. For example, consider the following function:
The truth table for it is on the right. We can express this function as product of 0-maxterms:
We can replace the individual minterms with their respective index which is also shown in the table.
This function can now be more concisely written a in the following way:
I.e.
Likewise, the inverse of the function can be expressed as the product of 0-maxterms:
Minimization
This section is empty; you can help add the missing info by editing this page. |
Complementary Function
This section is empty; you can help add the missing info by editing this page. |