# Don't care condition in Karnaugh map

I am a bit confused with "don't care" condition. I understand that, in a system, they are the positions that don't affect the output no matter whether they are high or low.

How about this:

F = A'·D' + B'·C' + A'·B·C'·D

If I am given the above expression how can I choose which positions in the Karnaugh map are the "don't care"?

## 2 Answers

Suppose you have four inputs ($$\Q_A\$$, $$\Q_B\$$, $$\Q_C\$$, and $$\Q_D\$$) and four outputs ($$\T_A\$$, $$\T_B\$$, $$\T_C\$$, and $$\T_D\$$) that depend upon these inputs in the following way:

$$\begin{array}{rl} \begin{smallmatrix}\begin{array}{r|cccc} T_D&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&1&x&x\\ \overline{Q_D}\:Q_C&x&x&1&x\\ Q_D\: Q_C&0&0&0&0\\ Q_D\:\overline{Q_C}&0&x&0&x \end{array}\end{smallmatrix} & \begin{smallmatrix}\begin{array}{r|cccc} T_C&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&0&1&x&x\\ \overline{Q_D}\:Q_C&x&x&x&x\\ Q_D\: Q_C&0&1&1&0\\ Q_D\:\overline{Q_C}&0&1&1&0 \end{array}\end{smallmatrix}\\\\ \begin{smallmatrix}\begin{array}{r|cccc} T_B&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&0&x&x\\ \overline{Q_D}\:Q_C&x&x&x&x\\ Q_D\: Q_C&1&x&0&1\\ Q_D\:\overline{Q_C}&1&0&0&1 \end{array}\end{smallmatrix} & \begin{smallmatrix}\begin{array}{r|cccc} T_A&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&1&x&x\\ \overline{Q_D}\:Q_C&x&x&x&x\\ Q_D\: Q_C&1&1&1&1\\ Q_D\:\overline{Q_C}&1&1&1&1 \end{array}\end{smallmatrix} \end{array}$$

The $$\x\$$ in the above tables just means "don't care" or, put another way, "doesn't matter whether it is a 1 or a 0 in this case."

This often happens when there are circumstances which don't occur (or should not occur), anyway. And since it won't happen, you don't care about the output value in that case.

For example, suppose you wanted to make a "decade counter" that went from 0 to 9 and then back to 0, again. This counter requires four output bits because 9 is "1001" and that needs four bits. But you will never output "1100" (12) because the counter will never count that high. So the internal logic that helps the counter perform its function may have cases where the situation won't occur and, therefore, you don't care since it won't happen.

Anyway, take the above set of four tables and lets assign "convenient values" where we think it will help simplify the final logic:

$$\begin{array}{rl} \begin{smallmatrix}\begin{array}{r|cccc} T_D&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&1&1&1\\ \overline{Q_D}\:Q_C&1&1&1&1\\ Q_D\: Q_C&0&0&0&0\\ Q_D\:\overline{Q_C}&0&0&0&0 \end{array}\end{smallmatrix} & \begin{smallmatrix}\begin{array}{r|cccc} T_C&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&0&1&1&0\\ \overline{Q_D}\:Q_C&0&1&1&0\\ Q_D\: Q_C&0&1&1&0\\ Q_D\:\overline{Q_C}&0&1&1&0 \end{array}\end{smallmatrix}\\\\ \begin{smallmatrix}\begin{array}{r|cccc} T_B&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&0&0&1\\ \overline{Q_D}\:Q_C&1&0&0&1\\ Q_D\: Q_C&1&0&0&1\\ Q_D\:\overline{Q_C}&1&0&0&1 \end{array}\end{smallmatrix} & \begin{smallmatrix}\begin{array}{r|cccc} T_A&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&1&1&1\\ \overline{Q_D}\:Q_C&1&1&1&1\\ Q_D\: Q_C&1&1&1&1\\ Q_D\:\overline{Q_C}&1&1&1&1 \end{array}\end{smallmatrix} \end{array}$$

This greatly simplifies things. Now the logic is:

\begin{align*} T_A &= 1\\ T_B &= \overline{Q_A}\\ T_C &= Q_A\\ T_D &=\overline{Q_D} \end{align*}

We could have made the above equations far, far more complicated had we picked, say, random choices for $$\x\$$. But we instead used intelligent choices and, in doing so, reduced the required logic needed to achieve the outputs.

These "don't care" values don't always make things simpler. Sometimes, they aren't located in places that allows you to conveniently simplify the logic. But they often do help out. You just need to look at the table to see if you can find a simplifying pattern when you have the freedom to choose values for them in the tables you are faced with.

Your understanding is a little off. Don't care values are ones where you, as the designer, don't care about the result for that input, for example because the circuit is not expected to handle that specific input.

You can choose the output for those values arbitrarily to make the logic function simpler. Once you have a function, you don't really have don't cares anymore.

For example, your function may take an input of A=1, B=0, C=0, D=1, and the result is 0. At this point, we don't know as to whether we wanted a result of 0 for input (1,0,0,1), or if we didn't care about the result and made it 0 to make the logic function simpler.

• So there is no way to know if I am given just an expression which positions are dont care. It depends on the actual system, right?Based on my expression can you know which position can be a dont care or not with no more extra info given?
– pj33
Commented May 7, 2020 at 8:31
• @pj33 that's correct. With the info provided, I don't know which positions were don't cares and which were not. I could make the guess that 0,1,0,1 (corresponding to the third term) was a specified value since if it were a don't care it would be simpler as zero, but that's nothing more than a guess based on how I assumed someone would do the design. Commented May 7, 2020 at 13:40
• Thank you, now I think I have figured everything out!
– pj33
Commented May 9, 2020 at 21:27