There is a trick for converting sum-of-products to nand gates and a trick for converting product-of-sums to nor gates. (In diagram below).

But you want nor gates and you are starting in sum-of-products form. So how do you convert sum-of-products to product-of-sums? (Also this one.)

Well, in your case the product-of-sums form is trivially derived just by factoring out the \$\overline{B}\$ to get \$\overline{B}(\overline{A}+C)\$. More generally though, the plug-n-chug way you convert sum-of-products to product-of-sums is

- double negate your formula. \$\overline{\overline{\overline{A} \, \overline{B} + \overline{B} \, C}} \$
- Use Demorgan to push the first not through the sum. \$\overline{(\overline{\overline{A}\,\overline{B}})\,(\overline{\overline{B}\,C})} \$
- And one more Demorgan to turn the products into sums. \$ \overline{(A+B)(B+\overline{C})} \$
- Now multiply the product-of-sums to get a negated sum-of-products. \$ \overline{AB+A\overline{C}+B+B\overline{C}} = \overline{A\overline{C} + B}\$
- Almost there! A negated sum of products is a product of sums by two more Demorgans: \$ (\overline{A\,\overline{C}})(\overline{B}) = (\overline{A}+C)(\overline{B}).\$

Now you've got a product of sums.

Finally, here's how you convert product-of-sums to nor gates. It's sometimes called "pushing bubbles".

^{simulate this circuit – Schematic created using CircuitLab}

So I get what you get (and what @jippie got). (\$\overline{A}\$ NOR C) NOR B. \$\overline{\overline{\overline{A+B}+C}+B}\$ is logicially equivalent, of course, but requires 3 2-input nor gates instead of 2 2-input nor gates and a "1-input nor gate" (not gate).

One can not implement every logical function using only XOR gates.

Since XOR is a logical operator which obeys associativity, the function implemented using only XOR gates can always be written as
$$f = a_1\oplus a_2 \oplus a_3 \oplus \cdots \oplus a_n $$
where \$a_1, a_2 \ldots\$ are the inputs.

So the only possible functions that can be implemented using XOR gates are:

## 1. Odd number of 1's

$$\tag1 f= \begin{array}{|cl} 1 & \mathrm{if }\ N = odd \\0 & else
\end{array}$$

Where N is the number of 1's in the input. \$f\$ can be implemented as $$f = a_1\oplus a_2 \oplus a_3 \oplus \cdots \oplus a_n $$

## 2. Even number of 1's

$$\tag2 f= \begin{array}{|cl} 1 & \mathrm{if }\ N = even \\0 & else
\end{array}$$

can be implemented as $$f = a_1\oplus a_2 \oplus a_3 \oplus \cdots \oplus a_n \oplus 1 $$

## 3. Inverter

$$\tag3 f = \overline{a}$$
can be implemented as $$f = a\oplus 1 $$

In your case, `SUM`

can be implemented using XOR gates only (as given in (1)) but not `COUT`

.

## Best Answer

I think the easiest way is to convert to a k-map, and then get the POS. In your example, you've got:

In this case, excluding the left column gives (x+y), and excluding the two bottom middle boxes gives (z' + y'), giving an answer of (x + y)(z' + y')