Deriving sum-of-products (SOP) and product-of-sums (POS) forms

Every group you make on a Karnaugh map is a product term. When the product terms are unified, you've formed a sum-of-products expression. What makes the various SOP expressions different is if they're formed by grouping ones on a map – that is, if they're prime implicants – or if they're formed by grouping zeros on a map – that is, if they're prime implicates.

If you group ones on a map, you've obtained an SOP expression for the uncomplemented form of a function. Let's call the function f. With f determined in SOP form, the story is basically over. We can implement the SOP form of f with a set of first-level AND gates unified by a second-level OR gate. Using bubble propagation, all of the AND gates and OR gates can be turned into NAND gates.

If you group zeros on a map, you've implemented an SOP expression for the complemented form of f. We'll call this form f'. We seldom care about f'. We could implement f' in SOP form using AND gates on the first level and a unifying OR gate on the second level, but then we'd have to invert the output to obtain f from f'. This adds a level of logic to the circuit that makes it that much slower than the maximum-speed circuit – the one that only requires two levels of logic, plus input inverters.

Our alternative is to transform the SOP expression for f' into another form. We do this by complementing both sides of the function. Of course, f' becomes f when it is complemented. This occurs because of involution. On the other side, the complemented SOP expression becomes a POS expression through two sets of application of DeMorgan's Theorem. Here's an example:

The SOP expression for f' is now a POS expression for f. At this point, we can use a set of first-level OR gates to implement the sum terms, and a second-level unifying AND gate. Using bubble propagation, we can change all of the OR gates and ANDgates into NOR gates.

Compare the two forms:

Notice that in forming the sum terms, all of the complemented literals in the products became uncomplemented literals in the sums, and vice versa. You can therefore write out aPOS form function straight from a K-map in which you've grouped the zeros. You just have to remember to do two things:

  1. Form sum terms instead of product terms.
  2. Call a literal complemented if its label value is 1 for that group of zeros (prime implicate), or call the literal uncomplemented if its label value is 0 for that group of zeros (prime implicate).

Step 2 follows the opposite convention for complemented and uncomplemented literals from the one that is used in standard SOP forms. Remember this if you form a POS expression directly from a Karnaugh map.
Here's the map from which the above function was derived:

CD
00 / 01 / 11 / 10
AB / 00 / 1
0 / 1
1 / 0
3 / 1
2
01 / 1
4 / 1
5 / 0
7 / 0
6
11 / 1
12 / 1
13 / 1
15 / 0
14
10 / 0
8 / 0
9 / 0
11 / 0
10

In the bottom row, we have a group of zeros for which A is 1 and B is 0. In the final POS expression, this will correspond to the sum term (A' + B).

The vertical term in the third column is such that A is 0, C is 1, and D is 1. In the final POS expression, this will correspond to the sum term (A + C' + D').

Finally, the vertical term in the fourth column is such that B is 1, C is 1, and D is 0. In the final POS expression, this will correspond to the sum term (B' + C' + D).

Unifying these three sums with an AND operator gives the POS expression for f derived above using DeMorgan’s Theorem on the SOP expression for f '.

So, when forming a POS expression, you have two alternatives:

  1. Group the zeros on a map, and form the SOP expression for f '. Use the normal conventionfor the correspondence between zeroes and ones in the labels and complemented and uncomplemented literals. Then, apply DeMorgan's Theorem and involution to obtain the POS expression for f.
  2. Group the zeros on a map, and form the POS expression for f directly. Reverse the standard convention for the correspondence between zeroes and ones in the labels and complemented and uncomplemented literals.

Make sure that you do one or the other. Don't do some of both, and don't do neither. Also, you should never attempt to group the oneswhen forming a POS expression. If you follow either of the procedures listed above when grouping the ones, you will have formed a POS expression for f', and not for f.