Template:Short description Template:Sidebar arithmetic logic circuits Template:More citations needed

In digital circuits, an adder–subtractor is a circuit that is capable of adding or subtracting numbers (in particular, binary). Below is a circuit that adds or subtracts depending on a control signal. It is also possible to construct a circuit that performs both addition and subtraction at the same time.<ref>Template:Cite news</ref>

ConstructionEdit

File:4-bit ripple carry adder-subtracter.svg
A 4-bit ripple-carry adder–subtractor based on a 4-bit adder that performs two's complement on A when Template:Nowrap to yield Template:Nowrap.

Having an n-bit adder for A and B, then Template:Nowrap. Then, assume the numbers are in two's complement. Then to perform Template:Nowrap, two's complement theory says to invert each bit of A with a NOT gate then add one. This yields Template:Nowrap, 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:

that has control input D that is also connected to the initial carry, then the modified adder performs

This works because when Template:Nowrap the A input to the adder is really Template:Overline and the carry in is 1. Adding B to Template:Overline and 1 yields the desired subtraction of Template:Nowrap.

A way you can mark number A as positive or negative without using a multiplexer on each bit is to use an XOR gate to precede each bit instead.

  • The first input to the XOR gate is the actual input bit
  • The second input for each XOR gate is the control input D

This produces the same truth table for the bit arriving at the adder as the multiplexer solution does since the XOR gate output will be what the input bit is when Template:Nowrap and the inverted input bit when Template:Nowrap.

Role in the arithmetic logic unitEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}

Adders are a part of the core of an arithmetic logic unit (ALU). The control unit decides which operations an ALU should perform (based on the op code being executed) and sets the ALU operation. The D input to the adder–subtractor above would be one such control line from the control unit.

The adder–subtractor above could easily be extended to include more functions. For example, a 2-to-1 multiplexer could be introduced on each Bi that would switch between zero and Bi; this could be used (in conjunction with Template:Nowrap) to yield the two's complement of A since Template:Nowrap.

A further step would be to change the 2-to-1 multiplex on A to a 4-to-1 with the third input being zero, then replicating this on Bi thus yielding the following output functions:

By adding more logic in front of the adder, a single adder can be converted into much more than just an adder—an ALU.

See alsoEdit

ReferencesEdit

Template:Reflist