- Adder-subtracter
In
digital circuit s, an adder-subtracter is a circuit that is capable of adding or subtracting numbers (in particular, binary).Below is a circuit that does adding "or" subtracting" depending on a control signal.However, it is possible to construct a circuit that performs both addition and subtraction at the same time.Construction
Construction of a binary adder-subtracter is quite easy.Assume you have an "n"-bit adder for A and B, then S = A + B.Also assume the numbers are in
two's complement .Then to perform B - A, two's complement theory says to invert each bit with aNOT gate then add one.This yields S = B + overline{A} + 1, which is easy to do with a slightly modified adder.By preceding each A input bit on the adder with a 2-to-1
multiplexer where:
* Input 0 (I_0) is straight through (A_i)
* Input 1 (I_1) is negated (overline{A_i})that has control input D and the initial carry connect is also connected to D then:
* when D=0 the modified adder performs addition
* when D=1 the modified adder performs subtractionThis works because when D=1 the A input to the adder is really overline{A} and the carry in is 1. Adding B to overline{A} and 1 yields the desired subtraction of B-A.
Role in the arithmetic logic unit
Adders are a part of the core of an
arithmetic logic unit (ALU).Thecontrol unit decides which operations an ALU should perform (based on theop code being executed) and sets the ALU operation.The D input to the adder-subtracter above would be one such control line from the control unit.The adder-subtracter above could easily be extended to include more functions.For example, a 2-to-1 multiplexer could be introduced on each B_i that would switch between zero and B_i; this could be used (in conjunction with D=1) to yield the
two's complement of A since A = overline{A} + 1.A further step would be to change the 2-to-1 mux on A to a 4-to-1 with the third input being zero, then replicating this on B_i thus yielding the following output functions:
* 0 (with the both A_i and B_i input set to zero and D=0)
* 1 (with the both A_i and B_i input set to zero and D=1)
* A (with the B_i input set to zero)
* B (with the A_i input set to zero)
* A+1 (with the B_i input set to zero and D=1)
* B+1 (with the A_i input set to zero and D=1)
* A+B
* A-B
* B-A
* overline{A} (with A_i set to invert; B_i set to zero; and D=0)
* A (with A_i set to invert; B_i set to zero; and D=1)
* overline{B} (with B_i set to invert; A_i set to zero; and D=0)
* B (with B_i set to invert; A_i set to zero; and D=1)By adding more logic in front of the adder, a single adder can be converted into much more than just an adder — an ALU.
ee also
*
Adder (electronics)
*Carry look-ahead adder
*Carry save adder
*Adding machine
*Subtractor
Wikimedia Foundation. 2010.