Hi again,
You've introduced another change, where now you are saying
that you need to use "OR" gates when before you were saying
that you need to use "NOR" gates. There's a big difference
in the implementation of the final circuit, so you need to
clarify this next.
In the mean time, let me just state that the following three
equations are the same, except the last one allows for the
simplest implementation when we are forced to use only
NOR gates for the solution...
Code:
X1 = A*B+C
X2 = (A+C)*(B+C)
_____________
_____ _____
X3 = (A+C) + (B+C)
Also, your colleagues solution is inverted from these solutions, so if
we call yours X4 then we have to call theirs not(X4), and theirs is
not equal to X1 above which was the main point i think.
As to your other idea about comparing the two waveforms, well
im afraid that that only works when you use binary weighted
frequencies as the input. For example, A=40kHz, B=20kHz, and
C=10kHz, and they should probably be sync'ed at 0 degrees.
Using arbitrary waveforms to test a logic network does not always
work (although you may get lucky) because there is the chance
that not every logic combination occurs on the inputs. Using a
binary weighted set of frequencies that are sync'ed at 0 degrees
makes sure this requirement is met.
If, on the other hand, your application has repeated pattern
waveforms as input, then other simplifications may also be
possible, and you should be able to use those patterns as
test inputs, as long as it is certain that they will never change.
One last note...
If you look at the original solution and your solution, you will find
that the number of inverts over each letter cancel to no inversions
(ie A=A'', B=B'', etc.).
If you look at your colleagues solution they have one more
inversion (ie A''' which equals A' which does not equal A).