1. Field of the Invention
The present invention relates to a full adder and, more particularly, to a high speed, universal polarity full adder which consumes minimal power and minimal area.
2. Description of the Related Art
Many applications require the use of high speed full adders which are low in power, small in size, and flexible with respect to the polarity (active high/active low) of their input/output signals.
Referring to
Second complex gate 112, which contains 14 transistors M10–M23, also receives input signal A, input signal B, and carry input signal CI. In addition, gate 112 also receives the first gate signal FG from NODE1, and generates a second gate signal SG on node NODE2.
First inverter 114, which contains two transistors M24/M25, receives the second gate signal SG from NODE2, and generates a sum output signal S. Second inverter 116, which contains two transistors M26/M27, receives the first gate signal FG from NODE1, and generates a carry output signal CO.
In operation, the sum output signal S is high when only input signal A is high, or when only input signal B is high, or when only input signal CI is high, or when input signals A, B and CI are all high.
Referring to
The logic high on NODE1 turns on transistor M17 and turns off transistor M13. Thus transistors M11, M12, M14, M16, M17, M18 and M22 are turned on, while transistors M10, M13, M15, M19, M20, M21 and M23 are turned off. This forces the second gate signal SG low, driving NODE2 low. Transistors M24 and M25 then invert the logic low on NODE2, generating a logic high on the sum output signal S.
Referring to
The logic high on NODE1 turns on transistor M17 and turns off transistor M13. Thus transistors M10, M12, M15, M16, M17, M19 and M23 are turned on, while transistors M11, M13, M14, M18, M20, M21 and M22 are turned off. This forces the second gate signal SG low, driving NODE2 low. Transistors M24 and M25 then invert the logic low on NODE2, generating a logic high on the sum output signal S.
Referring to
The logic high on NODE1 turns on transistor M17 and turns off transistor M13. Thus transistors M10, M11, M14, M15, M17, M20 and M21 are turned on, while transistors M12, M13, M16, M18, M19, M22 and M23 are turned off. This forces the second gate signal SG low, driving NODE2 low. Transistors M24 and M25 then invert the logic low on NODE2, generating a logic high on the sum output signal S.
Referring to
The logic low on NODE1 turns on transistor M13 and turns off transistor M17. Thus transistors M13, M18, M19, M20, M21, M22 and M23 are turned on, while transistors M10, M11, M12, M14, M15, M16 and M17 are turned off. This forces the second gate signal SG low, driving NODE2 low. Transistors M24 and M25 then invert the logic low on NODE2, generating a logic high on the sum output signal S.
The carry output signal CO is high when only input signals A and B are high, or when only input signals A and CI are high, or when only input signals B and CI are high, or when input signals A, B and CI are all high.
Referring to
Similarly, when only input signals A and CI are high, transistors M1, M2, M5, M6 and M7 are turned on, while transistors M0, M3, M4, M8 and M9 are turned off. This forces the first gate signal FG low, driving NODE1 low. Inverter 116, formed by transistors M26 and M27, then inverts the logic low on NODE1, generating a logic high on the carry output signal CO.
Furthermore, when only input signals B and CI are high, transistors M0, M4, M5, M8 and M9 are turned on, while transistors M1, M2, M3, M6 and M7 are turned off. This forces the first gate signal FG low, driving NODE1 low. Inverter 116, formed by transistors M26 and M27, then inverts the logic low on NODE1, generating a logic high on the carry output signal CO.
Finally, when input signals A, B and CI are all high, transistors M5–M9 are turned on, while transistors M0–M4 are turned off. This forces the first gate signal FG low, driving NODE1 low. Inverter 116, formed by transistors M26 and M27, then inverts the logic low on NODE1, generating a logic high on the carry output signal CO.
TABLE 1 shows the truth table for a full adder. Referring to TABLE 1, the full adder inputs include input signal A, input signal B and the carry input signal CI. The full adder outputs include sum output signal S and the carry output signal CO. As shown in TABLE 1, sum output signal S and carry output signal CO both depend upon the adder input signals A, B and CI.
Using the data shown in TABLE 1, the Boolean logic equation for the sum output signal S can be easily obtained by constructing a simple Karnaugh map, as shown in TABLE 2 and Eq. 1. Referring to Eq. 1, it can be seen that the sum output signal S will be high only when there are an odd number of ones in the triad {A, B, CI}. Thus, the sum output signal S will be high when only input signal A is high, or when only input signal B is high, or when only input signal CI is high, or when input signals A, B and CI are all high.
Using the data shown in TABLE 1, the Boolean logic equation for the carry output signal CO can be easily obtained by constructing a simple Karnaugh map, as shown in TABLE 3 and Eq. 2. Referring to Eq. 2, it can be seen that the carry output signal CO will be high when at least two of the members in the triad {A, B, CI} are high. Therefore, the carry output signal CO will be high when input signals A and B are high, or when input signals A and CI are high, or when input signals B and CI are high.
The prior-art full adder shown in
Another disadvantage of full adder 100 is that its input/output signal polarity cannot be changed without adding inverters at the inputs/outputs of the adder. Thus, for applications which require different input/output signal polarity, the addition of these inverters increases the total gate capacitance, the total power dissipation and the total cell area. Since a full adder has three inputs and two outputs, each of which can be active high or active low, there are 32 different combinations of input/output signal polarity.
From the foregoing discussion, it can be seen that there is a definite need for a high speed full adder which is low in power and small in size. Furthermore, this adder should support all possible combinations of input/output signal polarity, without requiring extra inverters. Additionally, this adder should also provide buffered or unbuffered outputs, in order to drive high/low capacitance loads.
An adder cell in accordance with the present invention includes a logic gate which has a first input that receives a first input signal, a second input that receives a second input signal, and a first output that generates a first logic signal. The logic gate generates the first logic signal in response to the logic states of the first and second input signals. The logic gate also generates an inverted first input signal in response to the first input signal.
The adder cell also includes an inverter circuit which has a third input that receives a third input signal, a fourth input connected to receive the first logic signal, a first output that generates an inverted third signal, and a second output that generates an inverted first logic signal.
The adder cell further includes a carry output circuit which has a first control input connected to receive the logic signal, a second control input connected to receive the inverted first logic signal, and an output. The adder cell additionally includes a sum output circuit which has a first control input connected to receive the first logic signal, and a second control input connected to receive the inverted first logic signal. The sum output circuit also has a first sum input connected to the third input signal, a second sum input connected to the inverted third signal, and an output.
A better understanding of the features and advantages of the present invention will be obtained by reference to the following detailed description and accompanying drawings, which set forth an illustrative embodiment in which the principles of the invention are utilized
In accordance with the present invention,
As shown in
Referring to
Inverter 214 has an input node SI2 connected to adder input IN2, and an output node SO2 connected to output XT. Furthermore, inverter 214 also contains a PI2 node connected to adder input IN1, and a GI2 node connected to the SO1 output of inverter 212.
Transmission gate 216 has an input node SI3 connected to adder input IN2, and an output node SO3 connected to output XT. Furthermore, transmission gate 216 also contains a PC1 node connected to adder input IN1, and an NC1 node connected to the SO1 output node of inverter 212.
In addition to gate 210, full adder cell 200 also includes an inverter circuit 218 which includes a carry input inverter 220 and a gate inverter 230. Inverter 220 has an output node SO4 and an input node SI4 connected to adder input IN3. Inverter 220 receives the carry input signal CI on input SI4 and generates an inverted carry signal CIZ on output node SO4. Inverter 230 has an output node SO5 and an input node SI5 connected to output XT. Inverter 230 receives a logic: signal LS on input node SI5 and generates an inverted logic signal LSZ on output node SO5.
Full adder cell 200 also includes a carry output circuit 241D and a sum output circuit 250. Carry output circuit 240 has a first transmission gate 242 and a second transmission gate 244. First transmission gate 242 has an input node SI6 connected to adder input signal A, and an output node SO6 connected to adder output signal CO. Furthermore, first transmission gate 242 also contains a PC2 node connected to output XT of XOR gate 210, and an NC2 node connected to output node SO5 of inverter 230.
Referring to
Second transmission gate 244 has an input node SI7 connected to adder input signal CI, and an output node SO7 connected to adder output signal CO. Furthermore, second transmission gate 244 also contains a PC3 node connected to output node SO5 of inverter 230, and an NC3 node connected to output XT of XOR gate 210.
Referring to
Sum output circuit 250 has a first transmission gate 252 and a second transmission gate 254. First transmission gate 252 has an input node SI8 connected to adder carry input signal CI, and an output node SO8 connected to adder sum output signal S. Furthermore, first transmission gate 252 also contains a PC4 node connected to output XT of XOR gate 210, and an NC4 node connected to output node SO5 of inverter 230.
Referring to
Second transmission gate 254 has an input node SI9 connected to the inverted carry input signal CIZ, and an output node SO9 connected to adder sum output signal S. Furthermore, second transmission gate 254 also contains a PC5 node connected to output node SO5 of inverter 230, and an NC5 node connected to output XT of XOR gate 210.
Referring to
In operation, full adder cell 200 satisfies the same Boolean logic equations as full adder cell 100. Thus, for full adder cell 200, the sum output signal S will be high when only input signal A is high, or when only input signal B is high, or when only input signal CI is high, or when input signals A, B and CI are all high.
Referring to
As shown in
Referring to
As shown in
Referring to Eq. 2 in TABLE 3, the carry output signal CO will be high when input signals A and B are high, or when input signals A and CI are high, or when input signals B and CI are high.
As shown in
Referring to
As shown in
Using Boolean algebra, the logic equations for adder cell 200 can be written as follows:
S=(A⊙B)Cl+(A{circle around (+)}B)
CO=(A⊙B)A+(A{circle around (+)}B)Cl Eq. 4
in terms of the coincidence (XNOR) function (circle with a dot), and the exclusive OR (XOR) function (circle with a plus).
As shown in
1. It reduces the transistor count to only 18 devices. (Prior-art full adder cell 100 requires 28 devices).
2. It eliminates transistor stacking, allowing smaller device sizes to be used. (Prior-art full adder cell 100 stacks devices 2 high and 3 high.)
3. It reduces the number of inversions in the carry propagation path to one inversion or zero inversions. (Zero inversions applies when the carry output CO is unbuffered, as shown in
4. It reduces the maximum number of inversions in the sum propagation path to only one inversion. (One inversion applies when the sum output S is unbuffered, as shown in
The above advantages significantly decrease cell power dissipation, cell area and cell carry/sum propagation delay.
Because a full adder cell has 3 inputs and 2 outputs, it can have 25=32 different combinations of active high/active low input/output signal polarity. Thus, as shown in
Because of its unique logic topology, adder cell 200 can be easily transformed into any one of 32 different signal polarity configurations. This can be accomplished by simply reconnecting a wire or two, without having to add any extra inverters or extra devices. This is clearly a great advantage, because the cell size and cell power dissipation remain essentially constant, independent of the required signal polarity.
The methods by which adder cell 200 can be transformed into 32 different signal polarity configurations will now be described.
As shown in
When adder signals A and B both have the same signal polarity (both active high or both active low), the LS signal provides the XOR function of signals A and B, and the LSZ signal provides the XNOR function of signals A and B.
However, when adder signals A and B do not have the same logic polarity (A is active high and B is active low, or vice versa), the LS signal provides the XNOR function of signals A and B, and the LSZ function provides the XOR function of signals A and B.
From the foregoing discussion, it can be seen that when signals A and B both have the same signal polarity (both active high or both active low), the LS signal must be connected to nodes PC2, NC3, PC4 and NC5, and to SI5, the input to inverter 230. Furthermore, the S05 output of inverter 230 must also be connected to nodes NC2, PC3, NC4 and PC5.
Similarly, it can also be seen that when signals A and B do not have the same signal polarity (A is active high and B is active low, or vice versa), the LS signal must be connected to nodes NC2, PC3, NC4 and PC5, and to SI5, the input to inverter 230. Furthermore, the S05 output of inverter 230 must also be connected to transistor gates PC2, NC3, PC4 and NC5.
In summary, no matter what signal polarities are present at A and B, the control signals required to drive the gates of transistors M11–M18 will always be present, and at most 2 wires will have to be reconnected.
As shown in
Referring to
The foregoing signal polarity discussion applies to the case shown in
Referring to
Referring to
The input signal at node SI6 can be inverted by simply reconnecting node SI6 to SO1, the output of inverter 212. Similarly, the input signal at node SI7 can be inverted by simply reconnecting node SI7 to SO4, the output of inverter 220.
Again referring to
The input signal at node SI8 can be inverted by simply reconnecting node SI8 to SO4, the output of inverter 220. Similarly, the input signal at node S19 can be inverted by simply reconnecting node SI9 to the CI input signal.
In summary, it has been shown that the input/output signal polarities of adder cell 200 can be changed by simply reconnecting a few wires, without having to add any inverters at the inputs/output; of adder cell 200. A few specific examples will now be presented.
In accordance with the present invention,
As shown in
Referring to
Again referring to
As shown in
In accordance with the present invention,
As shown in
Referring to
Thus, signals A, B, CI, CO and S in adder 200 respectively become signals AZ, BZ, CIZ, COZ and SZ in adder 400. In this particular example, none of the wires inside of the full adder cell had to be reconnected, even though the signal polarities of all adder input/output signals were changed.
In accordance with the present invention,
As shown in
Referring to
Again referring to
As shown in
In accordance with the present invention,
As shown in
Referring to
Again referring to
As shown in
As described in the above examples, adder cell 200 generates the logical complement pairs A/AZ, CI/CIZ and A_XOR B/A_XNOR_B (logic signals LS/LSZ). Nevertheless, the logical complement of input signal B is not available. This is not a problem, however, because when signal BZ is input to cell 200 (instead of signal B), the output of logic gate 210 will simply become equal to A_XNOR_B (instead of A_XOR_B). Similarly, the output of inverter 230 will become equal to A_XOR_B instead of A_XNOR_B. Thus the logical complement of input B is not required.
From the full adder examples shown in
The adder cells shown in
In accordance with the present invention,
As shown in
Although the addition of a buffer inverter to the carry output and/or the sum output increases the cell device count, it does riot alter the unique logic topology of the cell. Thus, as described above for the unbuffered cell configurations, all 32 possible input/output signal polarity configurations can also be obtained with the buffered cell, without having to add any additional devices.
By utilizing the present invention, many different buffered/unbuffered adder cell topologies can be created. As described above, all of these adder cell topologies will have very low power dissipation and very small cell size. Furthermore, these adder cell topologies can be used in many different applications, including ripple carry applications, fast carry applications and fast sum applications (i.e. parallel adder applications in which many addends must be quickly summed).
In accordance with the present invention,
As shown in
The active low carry output signal COZ in adder cell 800 is generated by the added inverter 810 (transistors M19/M20). Furthermore, by comparing adder cell 800 to adder cell 200, it can be seen that the logic signal polarities inside both cells are the same. The only difference is that, in adder cell 800, an inverter has been added to the carry output path, causing the carry output to become active low.
In accordance with the present invention,
As shown in
The active high carry output signal CO in adder cell 900 is generated by the added inverter 910 (transistors M19/M20). Furthermore, by comparing adder cell 900 to adder cell 600, it can be seen that the logic signal polarities inside both cells are the same. The only difference is that, in adder cell 900, an inverter has been added to the carry output path, causing the carry output signal to become active high.
Adder cells 800 and 900 both have active high input signals A and B, and an active high sum output signal S. However, adder cell 800 has an active high carry input signal CI and an active low carry output signal COZ, whereas adder cell 900 has an active low carry input signal CIZ and an active high carry output signal CO.
Adder cells 800 and 900 both have buffered carry outputs. Furthermore, they both have only one inversion in their internal carry propagation paths. Thus, when both of these cells are used together in ripple carry applications, the total number of inversions in the longest carry propagation path will be reduced by a factor of two (in comparison to prior-art adder cell 100). This is a very significant decrease because it speeds up carry propagation by a factor of 2, and it also decreases full adder power dissipation.
In accordance with the present invention,
In high speed adder applications, the carry ripple time must be reduced to an absolute minimum. This can be accomplished by interleaving two different types of adder cells—i.e. cells which have only one carry inversion per adder cell (such as the two cells shown in
In accordance with the present invention,
Referring to
The optimum combination of cell types, which produces minimal carry ripple time, depends upon several factors. These factors include transistor sizing, relative cell placement, cell parasitics, and the CMOS technology being used.
In parallel adder applications, sum propagation time is often the speed limiting factor (rather than carry propagation time). This is especially true when carry save and/or carry look ahead techniques are being used. Thus, when many numbers must be added together in parallel (i.e. at the same time), minimizing the sum propagation time is very important.
The sum propagation time can be minimized by utilizing techniques similar to those described above for minimizing carry ripple time. Thus, the polarity of the sum output signals can be alternated in the same way that the polarity of the carry output signals can be alternated.
In accordance with the present invention,
Referring to
As shown in
In operation, parallel adder 1200 simultaneously adds three 4 bit words (W[3:0], X[3:0], Y[3:0] and Z[3:0]). In ROW0, the sum path is from B to SZ. In ROW1, however, the sum path is from BZ to S. Thus the polarity of the sum path alternates between ROW0 and ROW 1.
Referring to
In accordance with the present invention,
As shown in
Inverter 1314 has an input node SI11 connected to adder input IN2, and an output node SO11 connected to output XT. Furthermore, inverter 1314 also contains a PI11 node connected to output SO10 of inverter 1312, and a GI11 node connected to input node IN1.
Transmission gate 1316 has an input node SI12 connected to adder input IN2, and an output node SO12 connected to output XT. Furthermore, transmission gate 1316 also contains a PC12 node connected to output SO10 of inverter 1312, and an NC12 node connected to input node IN1.
Comparing logic gate 1300 in
In order to function correctly, full adder 200 in
When logic gate 210 performs the XOR function (assuming that signals A and B have the same signal polarity) or when logic gate 1300 performs the XOR function (assuming that signals A and B have different signal polarities), the LS signal must be connected to nodes PC2, NC3, PC4 and NC5, and to node SI5, the input to inverter 230. Furthermore, the S05 output of inverter 230 must be connected to nodes NC2, PC3, NC4 and PC5.
Similarly, when gate 210 performs the XNOR function (assuming that signals A and B have different signal polarities), or when logic gate 1300 performs the XNOR function (assuming that signals A and B have the same signal polarity), the LS signal must be connected to nodes NC2, PC3, NC4 and PC5, and to node SI5, the input to inverter 230. Furthermore, the S05 output of inverter 230 must also be connected to nodes PC2, NC3, PC4 and NC5.
In summary, the present invention describes a class of full adder cells which offer the following significant advantages:
With respect to power savings and area savings, full adder cells 800 and 900 consume one half the area and dissipate one sixth the power in comparison to prior-art full adder cell 100. (This comparison applies when all cells are running at the same operating frequency and driving the same load capacitance).
It should be understood that various alternatives to the invention described herein may be employed in practicing the invention. Therefore, it is intended that the following claims define the scope of the invention, and that methods and structures within the scope of these claims, and their equivalents, be covered thereby.
Number | Name | Date | Kind |
---|---|---|---|
4564921 | Suganuma | Jan 1986 | A |
4709346 | Henlin | Nov 1987 | A |
4713790 | Kloker et al. | Dec 1987 | A |
4831578 | Bui | May 1989 | A |
4866658 | Mazin et al. | Sep 1989 | A |
4920509 | Hmida et al. | Apr 1990 | A |
5875124 | Takahashi | Feb 1999 | A |