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¶
- Characteristics of Sequential Logic Circuits
- SR Latch
- D Latch
- D Flip-Flop
- JK Flip-Flop
- T Flip-Flop
- Registers
- Counters
- Clock and Timing
- 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β: ________________|βΎβΎβΎβΎβΎβΎβΎβΎβΎβΎβΎβΎβΎβΎβΎ
Next Steps¶
- 07_CPU_Architecture_Basics.md - CPU components and instruction execution cycle
References¶
- Digital Design (Morris Mano)
- Computer Organization and Design (Patterson & Hennessy)
- Logic Gate Simulator
- Digital Circuits Tutorial
- Nand2Tetris - Building a Computer from First Principles