Sweps wrote

Thanks Intelli. I was under the impression that the karnaugh map was used to get it to the smallest expression possible.

So just to clarify, after I have used karnaugh maps to shrink it, I need to use boolean algebra to get it even smaller?

Karnaugh maps are a easier than Boolean logic. The key to Karnaugh maps is to find the smallest number of blocks of "connected" 1s that cover all the 1s. Connected means 1x2 rectangle, 2x2 square, 1x4 rectangle, etc.

Given the map for Mux:

| a |
-----------
| 0 0 1 1 |
sel | 0 1 1 0 |
-----------
| b |

All of the 1s can be covered with the rectangle on the upper row which is

*a* ~

*sel* and the rectangle on the lower row which is

*b* *sel*.

Given this map:

| a |
-----------
| 0 0 1 1 |
| 0 1 1 0 | d
c | 0 1 1 0 | d
c | 0 0 1 0 |
-----------
| b |

You need 3 terms, the square in the middle (

*b* *d*), the vertical rectangle in the third column (

*a* *b*) and the small rectangle in the top row (

*a* ~

*c* ~

*d*).

Note that it can be tricky to see the connected shapes when they wrap around the edges. Think about what the term (

*b* ~

*d*) would look like in the above map, or even trickier, (~

*a* ~

*d*).

--Mark