2
\$\begingroup\$

CMOS Adder

I can understand the left adder circuit but the right one has both the nmos and pmos network exactly same. I have learnt that the pmos and nmos are dual networks of each other. How does one arrive at the right hand circuit schematic in that case?

\$\endgroup\$
2
  • \$\begingroup\$ just to prove to yourself that they both work you can always plug in a few test values for a,b,ci in both cases ... see if they match. The reduction is arrived at by using separate equations for the pullup (PMOS) and pulldown (NMOS) networks. You are correct they are no longer duals of one another. \$\endgroup\$
    – jbord39
    Commented Jan 10, 2017 at 15:41
  • \$\begingroup\$ In that case does this no longer represent a conventional CMOS network? something they arrived at by hit and trial or a special case for this logic or are there any reduction procedures while designing CMOS? \$\endgroup\$
    – Suman Saha
    Commented Jan 10, 2017 at 15:57

1 Answer 1

2
\$\begingroup\$

There are two issues here. First of all, many truth tables can be achieved via multiple combinations of logic functions. Consider the function not ((A and B) or (B and C) or (A and C)). That function will be true and false in the same cases as not ((A or B) and (B or C) and (A or C)), but the former includes a three-term and and the latter includes a three-term or. Consequently, one form may be more efficiently used when evaluating the high-side network and the other may be more efficiently used when evaluating the low-side network. As an interesting side note, the two functions are duals of each other, but their equivalence makes each function also the dual of itself.

The other issue at work here is that many circuits can be simplified if one moves "inverting bubbles" from outputs to inputs. Circuitry for any non-trivial function whose input is true when all of the inputs is true, or false when all of all of the inputs are false will require at least two logic stages unless it is allowed to feed current from the input and output [a "function" which always outputs high or always outputs low would, of course, not need any logic stages]. Consequently, it may be often easier to compute the inverse of a desired function than the function itself. If whatever is going to use the output of the function could be designed just as well to use accept either the inverted or non-inverted form, making the downstream stage accept the cheaper form may save cost.

It may be more helpful to look not at a single bit adder, but instead at a two-bit adder. If the carry generator for a single bit needs to accept an active-high carry in and needs to generate an active-high carry out, there will need to be two logic stages between the carry in and carry out. If the function can accepts an active-high carry in and produce an active-low carry out, however, it can be realized in one stage. Having the function produce an active-low carry out will require modifying the next stage, however. The trick is to realize that (1) if all the data inputs and outputs of the next stage are inverted, then it will naturally accept an active-low carry in, and can cheaply produce an active-high carry out; (2) in many cases, ALU inputs and outputs will come from or be sent to latching circuits; (3) in many cases, latching circuits can provide both inverted and non-inverted outputs at essentially no extra charge, which implies that they can accept inverted or non-inverted inputs at no extra charge.

Essentially what happens is that rather than needing to have each stage include an inverters so that its inputs and outputs have the same logic polarity, inversions get shifted around so that the inputs and outputs associated with alternate bits have reversed polarity. If one needed to have an ALU with non-inverted inputs and outputs, the need to add inverters to some inputs and outputs would counteract the savings realized earlier (though eliminating an inversion stage from the carry chain would still reduce propagation delays). The fact that adders are used in many contexts where inversions are available "for free", however, allows those inverters to be eliminated entirely.

\$\endgroup\$
1
  • \$\begingroup\$ The dual of the function is itself... that definitely clears it up thanks! I searched for this all over the internet. \$\endgroup\$
    – Suman Saha
    Commented Jan 10, 2017 at 16:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.