Sequential Logic Circuits

Sequential Logic Circuits

Overview

Sequential logic circuits are digital circuits where outputs are determined not only by current inputs but also by previous state (memory). In this lesson, we will learn about basic memory elements such as latches and flip-flops, as well as registers and counters built using them. These form the foundation of core computer components such as CPU registers, memory, and state machines.

Difficulty: ⭐⭐ (Intermediate)


Table of Contents

  1. Characteristics of Sequential Logic Circuits
  2. SR Latch
  3. D Latch
  4. D Flip-Flop
  5. JK Flip-Flop
  6. T Flip-Flop
  7. Registers
  8. Counters
  9. Clock and Timing
  10. Practice Problems

1. Characteristics of Sequential Logic Circuits

Combinational Circuits vs Sequential Circuits

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Circuit Type Comparison                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  Combinational Logic Circuit:                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”                                                β”‚
β”‚  β”‚        β”‚                                                β”‚
β”‚  β”‚ Input ── Comb.   β”œβ”€β”€ Output                             β”‚
β”‚  β”‚        β”‚  Circuitβ”‚                                      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                β”‚
β”‚  Output = f(current inputs)                                 β”‚
β”‚                                                             β”‚
β”‚  Sequential Logic Circuit:                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚  β”‚                                            β”‚            β”‚
β”‚  β”‚ Input ─── Comb.   β”œβ”€β”€ Output                β”‚            β”‚
β”‚  β”‚           Circuit                          β”‚            β”‚
β”‚  β”‚            β”‚                               β”‚            β”‚
β”‚  β”‚            β–Ό                               β”‚            β”‚
β”‚  β”‚        β”Œβ”€β”€β”€β”€β”€β”€β”€β”                           β”‚            β”‚
β”‚  β”‚        β”‚ Memoryβ”‚                           β”‚            β”‚
β”‚  β”‚        β”‚(State)│◄───────────────────────── β”‚           β”‚
β”‚  β”‚        β””β”€β”€β”€β”€β”€β”€β”€β”˜        Feedback           β”‚            β”‚
β”‚  β”‚                                            β”‚            β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β”‚  Output = f(current inputs, current state)                  β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Characteristics of Sequential Circuits

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          Characteristics of Sequential Logic Circuits        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  1. Contains Memory Elements                                β”‚
β”‚     - Latches, flip-flops                                   β”‚
β”‚     - Store previous state                                  β”‚
β”‚                                                             β”‚
β”‚  2. Feedback Path Exists                                    β”‚
β”‚     - Output affects input                                  β”‚
β”‚                                                             β”‚
β”‚  3. Time-dependent Operation                                β”‚
β”‚     - Synchronous: State changes by clock                   β”‚
β”‚     - Asynchronous: State changes immediately by input      β”‚
β”‚                                                             β”‚
β”‚  4. State Transition                                        β”‚
β”‚     - Current state + Input β†’ Next state                   β”‚
β”‚     - Represented by State Diagram                          β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Synchronous vs Asynchronous

Synchronous Sequential Circuit:

        Input ────┐
                  β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”œβ”€β”€β”€β”€β”€          β”œβ”€β”€β”€β”€ Output
                  β”‚    β”‚  Comb.   β”‚
        State ────┼─────  Logic   β”‚
           β–²      β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚      β”‚
           β”‚      β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           └──────┴───── Flip-Flopβ”‚
                  β”‚    β”‚  (State) β”‚
        CLK ──────┴─────          β”‚
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  - State changes only at clock edge
  - Predictable operation
  - Easy design and analysis


Asynchronous Sequential Circuit:

        Input ────┐
                  β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”œβ”€β”€β”€β”€β”€          β”œβ”€β”€β”€β”€ Output
                  β”‚    β”‚  Comb.   β”‚
        State ────┼─────  Logic   β”‚
           β–²      β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚      β”‚
           β”‚      β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           └──────┴─────  Latch   β”‚
                       β”‚  (State) β”‚
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  - Responds immediately to input changes
  - Glitches possible
  - Complex analysis

2. SR Latch

SR Latch Concept

SR Latch (Set-Reset Latch):
Most basic memory element, stores 1 bit

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  S (Set):   Set Q to 1                                      β”‚
β”‚  R (Reset): Set Q to 0                                      β”‚
β”‚  Q:         Current state (output)                          β”‚
β”‚  Q':        Complement of Q                                 β”‚
β”‚                                                             β”‚
β”‚  Operation:                                                 β”‚
β”‚  - S=1, R=0: Q=1 (Set)                                      β”‚
β”‚  - S=0, R=1: Q=0 (Reset)                                    β”‚
β”‚  - S=0, R=0: Q holds (Store)                                β”‚
β”‚  - S=1, R=1: Forbidden                                      β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

NOR Gate SR Latch

SR Latch implemented with NOR gates:

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”
        R ───────────       β”‚
                    β”‚  NOR  β”œβ”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€ Q
              β”Œβ”€β”€β”€β”€β”€β”€       β”‚      β”‚
              β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
              β”‚                    β”‚
              β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”      β”‚
              β”‚     β”‚       β”‚      β”‚
              └──────  NOR  β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€ Q'
                    β”‚       β”‚      β”‚
        S ───────────       β”‚      β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
                         β”‚         β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          Feedback

Logic expressions:
Q  = (R + Q')' = R' Β· Q
Q' = (S + Q)'  = S' Β· Q'

NAND Gate SR Latch

SR Latch implemented with NAND gates (Active-Low):

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”
        S' ──────────       β”‚
                    β”‚ NAND  β”œβ”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€ Q
              β”Œβ”€β”€β”€β”€β”€β”€       β”‚      β”‚
              β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
              β”‚                    β”‚
              β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”      β”‚
              β”‚     β”‚       β”‚      β”‚
              └────── NAND  β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€ Q'
                    β”‚       β”‚      β”‚
        R' ──────────       β”‚      β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
                         β”‚         β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

NAND SR Latch is Active-Low:
- S'=0, R'=1: Q=1 (Set)
- S'=1, R'=0: Q=0 (Reset)
- S'=1, R'=1: Q holds (Store)
- S'=0, R'=0: Forbidden

SR Latch Truth Table

NOR Gate SR Latch Truth Table:

β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ S β”‚ R β”‚  Q(t+1)β”‚          Operation            β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0 β”‚ 0 β”‚  Q(t)  β”‚  Hold (No change)             β”‚
β”‚ 0 β”‚ 1 β”‚   0    β”‚  Reset                        β”‚
β”‚ 1 β”‚ 0 β”‚   1    β”‚  Set                          β”‚
β”‚ 1 β”‚ 1 β”‚   ?    β”‚  Forbidden/Invalid            β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Problem with forbidden state (S=R=1):
1. Both Q and Q' become 0 (Q β‰  Q')
2. Race condition if S, R return to 0 simultaneously
3. Final state is indeterminate

SR Latch Timing Diagram

        β”‚
   S ───┼──┐   β”Œβ”€β”€β”€β”       β”Œβ”€β”€β”€β”
        β”‚  β””β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”˜   └───────────
        β”‚
   R ───┼──────────┐   β”Œβ”€β”€β”€β”
        β”‚          β””β”€β”€β”€β”˜   └───────────────
        β”‚
   Q ───┼──────┐       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚      β””β”€β”€β”€β”€β”€β”€β”€β”˜           └───────
        β”‚
   Q'───┼──┐       β”Œβ”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
        β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚
        └─────────────────────────────────────→ Time
            Set   Reset  Set   Reset

3. D Latch

D Latch Concept

D Latch (Data Latch / Gated D Latch):
Solves forbidden state of SR latch, single data input

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  D (Data):   Data to store                                  β”‚
β”‚  EN (Enable): Gate control signal                           β”‚
β”‚                                                             β”‚
β”‚  Operation:                                                 β”‚
β”‚  - EN=1: Q = D (Transparent)                                β”‚
β”‚  - EN=0: Q holds (Latched)                                  β”‚
β”‚                                                             β”‚
β”‚  D latch passes input through when Enable is 1              β”‚
β”‚  Also called "Transparent Latch"                            β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

D Latch Circuit

D Latch Circuit (based on SR latch):

                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”
        D ──────┬───────       β”‚
                β”‚      β”‚  AND  β”œβ”€β”€β”€β”€β”€β”€β”€β”€ S ───┐
        EN ─────┼───────       β”‚              β”‚
                β”‚      β””β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
                β”‚                             β”‚
                β”‚      β”Œβ”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”
                β”‚      β”‚       β”‚         β”‚         β”‚
                └─[NOT]─  AND  β”œβ”€β”€β”€β”€β”€β”€β”€β”€ R β”‚  SR    β”œβ”€β”€ Q
                       β”‚       β”‚           β”‚ Latch  β”‚
        EN ─────────────       β”‚           β”‚        β”œβ”€β”€ Q'
                       β””β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Logic expressions:
S = D Β· EN
R = D' Β· EN

When EN=1:
- D=1 β†’ S=1, R=0 β†’ Q=1
- D=0 β†’ S=0, R=1 β†’ Q=0
- i.e., Q = D

When EN=0:
- S=0, R=0 β†’ Q holds

D Latch Truth Table

D Latch Truth Table:

β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ EN β”‚ D β”‚  Q(t+1)β”‚          Operation            β”‚
β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0  β”‚ 0 β”‚  Q(t)  β”‚  Hold                         β”‚
β”‚ 0  β”‚ 1 β”‚  Q(t)  β”‚  Hold                         β”‚
β”‚ 1  β”‚ 0 β”‚   0    β”‚  Store D (Q=0)                β”‚
β”‚ 1  β”‚ 1 β”‚   1    β”‚  Store D (Q=1)                β”‚
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Simply:
EN=0: Q(t+1) = Q(t)    (Hold)
EN=1: Q(t+1) = D       (Pass through)

D Latch Symbol

D Latch Symbol:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   D ──── D       Q β”œβ”€β”€β”€ Q
        β”‚           β”‚
   EN ─── EN     Q' β”œβ”€β”€β”€ Q'
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Or:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   D ──── D       Q β”œβ”€β”€β”€ Q
        β”‚    >o     β”‚
   EN ───           β”œβ”€β”€β”€ Q'
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        (Level-triggered)

D Latch Timing

        β”‚
   EN ──┼──┐       β”Œβ”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
        β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚     ↑ Transparent   ↑ Latched
        β”‚
   D ───┼────┐   β”Œβ”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚    β””β”€β”€β”€β”˜   β””β”€β”€β”€β”˜         └───────────
        β”‚
   Q ───┼────┐   β”Œβ”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
        β”‚    β””β”€β”€β”€β”˜       β””β”€β”€β”€β”˜
        β”‚
        └─────────────────────────────────────────→ Time

EN=1 (Transparent): Q follows D
EN=0 (Latched): Q holds last D value

4. D Flip-Flop

Flip-Flop vs Latch

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Latch vs Flip-Flop                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  Latch:                                                     β”‚
β”‚  - Level-triggered                                          β”‚
β”‚  - Responds to input while Enable is 1                      β”‚
β”‚  - Transparent state exists                                 β”‚
β”‚                                                             β”‚
β”‚  Flip-Flop:                                                 β”‚
β”‚  - Edge-triggered                                           β”‚
β”‚  - Samples input only at clock edge moment                  β”‚
β”‚  - More predictable operation                               β”‚
β”‚                                                             β”‚
β”‚      Level-triggered         Edge-triggered                 β”‚
β”‚         (Latch)              (Flip-Flop)                    β”‚
β”‚          β”‚                      β”‚                           β”‚
β”‚   EN ────┼──┐    β”Œβ”€β”€β”€β”€     CLK ─┼──┐    β”Œβ”€β”€β”€β”€               β”‚
β”‚          β”‚  β””β”€β”€β”€β”€β”˜              β”‚  β””β”€β”€β”€β”€β”˜                   β”‚
β”‚          β”‚  ↑~~~~↑              β”‚  ↑                        β”‚
β”‚          β”‚  Response period     β”‚  Only responds at moment  β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

D Flip-Flop Concept

D Flip-Flop:
Stores D value to Q only at rising/falling edge of clock

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Operation:                                                 β”‚
β”‚  - Rising edge trigger: Store D to Q when CLK goes 0β†’1      β”‚
β”‚  - Falling edge trigger: Store D to Q when CLK goes 1β†’0     β”‚
β”‚  - Q holds at all other times                               β”‚
β”‚                                                             β”‚
β”‚  Characteristic equation: Q(t+1) = D                        β”‚
β”‚                          (at clock edge)                    β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Master-Slave Structure

D Flip-Flop (Master-Slave structure):

         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                                         β”‚
   D ────┼────┬───────┐                           β”‚
         β”‚    β”‚       β”‚                           β”‚
         β”‚    β”‚   β”Œβ”€β”€β”€β”΄β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”        β”‚
         β”‚    β”‚   β”‚       β”‚     β”‚       β”‚        β”‚
         β”‚    └──── D   Q β”œβ”€β”€β”€β”€β”€β”€ D   Q β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€ Q
         β”‚        β”‚Master β”‚     β”‚Slave  β”‚        β”‚
   CLK ──┼───────── EN    β”‚  β”Œβ”€β”€β”€ EN    β”‚        β”‚
         β”‚        β””β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
         β”‚                   β”‚                    β”‚
         β”‚        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚
         β”‚        β”‚  [NOT]                       β”‚
         β”‚        β”‚                              β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Operation:
1. CLK=0: Master latch transparent, Slave latch fixed
   - D passes to Master's Q
   - Slave holds previous value

2. CLK=1: Master latch fixed, Slave latch transparent
   - Master holds value
   - Master's value passes to Slave (final Q)

Result: D passes to Q at rising edge

D Flip-Flop Symbol

Rising edge-triggered D Flip-Flop:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   D ──── D       Q β”œβ”€β”€β”€ Q
        β”‚           β”‚
   CLK ── >      Q' β”œβ”€β”€β”€ Q'
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          ↑
        Triangle = Edge-triggered (rising)


Falling edge-triggered D Flip-Flop:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   D ──── D       Q β”œβ”€β”€β”€ Q
        β”‚           β”‚
   CLK ── >o     Q' β”œβ”€β”€β”€ Q'
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          ↑
        Circle = Inverted (falling edge)

D Flip-Flop Truth Table

Rising edge-triggered D Flip-Flop Truth Table:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  CLK  β”‚ D β”‚  Q(t+1) β”‚        Operation          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   0   β”‚ X β”‚   Q(t)  β”‚  Hold                     β”‚
β”‚   1   β”‚ X β”‚   Q(t)  β”‚  Hold                     β”‚
β”‚   ↓   β”‚ X β”‚   Q(t)  β”‚  Hold (falling edge)      β”‚
β”‚   ↑   β”‚ 0 β”‚    0    β”‚  Store D (rising edge)    β”‚
β”‚   ↑   β”‚ 1 β”‚    1    β”‚  Store D (rising edge)    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

↑ = Rising edge (0β†’1)
↓ = Falling edge (1β†’0)
X = Don't care

D Flip-Flop Timing

        β”‚
  CLK ──┼──┐  β”Œβ”€β”€β”  β”Œβ”€β”€β”  β”Œβ”€β”€β”  β”Œβ”€β”€β”  β”Œβ”€β”€β”
        β”‚  β””β”€β”€β”˜  β””β”€β”€β”˜  β””β”€β”€β”˜  β””β”€β”€β”˜  β””β”€β”€β”˜  └──
        β”‚     ↑     ↑     ↑     ↑     ↑
        β”‚
   D ───┼───────┐        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜             └───
        β”‚
   Q ───┼───────────┐        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
        β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚        ↑        ↑        ↑
        β”‚     Rising   Rising   Rising
        β”‚      Edge     Edge     Edge
        └─────────────────────────────────────→ Time

Q stores D value at rising edge moment
Holds until next rising edge

Reset/Preset Function

D Flip-Flop with Asynchronous Reset/Preset:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  PRE ─── PR            Q β”œβ”€β”€β”€ Q
        β”‚                 β”‚
   D ──── D               β”‚
        β”‚                 β”‚
  CLK ─── >            Q' β”œβ”€β”€β”€ Q'
        β”‚                 β”‚
  CLR ─── CLR             β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Operation:
- CLR=1 (Active): Q=0 (Asynchronous reset)
- PRE=1 (Active): Q=1 (Asynchronous preset)
- CLR=0, PRE=0: Normal operation (store D at clock edge)

Truth Table:
β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ CLR β”‚ PRE β”‚  CLK  β”‚ D β”‚  Q     β”‚
β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  1  β”‚  0  β”‚   X   β”‚ X β”‚   0    β”‚ ← Async reset
β”‚  0  β”‚  1  β”‚   X   β”‚ X β”‚   1    β”‚ ← Async preset
β”‚  1  β”‚  1  β”‚   X   β”‚ X β”‚   ?    β”‚ ← Forbidden
β”‚  0  β”‚  0  β”‚   ↑   β”‚ D β”‚   D    β”‚ ← Normal operation
β”‚  0  β”‚  0  β”‚  0/1  β”‚ X β”‚  Q(t)  β”‚ ← Hold
β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5. JK Flip-Flop

JK Flip-Flop Concept

JK Flip-Flop:
Universal flip-flop that replaces SR's forbidden state with "toggle"

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  J (Jump):  Similar to Set                                  β”‚
β”‚  K (Kill):  Similar to Reset                                β”‚
β”‚                                                             β”‚
β”‚  Operation (at clock edge):                                 β”‚
β”‚  - J=0, K=0: Q holds (No change)                            β”‚
β”‚  - J=0, K=1: Q=0 (Reset)                                    β”‚
β”‚  - J=1, K=0: Q=1 (Set)                                      β”‚
β”‚  - J=1, K=1: Q toggles (Q' = Q(t)')                         β”‚
β”‚                                                             β”‚
β”‚  Characteristic equation: Q(t+1) = JΒ·Q' + K'Β·Q              β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

JK Flip-Flop Truth Table

JK Flip-Flop Truth Table:

β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ J β”‚ K β”‚  Q(t+1) β”‚          Operation            β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0 β”‚ 0 β”‚   Q(t)  β”‚  Hold                         β”‚
β”‚ 0 β”‚ 1 β”‚    0    β”‚  Reset                        β”‚
β”‚ 1 β”‚ 0 β”‚    1    β”‚  Set                          β”‚
β”‚ 1 β”‚ 1 β”‚  Q(t)'  β”‚  Toggle                       β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Expanded Truth Table:
β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ J β”‚ K β”‚  Q(t) β”‚  Q(t+1) β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0 β”‚ 0 β”‚   0   β”‚    0    β”‚
β”‚ 0 β”‚ 0 β”‚   1   β”‚    1    β”‚
β”‚ 0 β”‚ 1 β”‚   0   β”‚    0    β”‚
β”‚ 0 β”‚ 1 β”‚   1   β”‚    0    β”‚
β”‚ 1 β”‚ 0 β”‚   0   β”‚    1    β”‚
β”‚ 1 β”‚ 0 β”‚   1   β”‚    1    β”‚
β”‚ 1 β”‚ 1 β”‚   0   β”‚    1    β”‚
β”‚ 1 β”‚ 1 β”‚   1   β”‚    0    β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

JK Flip-Flop Symbol

JK Flip-Flop Symbol:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   J ──── J       Q β”œβ”€β”€β”€ Q
        β”‚           β”‚
  CLK ─── >         β”‚
        β”‚           β”‚
   K ──── K      Q' β”œβ”€β”€β”€ Q'
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

JK Flip-Flop Circuit

JK Flip-Flop (SR-based):

                β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   J ─────────┬──       β”‚
              β”‚ β”‚  AND  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ S ───┐
   Q' ────────┼──       β”‚               β”‚
              β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚
              β”‚                    β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”
              β”‚                    β”‚         β”‚
              β”‚                    β”‚   SR    β”œβ”€β”€ Q
   CLK ───────┼─────────────────────  F/F    β”‚
              β”‚                    β”‚         β”œβ”€β”€ Q'
              β”‚                    β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
              β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”               β”‚
   K ─────────┼──       β”‚               β”‚
              β”‚ β”‚  AND  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ R β”€β”€β”€β”˜
   Q ─────────┴──       β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”˜

S = J Β· Q'
R = K Β· Q

When J=K=1:
- If Q=0: S=1, R=0 β†’ Q=1
- If Q=1: S=0, R=1 β†’ Q=0
β†’ Toggle!

6. T Flip-Flop

T Flip-Flop Concept

T Flip-Flop (Toggle Flip-Flop):
Flip-flop specialized for toggle function

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Operation (at clock edge):                                 β”‚
β”‚  - T=0: Q holds                                             β”‚
β”‚  - T=1: Q toggles                                           β”‚
β”‚                                                             β”‚
β”‚  Characteristic equation: Q(t+1) = T βŠ• Q(t) = TΒ·Q' + T'Β·Q   β”‚
β”‚                                                             β”‚
β”‚  Use: Core component of counters                            β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

T Flip-Flop Truth Table

T Flip-Flop Truth Table:

β”Œβ”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ T β”‚  Q(t+1) β”‚          Operation            β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0 β”‚   Q(t)  β”‚  Hold                         β”‚
β”‚ 1 β”‚  Q(t)'  β”‚  Toggle                       β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Expanded:
β”Œβ”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ T β”‚  Q(t) β”‚  Q(t+1) β”‚
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0 β”‚   0   β”‚    0    β”‚
β”‚ 0 β”‚   1   β”‚    1    β”‚
β”‚ 1 β”‚   0   β”‚    1    β”‚
β”‚ 1 β”‚   1   β”‚    0    β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

T Flip-Flop Implementation

Implementing T Flip-Flop with JK Flip-Flop:

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   T ──── J       Q β”œβ”€β”€β”€ Q
        β”‚           β”‚
  CLK ─── >         β”‚
        β”‚           β”‚
   T ──── K      Q' β”œβ”€β”€β”€ Q'
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Connect J = K = T


Implementing T Flip-Flop with D Flip-Flop:

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”
   T ────────────────       β”‚
                    β”‚  XOR  β”œβ”€β”€β”€β”
   Q ──────┬─────────       β”‚   β”‚
           β”‚        β””β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
           β”‚                    β”‚
           β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
           β”‚     β”‚          β”‚   β”‚
           └────── D      Q β”œβ”€β”€β”€β”΄β”€β”€β”€ Q
                 β”‚          β”‚
   CLK ─────────── >     Q' β”œβ”€β”€β”€β”€β”€β”€β”€ Q'
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

D = T βŠ• Q

Flip-Flop Comparison

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Flip-Flop Comparison                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   Type    β”‚               Characteristics                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚           β”‚  Q(t+1) = D                                       β”‚
β”‚     D     β”‚  - Stores input directly                          β”‚
β”‚           β”‚  - Mainly used in registers                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚           β”‚  Q(t+1) = JΒ·Q' + K'Β·Q                             β”‚
β”‚    JK     β”‚  - Most versatile                                 β”‚
β”‚           β”‚  - Can be converted to any other flip-flop        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚           β”‚  Q(t+1) = T βŠ• Q                                   β”‚
β”‚     T     β”‚  - Toggle function                                β”‚
β”‚           β”‚  - Mainly used in counters                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚           β”‚  Q(t+1) = S + R'Β·Q (condition SΒ·R=0)              β”‚
β”‚    SR     β”‚  - Basic latch                                    β”‚
β”‚           β”‚  - Forbidden state exists (S=R=1)                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Conversions:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Conversion  β”‚                    Method                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  D β†’ JK     β”‚  J = D, K = D'                                  β”‚
β”‚  D β†’ T      β”‚  T = D βŠ• Q                                      β”‚
β”‚  JK β†’ D     β”‚  D = J                                          β”‚
β”‚  JK β†’ T     β”‚  J = K = T                                      β”‚
β”‚  T β†’ JK     β”‚  J = K = T                                      β”‚
β”‚  T β†’ D      β”‚  D = T βŠ• Q                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

7. Registers

Register Concept

Register:
Group of flip-flops that stores multiple bits of data simultaneously

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Uses:                                                      β”‚
β”‚  - Temporary storage of data inside CPU                     β”‚
β”‚  - Data transfer (parallel/serial conversion)               β”‚
β”‚  - Address storage                                          β”‚
β”‚  - Instruction storage                                      β”‚
β”‚                                                             β”‚
β”‚  Types:                                                     β”‚
β”‚  - Parallel In/Parallel Out (PIPO)                          β”‚
β”‚  - Serial In/Serial Out (SISO)                              β”‚
β”‚  - Serial In/Parallel Out (SIPO)                            β”‚
β”‚  - Parallel In/Serial Out (PISO)                            β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4-bit Parallel Register

4-bit Parallel In/Parallel Out Register:

        D₃         Dβ‚‚         D₁         Dβ‚€
         β”‚          β”‚          β”‚          β”‚
         β–Ό          β–Ό          β–Ό          β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  D  Q  β”‚ β”‚  D  Q  β”‚ β”‚  D  Q  β”‚ β”‚  D  Q  β”‚
    β”‚        β”‚ β”‚        β”‚ β”‚        β”‚ β”‚        β”‚
CLK── >      │── >      │── >      │── >      β”‚
    β”‚        β”‚ β”‚        β”‚ β”‚        β”‚ β”‚        β”‚
    β”‚     Q' β”‚ β”‚     Q' β”‚ β”‚     Q' β”‚ β”‚     Q' β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚          β”‚          β”‚          β”‚
         β–Ό          β–Ό          β–Ό          β–Ό
        Q₃         Qβ‚‚         Q₁         Qβ‚€

Operation:
- At clock edge, D₃Dβ‚‚D₁Dβ‚€ are simultaneously stored to Q₃Qβ‚‚Q₁Qβ‚€
- Load function only

Register with Load Function

4-bit Register with Load Control:

                 D₃                Dβ‚€
                  β”‚                 β”‚
                  β–Ό                 β–Ό
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”
              β”‚ 0     β”‚         β”‚ 0     β”‚
   Load ───────  MUX  β”‚  ...    β”‚  MUX  β”‚
              β”‚ 1     β”‚         β”‚ 1     β”‚
        β”Œβ”€β”€β”€β”€β”€β”€       β”‚   β”Œβ”€β”€β”€β”€β”€β”€       β”‚
        β”‚     β””β”€β”€β”€β”¬β”€β”€β”€β”˜   β”‚     β””β”€β”€β”€β”¬β”€β”€β”€β”˜
        β”‚         β”‚       β”‚         β”‚
        β”‚         β–Ό       β”‚         β–Ό
        β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚    β”‚  D  Q  β”‚   β”‚    β”‚  D  Q  β”‚
        β”‚    β”‚        β”‚   β”‚    β”‚        β”‚
   CLK ─┼───── >      │───┼───── >      β”‚
        β”‚    β”‚        β”‚   β”‚    β”‚        β”‚
        β”‚    β”‚     Q' β”‚   β”‚    β”‚     Q' β”‚
        β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚         β”‚       β”‚         β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚                 β”‚
                  β–Ό                 β–Ό
                 Q₃                Qβ‚€

Operation:
- Load=0: Q holds (MUX selects Q)
- Load=1: Store D (MUX selects D)

Shift Register

4-bit Serial In/Parallel Out Shift Register (SIPO):

                                                    Serial Out
                                                         ↑
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
   β”‚  D  Q  │───→│  D  Q  │───→│  D  Q  │───→│  D  Q  β”‚β”€β”˜
   β”‚        β”‚    β”‚        β”‚    β”‚        β”‚    β”‚        β”‚
   β”‚ >      β”‚    β”‚ >      β”‚    β”‚ >      β”‚    β”‚ >      β”‚
   β”‚        β”‚    β”‚        β”‚    β”‚        β”‚    β”‚        β”‚
   β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
       β”‚             β”‚             β”‚             β”‚
       β–²             β”‚             β”‚             β”‚
  Serial In         CLK           CLK           CLK
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Operation (at each clock edge):
- Data shifts one position from left to right
- New bit enters via Serial In

Example (initial value 0000, input 1101):
CLK  Serial_In  Q₃Qβ‚‚Q₁Qβ‚€
 0      -       0 0 0 0
 1      1       1 0 0 0
 2      1       1 1 0 0
 3      0       0 1 1 0
 4      1       1 0 1 1

Bidirectional Shift Register

Bidirectional Shift Register:

              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚                                     β”‚
 Left_In ─────┼─┐                               β”Œβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€ Right_Out
              β”‚ β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”‚
              β”‚ └──── 00      β”‚   β”‚         β”‚   β”‚   β”‚
              β”‚     β”‚ 01  MUX β”œβ”€β”€β”€β”€ D     Q β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”
 Right_In ────┼────── 10      β”‚   β”‚         β”‚   β”‚   β”‚ β”‚
              β”‚ β”Œβ”€β”€β”€β”€ 11      β”‚   β”‚ >       β”‚   β”‚   β”‚ β”‚
              β”‚ β”‚   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   β”‚ β”‚
              β”‚ β”‚        β”‚              ↑       β”‚   β”‚ β”‚
              β”‚ β”‚     S₁ Sβ‚€            CLK      β”‚   β”‚ β”‚
              β”‚ β”‚                               β”‚   β”‚ β”‚
              β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚ β”‚
              β”‚                                     β”‚ β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”˜
                                                    β”‚
                                                Right_In

Mode selection (S₁Sβ‚€):
- 00: Hold
- 01: Right shift
- 10: Left shift
- 11: Parallel load

8. Counters

Counter Concept

Counter:
Sequential circuit that counts clock pulses

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Types:                                                     β”‚
β”‚  - Asynchronous Counter (Ripple Counter): Simple but slow   β”‚
β”‚  - Synchronous Counter: Fast                                β”‚
β”‚                                                             β”‚
β”‚  Operation:                                                 β”‚
β”‚  - Up Counter: 0, 1, 2, 3, ...                             β”‚
β”‚  - Down Counter: 7, 6, 5, 4, ...                           β”‚
β”‚  - Up/Down Counter                                          β”‚
β”‚                                                             β”‚
β”‚  Modulus:                                                   β”‚
β”‚  - MOD-n counter: Counts from 0 to n-1                      β”‚
β”‚  - n-bit counter: Counts from 0 to 2ⁿ-1 (MOD-2ⁿ)           β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Asynchronous Counter (Ripple Counter)

3-bit Asynchronous Up Counter:

              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”
   CLK ──────── T    Q β”œβ”€β”€β”€β”€β”€β”€β”€ T    Q β”œβ”€β”€β”€β”€β”€β”€β”€ T    Q β”œ
              β”‚        β”‚      β”‚        β”‚      β”‚        β”‚
      1 ───────        β”‚   1───        β”‚   1───        β”‚
              β”‚     Q' β”‚      β”‚     Q' β”‚      β”‚     Q' β”‚
              β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
                  β”‚               β”‚               β”‚
                  Qβ‚€              Q₁              Qβ‚‚
                 (LSB)                           (MSB)

Operation:
- Each T flip-flop has T=1 (always toggles)
- Qβ‚€ operates directly from CLK
- Q₁ operates from Qβ‚€ falling edge
- Qβ‚‚ operates from Q₁ falling edge

Timing:
        β”‚
  CLK ──┼─┐ ┐ ┐ ┐ ┐ ┐ ┐ ┐ ┐
        β”‚ β””β”€β”˜ β””β”€β”˜ β””β”€β”˜ β””β”€β”˜ β””β”€β”˜
        β”‚
   Qβ‚€ ──┼───┐   β”Œβ”€β”€β”€β”   β”Œβ”€β”€β”€β”   β”Œβ”€β”€β”€
        β”‚   β””β”€β”€β”€β”˜   β””β”€β”€β”€β”˜   β””β”€β”€β”€β”˜
        β”‚
   Q₁ ──┼───────┐       β”Œβ”€β”€β”€β”€β”€β”€β”€β”
        β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”˜       └───
        β”‚
   Qβ‚‚ ──┼───────────────┐
        β”‚               └───────────
        β”‚
Count:  0   1   2   3   4   5   6   7   0...

Problems with Asynchronous Counter

Ripple Delay:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Delay accumulates through each flip-flop                   β”‚
β”‚                                                             β”‚
β”‚  4-bit counter example (0111 β†’ 1000 transition):            β”‚
β”‚                                                             β”‚
β”‚     Q₃  Qβ‚‚  Q₁  Qβ‚€                                          β”‚
β”‚      0   1   1   1  (7)                                     β”‚
β”‚           ↓   ↓   ↓                                         β”‚
β”‚      0   1   1   0  (6)  ← Glitch!                          β”‚
β”‚           ↓   ↓                                             β”‚
β”‚      0   1   0   0  (4)  ← Glitch!                          β”‚
β”‚           ↓                                                 β”‚
β”‚      0   0   0   0  (0)  ← Glitch!                          β”‚
β”‚                                                             β”‚
β”‚      1   0   0   0  (8)  ← Final state                      β”‚
β”‚                                                             β”‚
β”‚  Total delay = n Γ— (flip-flop delay)                        β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Synchronous Counter

3-bit Synchronous Up Counter:

                   AND
                    β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚          β”‚          β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ T    Q β”œβ”€β”€β”€ T    Q β”œβ”€β”€β”€ T    Q β”œ
  β”‚        β”‚  β”‚        β”‚  β”‚        β”‚
1──        β”‚  β”‚        β”‚  β”‚        β”‚
  β”‚     Q' β”‚  β”‚     Q' β”‚  β”‚     Q' β”‚
  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
      β”‚  ↑        β”‚  ↑        β”‚  ↑
     Qβ‚€ CLK      Q₁ CLK      Qβ‚‚ CLK
                      β”‚
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚                     β”‚
   CLK β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Logic:
Tβ‚€ = 1                    (always toggle)
T₁ = Qβ‚€                   (toggle when Qβ‚€=1)
Tβ‚‚ = Qβ‚€ Β· Q₁              (toggle when Qβ‚€=Q₁=1)

Operation:
- All flip-flops operate simultaneously with same CLK
- No glitches
- Can operate at high speed

MOD-N Counter

MOD-6 Counter (counts 0~5):

3-bit counter + reset logic

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ D    Q β”œβ”€β”€β”€ D    Q β”œβ”€β”€β”€ D    Q β”œ
  β”‚        β”‚  β”‚        β”‚  β”‚        β”‚
  β”‚        β”‚  β”‚        β”‚  β”‚        β”‚
  β”‚     Q' β”‚  β”‚     Q' β”‚  β”‚     Q' β”‚
  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
      β”‚           β”‚           β”‚
      Qβ‚€          Q₁          Qβ‚‚
      β”‚           β”‚           β”‚
      β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
        β”Œβ”€β”€β”€β”΄β”€β”€β”€β”
        β”‚       β”‚
        β”‚  AND  β”œβ”€β”€β”€β†’ Reset (Detect Qβ‚‚Β·Q₁ = 6)
        β”‚       β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”˜

Operation:
- 0, 1, 2, 3, 4, 5, 0, 1, 2, ...
- Resets to 0 immediately when reaches 6 (110)

Or design with sequential logic:
States: 0β†’1β†’2β†’3β†’4β†’5β†’0...

Up/Down Counter

Synchronous Up/Down Counter:

Determines count direction based on Up/Down control signal

             Up/Down
                β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”
        β”‚       β”‚       β”‚
   β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”   β”‚   β”Œβ”€β”€β”€β”΄β”€β”€β”€β”€β”
   β”‚ Qβ‚€     β”‚   β”‚   β”‚    Qβ‚€' β”‚
   β”‚    AND β”‚   β”‚   β”‚ AND    β”‚
   β”‚ Up     β”‚   β”‚   β”‚   Down β”‚
   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”˜   β”‚   β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
        β”‚       β”‚       β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
            β”Œβ”€β”€β”€β”΄β”€β”€β”€β”
            β”‚  OR   β”œβ”€β”€β”€β”€β†’ T₁
            β””β”€β”€β”€β”€β”€β”€β”€β”˜

Logic:
Up=1:   T₁ = Qβ‚€ (toggle when previous bit is 1)
Down=1: T₁ = Qβ‚€' (toggle when previous bit is 0)

9. Clock and Timing

Clock Signal

Clock:
Periodic signal controlling timing of synchronous circuits

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Clock waveform:                                            β”‚
β”‚                                                             β”‚
β”‚       β”Œβ”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”                 β”‚
β”‚       β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚                 β”‚
β”‚   β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”˜    └────             β”‚
β”‚       β”‚    β”‚    β”‚                                          β”‚
β”‚       β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€                                          β”‚
β”‚       β”‚    β”‚    β”‚                                          β”‚
β”‚       T_H  T_L  T (Period)                                 β”‚
β”‚                                                             β”‚
β”‚  - Period (T): Time of one cycle                           β”‚
β”‚  - Frequency (f): f = 1/T                                  β”‚
β”‚  - Duty cycle: T_H / T Γ— 100%                              β”‚
β”‚                                                             β”‚
β”‚  Example: 1GHz clock                                        β”‚
β”‚  - T = 1ns (nanosecond)                                    β”‚
β”‚  - 1 billion cycles per second                             β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Setup Time and Hold Time

Flip-Flop Timing Parameters:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Setup Time (t_su):                                         β”‚
β”‚  - Minimum time input must be stable before clock edge     β”‚
β”‚                                                             β”‚
β”‚  Hold Time (t_h):                                           β”‚
β”‚  - Minimum time input must be maintained after clock edge  β”‚
β”‚                                                             β”‚
β”‚  Propagation Delay (t_pd):                                  β”‚
β”‚  - Time from clock edge to output change                   β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Timing Diagram:

        │←──t_su──→│←t_hβ†’β”‚
        β”‚          β”‚     β”‚
   D ───┼───┐      β”‚     β”‚
        β”‚   └──────┼─────┼─────────
        β”‚          β”‚     β”‚
        β”‚          β”‚ ↑   β”‚
  CLK ──┼──────────┼─┼───┼─────────
        β”‚          β”‚ β”‚   β”‚
        β”‚          β”‚ β”‚   β”‚
        β”‚          │←t_pdβ†’β”‚
   Q ───┼──────────┼─────┼───┐
        β”‚          β”‚     β”‚   └─────
        β”‚
        └──────────────────────────→ Time

Timing Violations

Setup Time Violation:

        │←t_suβ†’β”‚   (required)
        β”‚      β”‚
   D ───┼──────┼──────┐
        β”‚  ↑   β”‚      └─────
        β”‚  β”‚   β”‚
        β”‚  Actual change (late!)
        β”‚      β”‚
  CLK ──┼──────┼──────────────
        β”‚      β”‚ ↑
               Clock edge

Result: Output indeterminate (metastable state possible)


Hold Time Violation:

        β”‚      │←t_hβ†’β”‚  (required)
        β”‚      β”‚     β”‚
   D ───┼──────┼─────┼┐
        β”‚      β”‚     │└─────
        β”‚      β”‚  ↑
        β”‚      β”‚  Actual change (early!)
        β”‚      β”‚
  CLK ──┼──────┼──────────────
        β”‚      β”‚ ↑
               Clock edge

Result: Either previous or new input may be sampled

Maximum Clock Frequency

Maximum Operating Frequency Calculation:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚  β”‚ FF₁    β”‚         β”‚  Comb.   β”‚         β”‚ FFβ‚‚    β”‚        β”‚
β”‚  β”‚        β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  Logic   β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€        β”‚        β”‚
β”‚  β”‚      Q β”‚         β”‚          β”‚         β”‚ D      β”‚        β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜        β”‚
β”‚       β”‚                                      β”‚             β”‚
β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚
β”‚                      β”‚                                     β”‚
β”‚  CLK ────────────────┴─────────────────────────            β”‚
β”‚                                                             β”‚
β”‚  Minimum clock period:                                     β”‚
β”‚  T_min = t_pd(FF₁) + t_comb + t_su(FFβ‚‚)                    β”‚
β”‚                                                             β”‚
β”‚  Maximum frequency:                                         β”‚
β”‚  f_max = 1 / T_min                                         β”‚
β”‚                                                             β”‚
β”‚  Example:                                                   β”‚
β”‚  t_pd = 2ns, t_comb = 5ns, t_su = 1ns                      β”‚
β”‚  T_min = 2 + 5 + 1 = 8ns                                   β”‚
β”‚  f_max = 1 / 8ns = 125MHz                                  β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Metastability

Metastable State:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Unstable state occurring on setup/hold time violation      β”‚
β”‚                                                             β”‚
β”‚  Normal state:           Metastable state:                  β”‚
β”‚                                                             β”‚
β”‚      1 ──●──             1 ──          ●                   β”‚
β”‚          β”‚                   β•²        β•±                    β”‚
β”‚          β”‚                    ╲●●●●●╱                      β”‚
β”‚          β”‚                         β”‚                       β”‚
β”‚      0 ──┴──             0 ──      β”‚                       β”‚
β”‚                                    Indeterminate            β”‚
β”‚                                                             β”‚
β”‚  Danger:                                                    β”‚
β”‚  - Output at intermediate value for indeterminate time     β”‚
β”‚  - Next stage cannot determine if 0 or 1                   β”‚
β”‚  - System malfunction possible                              β”‚
β”‚                                                             β”‚
β”‚  Solution:                                                  β”‚
β”‚  - Use synchronizer circuits                                β”‚
β”‚  - Design timing with sufficient margin                     β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

10. Practice Problems

Basic Problems

1. Explain the difference between a latch and a flip-flop.

2. Write the characteristic equation of a D flip-flop and explain its operation.

3. Explain the operation when J=K=1 in a JK flip-flop.

Analysis Problems

4. Analyze the operation of the following circuit and create a state transition table.

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   D ──── D       Q β”œβ”€β”€β”€β”¬β”€β”€β”€ Q
        β”‚           β”‚   β”‚
  CLK ─── >      Q' β”œβ”€β”€β”€β”Όβ”€β”€β”€ Q'
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
              ↑         β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5. Draw a timing diagram for a 4-bit ripple counter. Initial state is 0000.

6. Explain the operation of the following register. Initial value is 0000, input sequence is 1, 0, 1, 1.

4-bit right shift register (serial input)

Design Problems

7. Implement a T flip-flop using only D flip-flops.

8. Design a MOD-5 synchronous counter. (0, 1, 2, 3, 4, 0, ...)

9. Design a 4-bit bidirectional shift register. (Left, Right, Hold modes)

Timing Problems

10. Calculate the maximum clock frequency given the following conditions. - Flip-flop propagation delay: 5ns - Combinational circuit delay: 15ns - Setup time: 3ns - Hold time: 2ns


Answers **1.** - Latch: Level-triggered, responds to input while Enable is active (transparent) - Flip-flop: Edge-triggered, samples input only at clock edge moment **2.** Q(t+1) = D (at clock edge). At the rising (or falling) edge of the clock, store D input value to Q and hold until the next edge. **3.** When J=K=1, Q toggles. i.e., Q(t+1) = Q(t)'. If currently 0, becomes 1; if 1, becomes 0. **4.** The circuit is a D flip-flop with D input connected to Q'. This operates identically to a T flip-flop, toggling at every clock edge. State transition: 0β†’1β†’0β†’1β†’... **5.**
CLK: _|β€Ύ|_|β€Ύ|_|β€Ύ|_|β€Ύ|_|β€Ύ|_|β€Ύ|_|β€Ύ|_|β€Ύ|_
Qβ‚€:  __|β€Ύβ€Ύ|__|β€Ύβ€Ύ|__|β€Ύβ€Ύ|__|β€Ύβ€Ύ|__|β€Ύβ€Ύ|__
Q₁:  ____|β€Ύβ€Ύβ€Ύβ€Ύ|____|β€Ύβ€Ύβ€Ύβ€Ύ|____|β€Ύβ€Ύβ€Ύβ€Ύ|__
Qβ‚‚:  ________|β€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύ|________|β€Ύβ€Ύβ€Ύβ€Ύ
Q₃:  ________________|β€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύβ€Ύ
**6.** Right shift operation: - Initial: 0000 - Input 1: 1000 - Input 0: 0100 - Input 1: 1010 - Input 1: 1101 **7.** T flip-flop with D flip-flop: - D = T XOR Q - T=0: D=Q (hold) - T=1: D=Q' (toggle) **8.** MOD-5 counter (using JK flip-flops): - States: 000β†’001β†’010β†’011β†’100β†’000 - Jβ‚€=1, Kβ‚€=1 (always toggle) - J₁=Qβ‚€Β·Qβ‚‚', K₁=Qβ‚€ - Jβ‚‚=Qβ‚€Β·Q₁, Kβ‚‚=Qβ‚€ **9.** Bidirectional shift register: - Place MUX in front of each flip-flop - Select Left/Right/Hold with control input - Left: Select next bit - Right: Select previous bit - Hold: Select current Q **10.** Maximum clock frequency: T_min = t_pd + t_comb + t_su = 5 + 15 + 3 = 23ns f_max = 1 / 23ns β‰ˆ 43.5MHz

Next Steps


References

to navigate between lessons