Asynchronous Counters
Digital Electronics · 12 min read
A counter is a register that increments (or decrements) its stored value on every clock edge. The simplest kind — the ripple counter — chains T flip-flops so each one toggles the next, like a row of falling dominoes. The toggle “ripples” through the chain, which is why these counters are called asynchronous: the flip-flops do not all change at the same time.
A T flip-flop with T = 1 is identical in behavior to a JK flip-flop with J and K both tied to logic 1 — both simply toggle on every active clock edge. Throughout this page we use T flip-flops because they make the counter operation most intuitive.
1. 2-Bit Ripple Counter
The external clock drives only FF0. The output of FF0 () drives the clock input of FF1. Each flip-flop has T = 1, so it toggles on every falling edge of its own clock.
- FF0 is clocked by the external clock. FF1 is clocked by .
- Each flip-flop has T = 1, so it toggles on every active clock edge.
- Count sequence: 00 → 01 → 10 → 11 → 00 (wraps around).
Ripple Propagation Timing
This is the defining characteristic of asynchronous counters. Each output changes slightly after its clock edge — not simultaneously. The small arrows below show the propagation delay () between each stage.
Try It: Watch the Domino Effect
Click Clock and watch each flip-flop toggle in sequence — FF0 first, then FF1, then FF2 — like falling dominoes. The binary and decimal count update live.
2. N-Bit Ripple Counter
- N flip-flops count from 0 to , then wrap.
- A 4-bit counter counts 0 to 15. An 8-bit counter counts 0 to 255.
Each Stage Divides the Frequency by 2
One of the most beautiful properties of a ripple counter: each flip-flop output toggles at exactly half the frequency of its input clock. This makes ripple counters natural frequency dividers.
| Stage | Frequency | Division |
|---|---|---|
| CLK (input) | 1 MHz | — |
| Q0 (FF0) | 500 kHz | ÷ 2 |
| Q1 (FF1) | 250 kHz | ÷ 4 |
| Q2 (FF2) | 125 kHz | ÷ 8 |
| Q3 (FF3) | 62.5 kHz | ÷ 16 |
3. MOD-N Counters
What if you need to count 0–9 instead of 0–15? You detect a chosen count and force the counter back to zero before it reaches its natural maximum. This truncation gives a “MOD-N” counter — one that cycles through exactly N states.
- The NAND gate watches and . When both go high the count has reached 1010 (ten in binary).
- The NAND output goes low, asserting the active-low on every flip-flop, resetting the count to 0000.
- If the flip-flops use an active-high reset instead, replace the NAND gate with an AND gate — the AND output goes high when the target count is reached, driving CLR directly.
- The counter cycles: 0000 → 0001 → … → 1001 → (briefly 1010) → 0000.
MOD-10 Reset Timing
Here is what actually happens during the reset transition. The count reaches 1001 (nine). On the next clock edge:
- FF0 toggles: 1001 → 1010. This is the target count — NAND detects it.
- After a short gate delay, NAND asserts RESET.
- After another propagation delay, all FFs clear to 0000.
- Total glitch width ≈ NAND delay + FF clear delay (typically 10–30 ns).
4. The Ripple Delay Problem
- Each flip-flop adds its own before the next one sees the clock edge.
- Total delay for an N-bit counter: .
Maximum Clock Frequency
The clock must be slow enough for the ripple to settle before the next edge arrives:
This speed limit is the main drawback of ripple counters. As N grows, the maximum frequency drops — making large ripple counters impractical for high-speed designs.
5. Decode Glitches
- When counting from 0111 to 1000, the bits don’t all change at once. You might briefly see 0110, 0100, 0000 before reaching 1000.
- Any combinational decode logic connected to the outputs can trigger falsely during these transient states.
6. Up vs Down Counting
- Up counter: use Q to clock the next flip-flop. Count increments.
- Down counter: use to clock the next flip-flop. Count decrements.
7. The T Flip-Flop — The Natural Counter FF
For counters, the T (toggle) flip-flop is the simplest and most intuitive choice. With T = 1, it simply toggles on every clock edge:
- T flip-flop (T = 1): Conceptually simplest for teaching. Just toggles.
- JK flip-flop (J = K = 1): Same toggle behavior. Historically the most common counter FF in discrete logic.
- D flip-flop: Dominant in modern FPGA/ASIC designs. Counter logic uses combinational next-state equations:
8. Synchronous vs Asynchronous
Why do synchronous counters exist if ripple counters are simpler? The table below explains the trade-off:
| Property | Asynchronous | Synchronous |
|---|---|---|
| Clocking | Each FF clocked by previous Q | All FFs share one clock |
| Speed | Limited by N × t_pd | Limited by single t_pd |
| Glitches | Transient invalid states | Clean transitions |
| Complexity | Simpler wiring | Needs carry logic |
| Max frequency | Low (decreases with N) | High (constant) |
| Best for | Low-speed, frequency division | High-speed, glitch-free |
9. Counter Applications
| Counter type | Real-world uses |
|---|---|
| Ripple counter | Frequency dividers, low-speed event counting |
| MOD-10 (decade) | Digital clocks, BCD displays, odometers |
| MOD-N (arbitrary) | Baud rate generators, prescalers, timers |
| Up/down counter | Position encoders, bidirectional tracking |
| Frequency divider | Clock distribution, PLL reference division |