Skip to main content
Engineering LibreTexts

6.3: Full Adder

  • Page ID
    26983
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    As was alluded to earlier, the problem with a half adder is that it does not consider the input carry bit, Cin. To understand Cin, consider the addition problem for two binary numbers in Figure \(\PageIndex{1}\). In this problem, the result of adding the first digit of the two inputs values is a sum of 1 with a carry of 1. This carry of 1 must be considered when adding the next digit of the two input numbers. So the carry from each preceding digit must be included in the calculation of the result when adding binary numbers, and in effect the carry ripples through the digits of the addition (hence this type of adder is called a ripple-carry adder).

    Figure \(\PageIndex{1}\): Addition problem showing a carry bit

    Screen Shot 2020-06-26 at 7.08.52 PM.png

    The inclusion of the carry bit means that an adder for a single digit in a binary addition requires 3 inputs, the binary digit from the X and Y values being added, and the carry-out (Cout) from the addition of the preceding digit, which is the carry-in (Cin) to this digit. The circuit that implements this addition is called a full adder circuit. The truth table which implements a full adder is given in the table below.

    Figure \(\PageIndex{2}\): Full adder truth table

    Input

    Output

    X

    Y

    Cin

    S

    Cout

    0 0 0 0 0
    0 0 1 1 0
    0 1 0 1 0
    0 1 1 0 1
    1 0 0 1 0
    1 0 1 0 1
    1 1 0 0 1
    1 1 1 1 1

    \(\PageIndex{1}\) Full adder circuit

    The implementation details of the full adder are not as obvious as the half adder. There are still two output functions, S and Cout, but how to implement these functions is more complex. The first function, S, can be implemented by remembering that the XOR function is an odd function, that is the XOR result is 1 when an odd number of input bits is 1. Thus

    S=X⊕Y⊕Cin.

    is implemented with two cascading XOR gates.

    The Cout function can be implemented by realizing that it is true if both the X and Y values are true, or if either the X or Y value is true and the Cin is true, or

    Cout = (X*Y) + ((X⊕Y)*Cin)

    Using these two functions for C and S, the circuit for the full adder can be represented in Logisim as the following diagram.

    Figure \(\PageIndex{3}\): Full adder circuit

    Screen Shot 2020-06-26 at 7.16.26 PM.png

    \(\PageIndex{2}\) Full adder implementation

    The implementation of the full adder is by far the most complex circuit we have implemented up to this time. So while neatness when implementing a circuit always counts, it is now important to be very careful to consider not only how the circuit is implemented, but what gates on the chips to use and how to make the connections. A haphazard implementation of the circuit will become very messy and hard to understand, implement, and debug.

    1. Begin by installing and powering 3 switches. The first two switches will be the X and Y values for the circuit, and the third switch will be the Cin value to the circuit. Note the order of the switches is different than for the half adder. This circuit is somewhat complex, and so the placement of the switches is designed to keep the rest of the circuit as simple as possible.
    2. This circuit requires 3 types of gates, so 3 chips must be used. Install the 7486 (XOR) chip on the board, and power it as before.
    3. Install the 7408 (AND) chip on the board and power it.
    4. Install the 7432 (OR) chip on the board and power it. It is suggested that these chips be placed on the board in this order, as this is the order they will be accessed in the circuit. Any other placement of the chips will require wires to be run both forward and backward in this circuit, which will eventually be confusing.
    5. Once the chips have been installed on the board, wire the XOR gates. Wire the X and Y switches to pins 1 and 2 (first XOR gate) on the left side of the 7486 chip. The output of the XOR gate will be on pin 3.

      Note a couple of things about this gate. First the X and Y input wires are connected to the input pins, but are also connected to wires which send their values on to the AND gate in step 7.

      Note also that the output on pin 3 is sent forward to two places: the input of the third XOR gate, and to the input of the second AND gate.

      Finally note that the circuit has been designed to attempt to keep the wires used in the S output on the right of the board, and the wires used in the C output on the left side of the board.

      Figure \(\PageIndex{4}\): Full adder implementation

      Screen Shot 2020-06-26 at 7.23.24 PM.png

    6. Wire the output from the first XOR gate (pin 3 on the 7486 chip) and the Cin switch to the third XOR gate on the right side of the board, using pins 12 and 13 on the 7486 chip. The output from this XOR gate, pin 11 on the 7486 chip, will be the S output from the circuit, so connect this to the S LED.

      Note that the Cin input on pin 12 will be forwarded to an input on the second AND gate, similar to what was done in step 5.

    7. Wire the X and Y inputs, forwarded from pins 1 and 2 on the 7486 XOR chip, to the first AND gate, pins 1 and 2, on the left side of the 7408 chip. The output of this AND gate will be on pin 3, and sent to the input for the first OR gate.
    8. Wire the output of the first XOR gate, pin 3 on the 7486, to the input of the second AND gate, pin 4, on the left side of the 7408 chip. Wire the Cin , forwarded from pin 12 on the 7486 chip, to the second input for this AND gate, pin 5 on the 7408 chip. The output from this AND gate will be on pin 6.
    9. Connect the output of the first AND gate, pin 3 on the 7408 chip, to the first input on the OR gate, pin 1, on the 7432 chip. Connect the output on the second AND gate, pin 6 on the 7408 chip, to the second input, pin 2, on the 7432 chip. The output from the OR gate, pin 3 on the 7432, is the Cout output for the circuit. Wire this output to the C LED.

    The circuit should implement the full adder behavior. If all switches are off, the circuit will be dark; if two or more switches are on, the C output will be on; finally if an odd number of switches are on the S output will be on. If all 3 switches are on, both the C and S LEDs will be on.


    This page titled 6.3: Full Adder is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by Charles W. Kann III via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.