# Finding a logic expression from a circuit

#### shemer77

Joined Jun 29, 2012
3
Here is the circuit:
http://gyazo.com/2941ef9ba952de70447cc431ccb69cc0

Once I figure out the circuit expression I can find the karnuagh map easily, however figuring out the circuit expression is where I am finding difficulty.

The answer that I am reaching is not the same as the one in the back of the book.
I get (((A+B)' +(A'+C)')'+(A+D)')', which of course has to be simplified but it does not come out to the one in the back of the book which is (A'B'+AC')(A+D)

Am I reading the circuit wrong or did I get that right and im just messing up on the simplification?

#### WBahn

Joined Mar 31, 2012
28,497
You're just messing up on the simplification.

#### MrChips

Joined Oct 2, 2009
28,527
Slide the bubbles along the wires and use De Morgan's equivalents.

#### WBahn

Joined Mar 31, 2012
28,497
One thing to keep in mind is that "simplified" is a very ambiguous term. For instance, you can take the book's answer and "simplify" it further to

A'B'D + AC'

But is it "simpler"? Depends on the metric used to evaluate "simple".

The point is that whatever you are coming up with may or may not still be equivalent to the book's answer. The surest way to know is to write the truth tables for both and see if they agree. If they do, then you should be able to use Boolean properties to transform one into the other. If it isn't apparent how to make yours look like theirs, try making theirs look like yours and, if that works, then walk it backwards.

#### shemer77

Joined Jun 29, 2012
3
ok wow thanks guys I got it now!!

#### shemer77

Joined Jun 29, 2012
3
just one more quick question, so for that same problem I got a logic expression with no hazards which is
f=(A'+C')(A+B')(A+D)(C'+D)(B'+C')
but the book says that this can be converted to
f=(A'B'D+C')(A+B'D). How exactly did the book convert it? Sorry if i'm asking simple questions, im trying to teach this to myself.

#### WBahn

Joined Mar 31, 2012
28,497
just one more quick question, so for that same problem I got a logic expression with no hazards which is
f=(A'+C')(A+B')(A+D)(C'+D)(B'+C')
I agree with this.

but the book says that this can be converted to
f=(A'B'D+C')(A+B'D). How exactly did the book convert it? Sorry if i'm asking simple questions, im trying to teach this to myself.

f = A'B'D + AC'

This is a properly formed two-layer SOP circuit that inherently has no static-0 hazards or any dynamic hazards, but it does have a static-1 hazard that can be removed by adding any and all consensus terms:

f = A'B'D + AC' + B'C'D

(The consensus term is most easily picked off using a K-map.)

ASIDE: Few texts go into how to identify consensus terms except by looking at a K-map.

Recasting this into their form is a bit non-intuitive

f = A'B'D + AC' + B'C'D
f = A'B'D(1+A) + AC' + B'C'D
f = A'B'D + AA'B'D + AC' + B'C'D
f = A'B'D + A(A'B'D + C') + B'C'D
f = (A'B'D + C')A + A'B'D + B'C'D
f = (A'B'D + C')A + A'B'DB'D' + B'C'D
f = (A'B'D + C')A + (A'B'D'+C')B'D
f = (A'B'D + C')(A + B'D)

However, I don't know if your text pointed this out, but as soon as you have more than two layers or something other than a standard SOP or POS form, all bets are off. So this implementation, which is three layers and a POSOP form, is not automatically guaranteed to be hazard free. Just because you can manipulate a hazard-free implementation into it only means that the two are statically equivalent; after all, we KNOW that we can take an expression that needs consensus terms to eliminate hazards and manipulated it to get rid of the concensus terms and thus put back in the hazards that we went out of our way to get rid of.

Having said that, this one is hazard-free because the basic terms, (A'B'D + C') and (A + B'D), are each disjoint, meaning that no variable used in one of the products being OR'ed appears in the other product. Thus there is no single variable change that could result in one term turning on while the other is turning off and thus bounce the term. This should guarantee no static-1 hazards since, beyond this level it is a 2-layer SOP form. But it is not obvious to me that there are no static-0 hazards since one factor could be LO and the other HI and changing one of the shared variables (A, B, or D) could reverse this and cause a bounce. However, if you mark the first factor on the K-map using one symbol and the other factor using another, you see that there are no adjacent states that should both be a LO output in which only one factor is LO in one state and only the other factor is LO in the other.