Combinational Logic Circuits

Combinational Logic Circuits

Overview

Combinational logic circuits are digital circuits where outputs are determined solely by current inputs. In this lesson, we will learn about the characteristics of combinational logic circuits and major combinational circuits such as adders, multiplexers, demultiplexers, decoders, and encoders. These circuits are core components of computer hardware such as CPUs and memory.

Difficulty: ⭐⭐ (Intermediate)


Table of Contents

  1. Characteristics of Combinational Logic Circuits
  2. Half Adder
  3. Full Adder
  4. Ripple Carry Adder
  5. Multiplexer (MUX)
  6. Demultiplexer (DEMUX)
  7. Decoder
  8. Encoder
  9. Comparator and Other Circuits
  10. Practice Problems

1. Characteristics of Combinational Logic Circuits

Combinational Circuits vs Sequential Circuits

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                Classification of Digital Circuits            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚  β”‚  Combinational      β”‚    β”‚    Sequential        β”‚        β”‚
β”‚  β”‚    Logic Circuit    β”‚    β”‚    Logic Circuit     β”‚        β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€        β”‚
β”‚  β”‚ - No memory         β”‚    β”‚ - Has memory         β”‚        β”‚
β”‚  β”‚ - Output=f(inputs)  β”‚    β”‚ - Output=f(in,state) β”‚        β”‚
β”‚  β”‚ - No feedback       β”‚    β”‚ - Has feedback       β”‚        β”‚
β”‚  β”‚                     β”‚    β”‚                     β”‚        β”‚
β”‚  β”‚ Ex: Adder, MUX,     β”‚    β”‚ Ex: Flip-flop,      β”‚        β”‚
β”‚  β”‚     Decoder, Encoderβ”‚    β”‚     Register, Counterβ”‚        β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Characteristics of Combinational Circuits

Characteristics of Combinational Logic Circuits:

1. Outputs depend only on current inputs
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚                β”‚
Input β†’β”‚ Combinationalβ”‚β†’ Output
   β”‚    Circuit     β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
   Y = f(X₁, Xβ‚‚, ..., Xβ‚™)

2. No memory elements
   - Does not store previous inputs or states

3. Only propagation delay exists
   - Time from input change β†’ output change
   - Sum of gate delays

4. No feedback path
   - Output does not connect back to input

Combinational Circuit Design Procedure

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            Combinational Circuit Design Procedure            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  1. Problem Definition                                      β”‚
β”‚     - Clearly define inputs and outputs                     β”‚
β”‚     - Understand operating conditions                       β”‚
β”‚                                                             β”‚
β”‚  2. Truth Table Construction                                β”‚
β”‚     - Determine outputs for all input combinations          β”‚
β”‚     - Identify Don't Care conditions                        β”‚
β”‚                                                             β”‚
β”‚  3. Logic Expression Derivation                             β”‚
β”‚     - SOP (Sum of Products) or POS (Product of Sums) form   β”‚
β”‚                                                             β”‚
β”‚  4. Logic Expression Simplification                         β”‚
β”‚     - Use Boolean algebra or K-maps                         β”‚
β”‚                                                             β”‚
β”‚  5. Circuit Implementation                                  β”‚
β”‚     - Design circuit with logic gates                       β”‚
β”‚     - Convert to NAND/NOR gates if needed                   β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2. Half Adder

Half Adder Concept

Half Adder:
Adds two 1-bit inputs to output Sum and Carry

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚       A ─────┐     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                         β”‚
β”‚              β”œβ”€β”€β”€β”€β”€β”€     HA      β”œβ”€β”€β”€β”€β”€ S (Sum)            β”‚
β”‚       B β”€β”€β”€β”€β”€β”˜     β”‚             β”œβ”€β”€β”€β”€β”€ C (Carry)          β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β”‚
β”‚                                                             β”‚
β”‚  Binary addition:  A + B = CS                              β”‚
β”‚                    0 + 0 = 00  (0)                          β”‚
β”‚                    0 + 1 = 01  (1)                          β”‚
β”‚                    1 + 0 = 01  (1)                          β”‚
β”‚                    1 + 1 = 10  (2)                          β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Truth Table and Logic Expression

Half Adder Truth Table:

β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ A β”‚ B β”‚ S(Sum)β”‚ C(Carry)β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0 β”‚ 0 β”‚   0   β”‚    0    β”‚
β”‚ 0 β”‚ 1 β”‚   1   β”‚    0    β”‚
β”‚ 1 β”‚ 0 β”‚   1   β”‚    0    β”‚
β”‚ 1 β”‚ 1 β”‚   0   β”‚    1    β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Logic expressions:
S = A βŠ• B  (XOR)
C = A Β· B  (AND)

Circuit Implementation

Half Adder Circuit:

         A ───┬─────┬───────────────────┐
              β”‚     β”‚                   β”‚
              β”‚     β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”      β”‚
              β”‚     └────── XOR  β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€ S
              β”‚     β”Œβ”€β”€β”€β”€β”€β”€      β”‚      β”‚
         B β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”˜      β”‚
              β”‚     β”‚                   β”‚
              β”‚     β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”      β”‚
              β”‚     └────── AND  β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€ C
              └────────────      β”‚      β”‚
                          β””β”€β”€β”€β”€β”€β”€β”˜

Block Symbol:
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   A ────       β”œβ”€β”€β”€ S (Sum)
        β”‚  HA   β”‚
   B ────       β”œβ”€β”€β”€ C (Carry)
        β””β”€β”€β”€β”€β”€β”€β”€β”˜

Gate count: 1 XOR + 1 AND = 2 gates

Implementation with NAND Gates

Half Adder using only NAND gates:

XOR with NAND: 4 gates needed
AND with NAND: 2 gates needed

But with circuit optimization:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   A ──── NAND  β”œβ”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   B ────   1   β”‚   β”‚                   β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”       β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”
                    β”œβ”€β”€β”€β”€ NAND  β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€ NAND  β”œβ”€β”€β”€ S
   A β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   3   β”‚       β”‚   β”‚   5   β”‚
        β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”   β””β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”˜
        └──── NAND  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
   B ────────   2   β”‚
            β””β”€β”€β”€β”€β”€β”€β”€β”˜   β”Œβ”€β”€β”€β”€β”€β”€β”€β”
                    β”Œβ”€β”€β”€β”€ NAND  β”œβ”€β”€β”€ C
                    β”‚   β”‚   4   β”‚
   (NAND1 output) ──┴────       β”‚
                        β””β”€β”€β”€β”€β”€β”€β”€β”˜

Total: 5 NAND gates

3. Full Adder

Full Adder Concept

Full Adder:
Adds three 1-bit inputs (A, B, Cα΅’β‚™) to output Sum and Carry

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚       A ─────┐                                              β”‚
β”‚              β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                         β”‚
β”‚       B ─────┼──────     FA      β”œβ”€β”€β”€β”€β”€ S (Sum)            β”‚
β”‚              β”‚     β”‚             β”œβ”€β”€β”€β”€β”€ Cβ‚’α΅€β‚œ (Carry Out)   β”‚
β”‚      Cα΅’β‚™ β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β”‚
β”‚                                                             β”‚
β”‚  Binary addition:  A + B + Cα΅’β‚™ = Cβ‚’α΅€β‚œS                     β”‚
β”‚                                                             β”‚
β”‚  Cα΅’β‚™ = Carry from lower bit                                β”‚
β”‚  Cβ‚’α΅€β‚œ = Carry to higher bit                                β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Truth Table and Logic Expression

Full Adder Truth Table:

β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ A β”‚ B β”‚ Cα΅’β‚™ β”‚   S   β”‚   Cβ‚’α΅€β‚œ   β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 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     β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Logic expressions:
S = A βŠ• B βŠ• Cα΅’β‚™
Cβ‚’α΅€β‚œ = AB + BCα΅’β‚™ + ACα΅’β‚™ = AB + Cα΅’β‚™(A βŠ• B)

Explanation:
- S: Output 1 if odd number of 1s (successive XOR)
- Cβ‚’α΅€β‚œ: Output 1 if two or more inputs are 1

Implementation with Two Half Adders

Full Adder = 2 Half Adders + OR gate

              β”Œβ”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”
    A ─────────       β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€       β”œβ”€β”€β”€β”€β”€β”€β”€ S
              β”‚  HA1  β”‚        β”‚  HA2  β”‚
    B ─────────       β”œβ”€β”€β”¬β”€β”€β”€β”€β”€β”€       β”œβ”€β”€β”€β”€β”€β”
              β””β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
                 C1      β”‚        C2         β”‚
                 β”‚       β”‚        β”‚          β”‚
   Cα΅’β‚™ β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”˜        β”‚          β”‚
                 β”‚                β”‚    β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”
                 └────────────────┴─────   OR     β”œβ”€β”€β”€ Cβ‚’α΅€β‚œ
                                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Operation:
1. HA1: A βŠ• B = P (partial sum), AΒ·B = G (generate)
2. HA2: P βŠ• Cα΅’β‚™ = S (final sum), PΒ·Cα΅’β‚™ = propagate carry
3. Cβ‚’α΅€β‚œ = G + PΒ·Cα΅’β‚™ = AB + (AβŠ•B)Β·Cα΅’β‚™

Circuit Implementation

Full Adder Detailed Circuit:

                           β”Œβ”€β”€β”€β”€β”€β”€β”€β”
    A ────────┬───────────── XOR   β”œβ”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚            β”‚       β”‚      β”‚              β”‚
    B ────────┼───┬─────────       β”‚      β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”   β”‚
              β”‚   β”‚        β””β”€β”€β”€β”€β”€β”€β”€β”˜      └─── XOR   β”œβ”€β”€β”€β”Όβ”€β”€ S
              β”‚   β”‚           (P)         β”Œβ”€β”€β”€       β”‚   β”‚
   Cα΅’β‚™ β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
              β”‚   β”‚                                      β”‚
              β”‚   β”‚        β”Œβ”€β”€β”€β”€β”€β”€β”€β”                     β”‚
              β”‚   └───────── AND   β”œβ”€β”€β”                  β”‚
              β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€       β”‚  β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”      β”‚
              β”‚   β”‚        β””β”€β”€β”€β”€β”€β”€β”€β”˜  └────       β”‚      β”‚
              β”‚   β”‚           (G)         β”‚  OR   β”œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€ Cβ‚’α΅€β‚œ
              β”‚   β”‚        β”Œβ”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€       β”‚
              β”‚   └───────── AND   β”œβ”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚            β”‚       β”‚
   (P) ───────┴─────────────       β”‚
                           β””β”€β”€β”€β”€β”€β”€β”€β”˜

Block Symbol:
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”
    A  ─────       β”œβ”€β”€β”€β”€ S
    B  ─────  FA   β”‚
   Cα΅’β‚™ ─────       β”œβ”€β”€β”€β”€ Cβ‚’α΅€β‚œ
           β””β”€β”€β”€β”€β”€β”€β”€β”˜

4. Ripple Carry Adder

Ripple Carry Adder Concept

Ripple Carry Adder:
Multi-bit addition by connecting full adders in series

4-bit Ripple Carry Adder:

   A₃ B₃    Aβ‚‚ Bβ‚‚    A₁ B₁    Aβ‚€ Bβ‚€
    β”‚ β”‚      β”‚ β”‚      β”‚ β”‚      β”‚ β”‚
    β–Ό β–Ό      β–Ό β–Ό      β–Ό β–Ό      β–Ό β–Ό
  β”Œβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”
  β”‚ FA₃ │←── FAβ‚‚ │←── FA₁ │←── FAβ‚€ │←─ Cα΅’β‚™ (0)
  β””β”€β”€β”¬β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”˜
     β”‚        β”‚        β”‚        β”‚
     β–Ό        β–Ό        β–Ό        β–Ό
   Cβ‚’α΅€β‚œ      S₃       Sβ‚‚       S₁       Sβ‚€

Result: Cβ‚’α΅€β‚œ S₃ Sβ‚‚ S₁ Sβ‚€ = A₃Aβ‚‚A₁Aβ‚€ + B₃Bβ‚‚B₁Bβ‚€

8-bit Adder

8-bit Ripple Carry Adder:

A[7:0] ───┬──────────────────────────────────────────────┐
          β”‚                                              β”‚
B[7:0] ───┼──────────────────────────────────────────────┼──┐
          β”‚                                              β”‚  β”‚
          β–Ό                                              β–Ό  β–Ό
        β”Œβ”€β”€β”€β”   β”Œβ”€β”€β”€β”   β”Œβ”€β”€β”€β”   β”Œβ”€β”€β”€β”   β”Œβ”€β”€β”€β”   β”Œβ”€β”€β”€β” β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”
 0 ──────FA0β”œβ”€β”€β”€β”€FA1β”œβ”€β”€β”€β”€FA2β”œβ”€β”€β”€β”€FA3β”œβ”€β”€β”€β”€FA4β”œβ”€β”€β”€β”€FA5β”œβ”€β”€FA6β”œβ”€FA7β”œβ”€β”€β”€ Cβ‚’α΅€β‚œ
        β””β”€β”¬β”€β”˜   β””β”€β”¬β”€β”˜   β””β”€β”¬β”€β”˜   β””β”€β”¬β”€β”˜   β””β”€β”¬β”€β”˜   β””β”€β”¬β”€β”˜ β””β”€β”¬β”€β”˜β””β”€β”¬β”€β”˜
          β”‚       β”‚       β”‚       β”‚       β”‚       β”‚     β”‚    β”‚
          β–Ό       β–Ό       β–Ό       β–Ό       β–Ό       β–Ό     β–Ό    β–Ό
         Sβ‚€      S₁      Sβ‚‚      S₃      Sβ‚„      Sβ‚…    S₆   S₇

Carry propagation delay:
- Worst case: Carry propagates from LSB to MSB
- Delay time = n Γ— (FA propagation delay)

Limitations of Ripple Carry Adder

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        Ripple Carry Adder Advantages and Disadvantages       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  Advantages:                                                β”‚
β”‚  - Simple design                                            β”‚
β”‚  - Low gate count (n FAs for n-bit)                         β”‚
β”‚  - Regular structure                                        β”‚
β”‚                                                             β”‚
β”‚  Disadvantages:                                             β”‚
β”‚  - Carry propagation delay increases linearly               β”‚
β”‚  - Very slow for 32-bit, 64-bit                             β”‚
β”‚                                                             β”‚
β”‚  Delay time analysis:                                       β”‚
β”‚  - Carry delay of 1 FA: approximately 2 gate delays         β”‚
β”‚  - Total delay for n-bit adder: approximately 2n gate delaysβ”‚
β”‚                                                             β”‚
β”‚  Improved adders:                                           β”‚
β”‚  - Carry Lookahead Adder                                    β”‚
β”‚  - Carry Select Adder                                       β”‚
β”‚  - Carry Save Adder                                         β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Subtractor

Subtraction using adder:

A - B = A + (-B) = A + (2's complement of B) = A + B' + 1

4-bit Adder/Subtractor:

         Sub(0=Add, 1=Subtract)
              β”‚
   B₃ β”€β”€β”€β”€β”€β”€β”€βŠ•β”€β”€β”€β”        Bβ‚‚ β”€β”€β”€β”€β”€β”€β”€βŠ•β”€β”€β”€β”
              β”‚  β”‚                   β”‚  β”‚
   A₃ ────┐   β”‚  β”‚     Aβ‚‚ ────┐     β”‚  β”‚
          β”‚   β”‚  β”‚            β”‚     β”‚  β”‚
          β–Ό   β–Ό  β”‚            β–Ό     β–Ό  β”‚
        β”Œβ”€β”€β”€β”€β”€β”  β”‚          β”Œβ”€β”€β”€β”€β”€β”   β”‚
  ←────── FA₃ │←─┼─────────── FAβ‚‚ │←──┼─ ...
        β””β”€β”€β”¬β”€β”€β”˜  β”‚          β””β”€β”€β”¬β”€β”€β”˜   β”‚
           β”‚                   β”‚
          S₃                  Sβ‚‚

Sub = 0: B unchanged, Cα΅’β‚™ = 0 β†’ A + B
Sub = 1: B inverted, Cα΅’β‚™ = 1 β†’ A + B' + 1 = A - B

5. Multiplexer (MUX)

Multiplexer Concept

Multiplexer (MUX):
Data selector that selects one of multiple inputs to output

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  2ⁿ inputs β†’ 1 output                                       β”‚
β”‚  n select lines                                             β”‚
β”‚                                                             β”‚
β”‚       Dβ‚€ ───┐                                               β”‚
β”‚       D₁ ───┼───┐     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚       Dβ‚‚ ───┼───┼──────         β”‚                          β”‚
β”‚       D₃ ───┼───┼──────   MUX   β”œβ”€β”€β”€β”€β”€ Y                   β”‚
β”‚         ...  β”‚   β”‚     β”‚  n:1    β”‚                          β”‚
β”‚      D₂ⁿ⁻₁──┼───┼──────         β”‚                          β”‚
β”‚             β”‚   β”‚     β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜                          β”‚
β”‚             β”‚   β”‚          β”‚                               β”‚
β”‚             β”‚   β”‚     Sβ‚€ S₁...Sₙ₋₁                         β”‚
β”‚             β”‚   β”‚          β”‚                               β”‚
β”‚             β”‚   β”‚     (Select lines)                        β”‚
β”‚                                                             β”‚
β”‚  Y = D_S (S-th input goes to output)                        β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2:1 MUX

2:1 Multiplexer:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   Dβ‚€ ─── 0       β”‚
        β”‚   MUX   β”œβ”€β”€β”€ Y
   D₁ ─── 1       β”‚
        β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
             β”‚
             S

Truth Table:
β”Œβ”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”
β”‚ S β”‚  Y   β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€
β”‚ 0 β”‚  Dβ‚€  β”‚
β”‚ 1 β”‚  D₁  β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”˜

Logic expression:
Y = S'Β·Dβ‚€ + SΒ·D₁

Circuit:
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   Dβ‚€ ───────────────       β”‚
                    β”‚  AND  β”œβ”€β”€β”€β”€β”
   S ───┬───[NOT]────       β”‚    β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”
        β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”˜    β”œβ”€β”€β”€β”€β”€  OR   β”œβ”€β”€β”€ Y
        β”‚           β”Œβ”€β”€β”€β”€β”€β”€β”€β”    β”‚    β”‚       β”‚
        β”‚           β”‚       β”‚    β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”˜
   D₁ ──┼────────────  AND  β”œβ”€β”€β”€β”€β”˜
        β”‚           β”‚       β”‚
        └────────────       β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”˜

4:1 MUX

4:1 Multiplexer:

           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   Dβ‚€  ───── 00      β”‚
   D₁  ───── 01      β”‚
           β”‚   MUX   β”œβ”€β”€β”€ Y
   Dβ‚‚  ───── 10      β”‚
   D₃  ───── 11      β”‚
           β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
                β”‚
             S₁  Sβ‚€

Truth Table:
β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”
β”‚ S₁ β”‚ Sβ‚€ β”‚  Y   β”‚
β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€
β”‚ 0  β”‚ 0  β”‚  Dβ‚€  β”‚
β”‚ 0  β”‚ 1  β”‚  D₁  β”‚
β”‚ 1  β”‚ 0  β”‚  Dβ‚‚  β”‚
β”‚ 1  β”‚ 1  β”‚  D₃  β”‚
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”˜

Logic expression:
Y = S₁'Sβ‚€'Dβ‚€ + S₁'Sβ‚€D₁ + S₁Sβ‚€'Dβ‚‚ + S₁Sβ‚€D₃

4:1 MUX Circuit

4:1 Multiplexer Circuit:

   Dβ‚€ ────┐     β”Œβ”€β”€β”€β”€β”€β”
          └────── AND β”œβ”€β”€β”€β”€β”
   S₁'────┬──────     β”‚    β”‚
   Sβ‚€'────┼──────     β”‚    β”‚
          β”‚     β””β”€β”€β”€β”€β”€β”˜    β”‚
   D₁ ────│     β”Œβ”€β”€β”€β”€β”€β”    β”‚
          └────── AND β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”
   S₁'────┬──────     β”‚    β”‚    β”‚
   Sβ‚€ ────┼──────     β”‚    β”‚    β”‚    β”Œβ”€β”€β”€β”€β”€β”
          β”‚     β””β”€β”€β”€β”€β”€β”˜    β”‚    β”œβ”€β”€β”€β”€β”€     β”‚
   Dβ‚‚ ────│     β”Œβ”€β”€β”€β”€β”€β”    β”‚    β”‚    β”‚ OR  β”œβ”€β”€β”€ Y
          └────── AND β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€     β”‚
   S₁ ────┬──────     β”‚    β”‚    β”‚    β”‚     β”‚
   Sβ‚€'────┼──────     β”‚    β”‚    β”‚    β””β”€β”€β”€β”€β”€β”˜
          β”‚     β””β”€β”€β”€β”€β”€β”˜    β”‚    β”‚
   D₃ ────│     β”Œβ”€β”€β”€β”€β”€β”    β”‚    β”‚
          └────── AND β”œβ”€β”€β”€β”€β”˜β”€β”€β”€β”€β”˜
   S₁ ────┬──────     β”‚
   Sβ‚€ ────┴──────     β”‚
                β””β”€β”€β”€β”€β”€β”˜

Constructed with two 2:1 MUXes:
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   Dβ‚€ ─── 0     β”‚
        β”‚ MUX   β”œβ”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   D₁ ─── 1     β”‚  └───── 0     β”‚
        β””β”€β”€β”€β”¬β”€β”€β”€β”˜       β”‚ MUX   β”œβ”€β”€β”€ Y
            β”‚      β”Œβ”€β”€β”€β”€β”€ 1     β”‚
        β”Œβ”€β”€β”€β”΄β”€β”€β”€β”  β”‚    β””β”€β”€β”€β”¬β”€β”€β”€β”˜
   Dβ‚‚ ─── 0     β”‚  β”‚        β”‚
        β”‚ MUX   β”œβ”€β”€β”˜        S₁
   D₃ ─── 1     β”‚
        β””β”€β”€β”€β”¬β”€β”€β”€β”˜
            Sβ‚€

Applications of MUX

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Applications of MUX                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  1. Data Selection                                          β”‚
β”‚     - Select one of multiple sources                        β”‚
β”‚     - CPU data paths                                        β”‚
β”‚                                                             β”‚
β”‚  2. Parallel-to-Serial Conversion                           β”‚
β”‚     - Output parallel data sequentially                     β”‚
β”‚                                                             β”‚
β”‚  3. Logic Function Implementation                           β”‚
β”‚     - Truth table outputs as data inputs                    β”‚
β”‚     - Any n-variable function can be implemented with       β”‚
β”‚       2ⁿ:1 MUX                                              β”‚
β”‚                                                             β”‚
β”‚  4. Conditional Data Transfer                               β”‚
β”‚     - Hardware implementation of if-else statements         β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Example: Implementing logic function with MUX

Implement function Y = A'B + AB' (XOR) with 4:1 MUX:

Truth Table:
β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
β”‚ A β”‚ B β”‚ Y β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€
β”‚ 0 β”‚ 0 β”‚ 0 β”‚ β†’ Dβ‚€ = 0
β”‚ 0 β”‚ 1 β”‚ 1 β”‚ β†’ D₁ = 1
β”‚ 1 β”‚ 0 β”‚ 1 β”‚ β†’ Dβ‚‚ = 1
β”‚ 1 β”‚ 1 β”‚ 0 β”‚ β†’ D₃ = 0
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    0 ─── 00      β”‚
    1 ─── 01      β”‚
        β”‚  4:1    β”œβ”€β”€β”€ Y = A βŠ• B
    1 ─── 10  MUX β”‚
    0 ─── 11      β”‚
        β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
          A    B

6. Demultiplexer (DEMUX)

Demultiplexer Concept

Demultiplexer (DEMUX):
Transfers one input to one of multiple outputs (reverse of MUX)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  1 input β†’ 2ⁿ outputs                                       β”‚
β”‚  n select lines                                             β”‚
β”‚                                                             β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ Yβ‚€                     β”‚
β”‚                    β”‚         │───── Y₁                     β”‚
β”‚           D ────────  DEMUX  │───── Yβ‚‚                     β”‚
β”‚                    β”‚  1:2ⁿ   │───── Y₃                     β”‚
β”‚                    β”‚         β”‚  ... β”‚                      β”‚
β”‚                    β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜β”€β”€β”€β”€β”€ Y₂ⁿ⁻₁                  β”‚
β”‚                         β”‚                                   β”‚
β”‚                    Sβ‚€ S₁...Sₙ₋₁                             β”‚
β”‚                                                             β”‚
β”‚  Only selected output receives input D, others are 0        β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

1:4 DEMUX

1:4 Demultiplexer:

              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ Yβ‚€
              β”‚         │───── Y₁
        D ─────  DEMUX  β”‚
              β”‚  1:4    │───── Yβ‚‚
              β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜β”€β”€β”€β”€β”€ Y₃
                   β”‚
                S₁  Sβ‚€

Truth Table (when D=1):
β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
β”‚ S₁ β”‚ Sβ‚€ β”‚ Yβ‚€ β”‚ Y₁ β”‚ Yβ‚‚ β”‚ Y₃ β”‚
β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 0  β”‚
β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 0  β”‚
β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 0  β”‚
β”‚ 1  β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 0  β”‚ 1  β”‚
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜

Logic expressions:
Yβ‚€ = D Β· S₁' Β· Sβ‚€'
Y₁ = D Β· S₁' Β· Sβ‚€
Yβ‚‚ = D Β· S₁  Β· Sβ‚€'
Y₃ = D Β· S₁  Β· Sβ‚€

DEMUX Circuit

1:4 DEMUX Circuit:

                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”
        D ───┬────────       β”‚
             β”‚       β”‚  AND  β”œβ”€β”€β”€ Yβ‚€
   S₁'───────┼────────       β”‚
   Sβ‚€'───────┼────────       β”‚
             β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”
             β”œβ”€β”€β”€β”€β”€β”€β”€β”€       β”‚
             β”‚       β”‚  AND  β”œβ”€β”€β”€ Y₁
   S₁'───────┼────────       β”‚
   Sβ‚€ ───────┼────────       β”‚
             β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”
             β”œβ”€β”€β”€β”€β”€β”€β”€β”€       β”‚
             β”‚       β”‚  AND  β”œβ”€β”€β”€ Yβ‚‚
   S₁ ───────┼────────       β”‚
   Sβ‚€'───────┼────────       β”‚
             β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”
             └────────       β”‚
                     β”‚  AND  β”œβ”€β”€β”€ Y₃
   S₁ ────────────────       β”‚
   Sβ‚€ ────────────────       β”‚
                     β””β”€β”€β”€β”€β”€β”€β”€β”˜

7. Decoder

Decoder Concept

Decoder:
Activates one of 2ⁿ outputs from n-bit input

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  n inputs β†’ 2ⁿ outputs                                      β”‚
β”‚  Only output corresponding to input value is 1, rest are 0  β”‚
β”‚                                                             β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ Yβ‚€                     β”‚
β”‚           Aβ‚€ ───────         │───── Y₁                     β”‚
β”‚           A₁ ─────── DECODER │───── Yβ‚‚                     β”‚
β”‚           ...      β”‚  n:2ⁿ   │───── Y₃                     β”‚
β”‚           Aₙ₋₁ ─────         β”‚  ... β”‚                      β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”€β”€β”€β”€β”€ Y₂ⁿ⁻₁                  β”‚
β”‚                                                             β”‚
β”‚  Y_i = 1 if input = i (binary)                              β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2:4 Decoder

2:4 Decoder (2-to-4 Decoder):

           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ Yβ‚€
    Aβ‚€ ─────         │───── Y₁
    A₁ ───── 2:4 DEC │───── Yβ‚‚
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”€β”€β”€β”€β”€ Y₃

Truth Table:
β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
β”‚ A₁ β”‚ Aβ‚€ β”‚ Yβ‚€ β”‚ Y₁ β”‚ Yβ‚‚ β”‚ Y₃ β”‚
β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 0  β”‚
β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 0  β”‚
β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 0  β”‚
β”‚ 1  β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 0  β”‚ 1  β”‚
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜

Logic expressions:
Yβ‚€ = A₁' Β· Aβ‚€'
Y₁ = A₁' Β· Aβ‚€
Yβ‚‚ = A₁  Β· Aβ‚€'
Y₃ = A₁  Β· Aβ‚€

Decoder Circuit

2:4 Decoder Circuit:

                β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   A₁'───────────       β”‚
                β”‚  AND  β”œβ”€β”€β”€ Yβ‚€ (=A₁'Aβ‚€')
   Aβ‚€'───────────       β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”˜

                β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   A₁'───────────       β”‚
                β”‚  AND  β”œβ”€β”€β”€ Y₁ (=A₁'Aβ‚€)
   Aβ‚€ ───────────       β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”˜

                β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   A₁ ───────────       β”‚
                β”‚  AND  β”œβ”€β”€β”€ Yβ‚‚ (=A₁Aβ‚€')
   Aβ‚€'───────────       β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”˜

                β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   A₁ ───────────       β”‚
                β”‚  AND  β”œβ”€β”€β”€ Y₃ (=A₁Aβ‚€)
   Aβ‚€ ───────────       β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”˜

Decoder with Enable Input

3:8 Decoder with Enable:

              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ Yβ‚€
    Aβ‚€ ────────          │───── Y₁
    A₁ ────────  3:8     │───── Yβ‚‚
    Aβ‚‚ ────────  DEC     │───── Y₃
              β”‚          │───── Yβ‚„
    E ───────── (Enable) │───── Yβ‚…
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”€β”€β”€β”€β”€ Y₆
                          ───── Y₇

E=0: All outputs are 0 (disabled)
E=1: Normal operation

Purpose of Enable:
- Select when connecting multiple decoders
- Chip Select
- Timing control

Applications of Decoder

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Applications of Decoder                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  1. Memory Address Decoding                                 β”‚
β”‚     - Select 2ⁿ memory locations with n-bit address        β”‚
β”‚                                                             β”‚
β”‚  2. Instruction Decoding                                    β”‚
β”‚     - Convert operation code (opcode) to control signals    β”‚
β”‚                                                             β”‚
β”‚  3. 7-Segment Display                                       β”‚
β”‚     - Convert BCD to 7-segment pattern                      β”‚
β”‚                                                             β”‚
β”‚  4. Minterm Generator                                       β”‚
β”‚     - Implement logic functions (Decoder + OR gate)         β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Implementing logic function with decoder:

Example: Implement Y = Ξ£m(1, 2, 4, 7) with 3:8 decoder

         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   A ─────          │───── mβ‚€
   B ─────  3:8     │───── m₁ ──┐
   C ─────  DEC     │───── mβ‚‚ ──┼──┐
         β”‚          │───── m₃   β”‚  β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”
         β”‚          │───── mβ‚„ ──┼──┼─────      β”‚
         β”‚          │───── mβ‚…   β”‚  β”‚    β”‚  OR  β”œβ”€β”€β”€ Y
         β”‚          │───── m₆   β”‚  └─────      β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”€β”€β”€β”€β”€ m₇ ──┴────────      β”‚
                                        β””β”€β”€β”€β”€β”€β”€β”˜

Y = m₁ + mβ‚‚ + mβ‚„ + m₇

8. Encoder

Encoder Concept

Encoder:
Converts one active input among 2ⁿ inputs to n-bit binary code (reverse of decoder)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  2ⁿ inputs β†’ n outputs                                      β”‚
β”‚  Outputs number of active input in binary                   β”‚
β”‚                                                             β”‚
β”‚      Dβ‚€ ──────┐                                             β”‚
β”‚      D₁ ──────┼────┐     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                       β”‚
β”‚      Dβ‚‚ ──────┼────┼──────         β”œβ”€β”€β”€β”€β”€ Aβ‚€              β”‚
β”‚      D₃ ──────┼────┼────── ENCODER β”œβ”€β”€β”€β”€β”€ A₁              β”‚
β”‚      ...      β”‚    β”‚     β”‚  2ⁿ:n   β”‚  ... β”‚                β”‚
β”‚      D₂ⁿ⁻₁───┼────┼──────         β”œβ”€β”€β”€β”€β”€ Aₙ₋₁            β”‚
β”‚               β”‚    β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                       β”‚
β”‚                                                             β”‚
β”‚  Assumption: Only one input is active at a time             β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4:2 Encoder

4:2 Encoder:

           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    Dβ‚€ ─────         │───── Aβ‚€
    D₁ ─────  4:2    β”‚
    Dβ‚‚ ─────  ENC    │───── A₁
    D₃ ─────         β”‚
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Truth Table:
β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
β”‚ D₃ β”‚ Dβ‚‚ β”‚ D₁ β”‚ Dβ‚€ β”‚ A₁ β”‚ Aβ‚€ β”‚
β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
β”‚ 0  β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 0  β”‚
β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 1  β”‚
β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 0  β”‚
β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 1  β”‚
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜

Logic expressions:
Aβ‚€ = D₁ + D₃
A₁ = Dβ‚‚ + D₃

Priority Encoder

Priority Encoder:
Encodes only the highest priority input even when multiple inputs are active

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Problem with regular encoder:                              β”‚
β”‚  - Incorrect output if two or more inputs are 1             β”‚
β”‚                                                             β”‚
β”‚  Priority Encoder:                                          β”‚
β”‚  - Higher numbered input has higher priority                β”‚
β”‚  - Valid output added (indicates if any input is present)   β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4:2 Priority Encoder:

           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ Aβ‚€
    Dβ‚€ ─────         │───── A₁
    D₁ ─────  4:2    β”‚
    Dβ‚‚ ─────  P.ENC  │───── V (Valid)
    D₃ ─────         β”‚
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Truth Table (X = don't care):
β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”
β”‚ D₃ β”‚ Dβ‚‚ β”‚ D₁ β”‚ Dβ‚€ β”‚ A₁ β”‚ Aβ‚€ β”‚ V β”‚
β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€
β”‚ 0  β”‚ 0  β”‚ 0  β”‚ 0  β”‚ X  β”‚ X  β”‚ 0 β”‚ ← No input
β”‚ 0  β”‚ 0  β”‚ 0  β”‚ 1  β”‚ 0  β”‚ 0  β”‚ 1 β”‚
β”‚ 0  β”‚ 0  β”‚ 1  β”‚ X  β”‚ 0  β”‚ 1  β”‚ 1 β”‚ ← D₁ has priority
β”‚ 0  β”‚ 1  β”‚ X  β”‚ X  β”‚ 1  β”‚ 0  β”‚ 1 β”‚ ← Dβ‚‚ has priority
β”‚ 1  β”‚ X  β”‚ X  β”‚ X  β”‚ 1  β”‚ 1  β”‚ 1 β”‚ ← D₃ has highest priority
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”˜

Logic expressions:
A₁ = D₃ + Dβ‚‚
Aβ‚€ = D₃ + Dβ‚‚'D₁
V  = D₃ + Dβ‚‚ + D₁ + Dβ‚€

Applications of Encoder

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Applications of Encoder                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  1. Keyboard Encoder                                        β”‚
β”‚     - Convert pressed key to scan code                      β”‚
β”‚     - Handle simultaneous keys with priority encoder        β”‚
β”‚                                                             β”‚
β”‚  2. Interrupt Controller                                    β”‚
β”‚     - Select highest priority among multiple interrupt      β”‚
β”‚       requests                                              β”‚
β”‚     - Generate interrupt number                             β”‚
β”‚                                                             β”‚
β”‚  3. Position Encoder                                        β”‚
β”‚     - Extract position information from sensor array        β”‚
β”‚                                                             β”‚
β”‚  4. Data Compression                                        β”‚
β”‚     - Convert one-hot code to binary code                   β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

9. Comparator and Other Circuits

Comparator

1-bit Comparator:
Compares two bits A and B and outputs size relationship

           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ G (A > B)
    A ──────         │───── E (A = B)
    B ──────  COMP   │───── L (A < B)
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Truth Table:
β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
β”‚ A β”‚ B β”‚ G β”‚ E β”‚ L β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€
β”‚ 0 β”‚ 0 β”‚ 0 β”‚ 1 β”‚ 0 β”‚
β”‚ 0 β”‚ 1 β”‚ 0 β”‚ 0 β”‚ 1 β”‚
β”‚ 1 β”‚ 0 β”‚ 1 β”‚ 0 β”‚ 0 β”‚
β”‚ 1 β”‚ 1 β”‚ 0 β”‚ 1 β”‚ 0 β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

Logic expressions:
G = A Β· B'
E = A βŠ™ B = (A βŠ• B)'
L = A' Β· B

n-bit Comparator

4-bit Comparator:

   A[3:0] ────────┐     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ A > B
                  β”œβ”€β”€β”€β”€β”€β”€         β”‚
   B[3:0] β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚  4-bit  │───── A = B
                        β”‚  COMP   β”‚
                        β”‚         │───── A < B
                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Operating principle:
Compare from MSB and decide at first different bit

A = 1011, B = 1010
     β”‚        β”‚
     A₃=B₃    Aβ‚‚=Bβ‚‚    A₁>B₁ β†’ A > B

Logic expression (cascade):
G = A₃B₃' + (Aβ‚ƒβŠ™B₃)(Aβ‚‚Bβ‚‚' + (Aβ‚‚βŠ™Bβ‚‚)(A₁B₁' + (Aβ‚βŠ™B₁)Aβ‚€Bβ‚€'))
E = (Aβ‚ƒβŠ™B₃)(Aβ‚‚βŠ™Bβ‚‚)(Aβ‚βŠ™B₁)(Aβ‚€βŠ™Bβ‚€)
L = E' Β· G'

BCD to 7-Segment Decoder

7-Segment Display:

     ─a─
    β”‚   β”‚
    f   b
    β”‚   β”‚
     ─g─
    β”‚   β”‚
    e   c
    β”‚   β”‚
     ─d─

BCD input (4 bits) β†’ 7 segment outputs

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”€β”€β”€β”€β”€ a
  Dβ‚€ ───             │───── b
  D₁ ───  BCD to     │───── c
  Dβ‚‚ ───  7-Segment  │───── d
  D₃ ───  Decoder    │───── e
       β”‚             │───── f
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”€β”€β”€β”€β”€ g

Partial Truth Table:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  BCD   β”‚    Segments (a-g)          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  0000  β”‚    1 1 1 1 1 1 0  (0)      β”‚
β”‚  0001  β”‚    0 1 1 0 0 0 0  (1)      β”‚
β”‚  0010  β”‚    1 1 0 1 1 0 1  (2)      β”‚
β”‚  0011  β”‚    1 1 1 1 0 0 1  (3)      β”‚
β”‚  0100  β”‚    0 1 1 0 0 1 1  (4)      β”‚
β”‚  0101  β”‚    1 0 1 1 0 1 1  (5)      β”‚
β”‚  0110  β”‚    1 0 1 1 1 1 1  (6)      β”‚
β”‚  0111  β”‚    1 1 1 0 0 0 0  (7)      β”‚
β”‚  1000  β”‚    1 1 1 1 1 1 1  (8)      β”‚
β”‚  1001  β”‚    1 1 1 1 0 1 1  (9)      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Parity Generator/Checker

Parity:
Bit added to data for error detection

Even Parity:
- Add parity bit so total number of 1s is even
- If data has odd number of 1s, P=1; if even, P=0

Odd Parity:
- Add parity bit so total number of 1s is odd

4-bit Even Parity Generator:

   Dβ‚€ β”€β”€β”€β”¬β”€β”€β”€βŠ•β”€β”€β”€β”¬β”€β”€β”€βŠ•β”€β”€β”€β”¬β”€β”€β”€βŠ•β”€β”€β”€ P (Parity bit)
         β”‚       β”‚       β”‚
   D₁ β”€β”€β”€β”˜       β”‚       β”‚
                 β”‚       β”‚
   Dβ‚‚ β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
                         β”‚
   D₃ β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

P = Dβ‚€ βŠ• D₁ βŠ• Dβ‚‚ βŠ• D₃

Example: D = 1011
P = 1 βŠ• 0 βŠ• 1 βŠ• 1 = 1
Transmit: 1011 + 1 = 10111 (number of 1s = 4, even)

10. Practice Problems

Basic Problems

1. Explain the difference between a half adder and a full adder.

2. Calculate 0111 + 0011 in a 4-bit ripple carry adder. Show S and Cβ‚’α΅€β‚œ for each FA.

3. In an 8:1 multiplexer, which input goes to the output when select lines are Sβ‚‚S₁Sβ‚€ = 101?

Design Problems

4. Implement a full adder using only NAND gates. What is the minimum number of gates needed?

5. Implement the following function using only 4:1 MUX.

Y = A'B + AB'C + ABC'

6. Implement the following function using a 3:8 decoder and OR gate.

Y = Ξ£m(0, 2, 5, 7)

Analysis Problems

7. Analyze the operation of the following circuit and create a truth table.

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  A ──── 0       β”‚
       β”‚   MUX   β”œβ”€β”€β”€ Y
  B ──── 1       β”‚
       β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
            β”‚
            A

8. In an 8-bit ripple carry adder where each FA has a 10ns delay, what is the total delay in the worst case?

Application Problems

9. Design a 4-bit adder/subtractor. When Sub input is 0, perform addition; when 1, perform subtraction.

10. Design a circuit that selects the highest priority among 8 interrupt requests using a priority encoder.


Answers **1.** - Half Adder: 2 inputs (A, B) output sum and carry. No carry input from lower bit. - Full Adder: 3 inputs (A, B, Cα΅’β‚™) output sum and carry. Processes carry from lower bit. **2.** 0111 + 0011: - FAβ‚€: 1+1+0 = Sβ‚€=0, Cβ‚€=1 - FA₁: 1+1+1 = S₁=1, C₁=1 - FAβ‚‚: 1+0+1 = Sβ‚‚=0, Cβ‚‚=1 - FA₃: 0+0+1 = S₃=1, Cβ‚’α΅€β‚œ=0 - Result: 01010 (7+3=10) **3.** Sβ‚‚S₁Sβ‚€ = 101 = 5₁₀, so Dβ‚… goes to output. **4.** Full adder can be implemented with 9 NAND gates. **5.** Using A, B as select lines: - Dβ‚€(A=0,B=0) = 0 - D₁(A=0,B=1) = C' - Dβ‚‚(A=1,B=0) = C - D₃(A=1,B=1) = C' **6.** Connect outputs mβ‚€, mβ‚‚, mβ‚…, m₇ of 3:8 decoder to OR gate. **7.** Circuit analysis: - S=A=0: Y=Dβ‚€=A - S=A=1: Y=D₁=B - Therefore Y = A'Β·A + AΒ·B = AΒ·B **8.** In ripple carry adder when carry propagates from LSB to MSB: 8 FA Γ— 10ns = 80ns **9.** 4-bit Adder/Subtractor: - Connect B input through XOR gates with Sub - Sub=0: B unchanged, Cα΅’β‚™=0 (addition) - Sub=1: B inverted, Cα΅’β‚™=1 (subtraction) **10.** Use 8:3 priority encoder: - Dβ‚€~D₇: Interrupt requests (D₇ has highest priority) - Aβ‚‚A₁Aβ‚€: Selected interrupt number - V: Valid interrupt request present

Next Steps


References

to navigate between lessons