Digital Counters Quick Reference Guide

Basic Concept of a Counter
A counter is a sequential circuit that moves through a fixed sequence of binary states.
- Each active clock edge may advance the stored state according to the counter logic.
- Flip-flops store the count.
- An n-bit binary counter has 2ⁿ possible states.
Counters are used for:
- Counting events
- Frequency division
- Timing generation
- Sequence control
- Address generation
Asynchronous Up Counter
An asynchronous up counter counts from a smaller value to a larger value.
For a 3-bit counter:
000 → 001 → 010 → 011 → 100 → 101 → 110 → 111 → 000In an asynchronous counter, only the first flip-flop receives the external clock. Each remaining flip-flop receives its clock from the previous stage.
Circuit Connections
For positive-edge-triggered T flip-flops:
T0 = T1 = T2 = 1- External
CLKis connected to FF0. ~Q0is connected to the clock of FF1.~Q1is connected to the clock of FF2.
Fig. 1: 3-bit Asynchronous Up Counter

Working
Q0toggles on every rising clock edge.Q1toggles whenQ0changes from1 → 0, producing a rising edge at~Q0.Q2toggles whenQ1changes from1 → 0.- After the ripple transitions settle, the output count has increased by one.
Table 1: Asynchronous Up-Counter Sequence
| Clock Pulse | Q2Q1Q0 | Decimal Count |
|---|---|---|
| 0 | 000 | 0 |
| 1 | 001 | 1 |
| 2 | 010 | 2 |
| 3 | 011 | 3 |
| 4 | 100 | 4 |
| 5 | 101 | 5 |
| 6 | 110 | 6 |
| 7 | 111 | 7 |
Asynchronous Down Counter
An asynchronous down counter counts from a larger value to a smaller value.
For a 3-bit counter:
111 → 110 → 101 → 100 → 011 → 010 → 001 → 000 → 111Circuit Connections
For positive-edge-triggered T flip-flops:
T0 = T1 = T2 = 1- External
CLKis connected to FF0. Q0is connected to the clock of FF1.Q1is connected to the clock of FF2.
Fig. 2: 3-bit Asynchronous Down Counter

Working
Q0toggles on every rising clock edge.Q1toggles whenQ0changes from0 → 1.Q2toggles whenQ1changes from0 → 1.- After the ripple transitions settle, the output count has decreased by one.
Table 2: Asynchronous Down-Counter Sequence
| Clock Pulse | Q2Q1Q0 | Decimal Count |
|---|---|---|
| 0 | 111 | 7 |
| 1 | 110 | 6 |
| 2 | 101 | 5 |
| 3 | 100 | 4 |
| 4 | 011 | 3 |
| 5 | 010 | 2 |
| 6 | 001 | 1 |
| 7 | 000 | 0 |
Asynchronous Counter Direction
The counting direction depends on three circuit choices:
- Flip-flop triggering edge
- Previous-stage output connected to the next clock
- Output pins used as the counter output
For a positive-edge-triggered counter using ~Q as the next-stage clock:
Qoutputs (Out_A) show up counting.~Qoutputs (Out_B) show down counting.
Fig. 3: Asynchronous Counter with Out_A counts up and Out_B counts down

Table 3: Asynchronous Counter Direction
| Flip-Flop Trigger | Next Clock From | Counter Output From | Count Direction |
|---|---|---|---|
| Positive edge | Q | Q | Down |
| Positive edge | Q | ~Q | Up |
| Positive edge | ~Q | Q | Up |
| Positive edge | ~Q | ~Q | Down |
| Negative edge | Q | Q | Up |
| Negative edge | Q | ~Q | Down |
| Negative edge | ~Q | Q | Down |
| Negative edge | ~Q | ~Q | Up |
Changing either the clock source or the output pins reverses the visible counting direction.
Controlled Asynchronous Up-Down Counter
An asynchronous up-down counter uses a control input C to select the counting direction.
An XOR gate is placed between each flip-flop output and the clock input of the next flip-flop.
Connections
For each stage:
CLK(next) = Q ⊕ CFor positive-edge-triggered T flip-flops:
C = 0: XOR output followsQ.C = 1: XOR output becomes~Q.
Fig. 4: Asynchronous Up-Down Counter with control input C

Table 4: Direction-Control Operation
| C | Next Clock Signal | Direction at Q Outputs |
|---|---|---|
| 0 | Q | Down |
| 1 | ~Q | Up |
Working
When C = 0
- The XOR gates pass the
Qoutputs. - Each next stage is triggered by a rising edge at
Q. - The circuit counts down.
When C = 1
- The XOR gates produce the
~Qoutputs. - Each next stage is triggered when the previous
Qfalls. - The circuit counts up.
The direction control C should change only while counting is disabled and all ripple outputs are stable. Changing C can create an unwanted edge at Q ⊕ C and falsely clock the next stage.
Asynchronous Frequency Divider
A T flip-flop with T = 1 divides its clock frequency by two.
Connecting several T flip-flops in a ripple chain produces multiple divided frequencies.
Fig. 5: Asynchronous Frequency Divider Circuit

Table 5: Asynchronous Divider Outputs
| Output | Frequency |
|---|---|
Q0 or ~Q0 | fCLK / 2 |
Q1 or ~Q1 | fCLK / 4 |
Q2 or ~Q2 | fCLK / 8 |
Q3 or ~Q3 | fCLK / 16 |
For frequency at output Qk, where k = 0, 1, 2, ...:
fQk = fCLK / 2ᵏ⁺¹For an n-stage counter, the frequency at last output is:
fQ(n−1) = fCLK / 2ⁿWorking
- FF0 toggles on every clock pulse.
- FF1 toggles at half the frequency of FF0.
- Each additional stage divides the previous frequency by two.
Asynchronous MOD Counters
The MOD number tells how many valid states a counter uses before repeating.
Examples:
- MOD-4 uses four states.
- MOD-6 uses six states.
- MOD-10 uses ten states.
An n-bit binary counter naturally has:
MOD = 2ⁿA counter with a smaller MOD value can use asynchronous PRESET and/or CLEAR inputs to redirect unwanted states to a valid state.
Design Method
- Find the required number of states.
- Select the required number of flip-flops.
- Build the normal asynchronous counter.
- Identify the first unwanted state.
- Decode the unwanted state.
- Use ~PRE and/or ~CLR to move the counter to a valid starting state.
Example: MOD-6 Up Counter
A 3-bit counter has eight possible states, but a MOD-6 counter requires only:
000 → 001 → 010 → 011 → 100 → 101 → 000When the temporary state 110 appears:
- The state-decoding circuit becomes active.
~CLRbecomes LOW.- All flip-flops return to
000.
Fig. 6: Asynchronous MOD-6 Up Counter

Table 6: MOD-6 State Use
| State | Use |
|---|---|
000 to 101 | Valid counting states |
110 | Detected and cleared |
111 | Normally not reached |
Invalid-State Recovery
An invalid state can be forced to a valid state by controlling each asynchronous input separately.
For example, to force 101:
- Preset the flip-flops that must become
1. - Clear the flip-flops that must become
0.
This allows an asynchronous up or down counter to recover to the required starting state.
Propagation Delay in Asynchronous Counters
Flip-flop outputs in an asynchronous counter do not change at the same time.
The clock transition moves through the counter one stage at a time.
Example
During the change:
011 → 100
The outputs may briefly pass through:
011 → 010 → 000 → 100
These temporary values occur because each flip-flop has a propagation delay.
Total Delay
For an n-bit counter:
Worst-case settling delay ≈ n × flip-flop propagation delay
Effects
- Temporary incorrect states
- Decoder glitches
- Reduced maximum clock frequency
- Delayed higher-bit outputs
Asynchronous counters are simple, but they are less suitable when all output bits must change together.
Synchronous Up Counter
In a synchronous counter, all flip-flops receive the same clock signal.
A flip-flop toggles only when all lower-order bits are HIGH.
For a 3-bit positive-edge-triggered T counter:
T0 = 1
T1 = Q0
T2 = Q1 · Q0Fig. 7: 3-bit Synchronous Up Counter

Table 7: Synchronous Up-Counter State Table
| Present State Q2Q1Q0 | Next State Q2Q1Q0 | T2T1T0 |
|---|---|---|
| 000 | 001 | 001 |
| 001 | 010 | 011 |
| 010 | 011 | 001 |
| 011 | 100 | 111 |
| 100 | 101 | 001 |
| 101 | 110 | 011 |
| 110 | 111 | 001 |
| 111 | 000 | 111 |
Working
Q0toggles during every active clock edge.Q1toggles whenQ0 = 1.Q2toggles whenQ1Q0 = 11.- All selected flip-flops toggle together at the active clock edge.
Synchronous Down Counter
A synchronous down counter toggles a higher-order bit when all lower-order bits are LOW.
For a 3-bit positive-edge-triggered T counter:
T0 = 1
T1 = ~Q0
T2 = ~Q1 · ~Q0Fig. 8: 3-bit Synchronous Down Counter

Table 8: Synchronous Down-Counter State Table
| Present State Q2Q1Q0 | Next State Q2Q1Q0 | T2T1T0 |
|---|---|---|
| 000 | 111 | 111 |
| 001 | 000 | 001 |
| 010 | 001 | 011 |
| 011 | 010 | 001 |
| 100 | 011 | 111 |
| 101 | 100 | 001 |
| 110 | 101 | 011 |
| 111 | 110 | 001 |
Working
Q0toggles during every active clock edge.Q1toggles whenQ0 = 0.Q2toggles whenQ1Q0 = 00.- All selected outputs change together.
Synchronous Up-Down Counter
A synchronous up-down counter uses a control input C.
In this circuit:
C = 1: Up countingC = 0: Down counting
Table 9: Synchronous Up-Down Excitation Table
| Present State | Next State C = 0 | T2T1T0 Down | Next State C = 1 | T2T1T0 Up |
|---|---|---|---|---|
| 000 | 111 | 111 | 001 | 001 |
| 001 | 000 | 001 | 010 | 011 |
| 010 | 001 | 011 | 011 | 001 |
| 011 | 010 | 001 | 100 | 111 |
| 100 | 011 | 111 | 101 | 001 |
| 101 | 100 | 001 | 110 | 011 |
| 110 | 101 | 011 | 111 | 001 |
| 111 | 110 | 001 | 000 | 111 |
Reduced Equations
T0 = 1
T1 = C · Q0 + ~C · ~Q0
This can also be written as:
T1 = ~(C ⊕ Q0)
For the third stage:
T2 = C · Q1 · Q0 + ~C · ~Q1 · ~Q0
This can also be written as:
T2 = ~(C ⊕ Q1) · ~(C ⊕ Q0)
[Image: 3-bit-synchronous-up-down-counter (common clock with C-controlled T-input logic)]
Fig. 9: 3-bit Synchronous Up-Down Counter with controlled input C

Working
When C = 1
- Lower bits are checked for HIGH.
- The circuit follows the up-counting equations.
When C = 0
- Lower bits are checked for LOW.
- The circuit follows the down-counting equations.
Synchronous MOD-Counter Design
A synchronous MOD counter uses only the required states from the available binary states.
For M required states, select the smallest number of flip-flops n such that:
2ⁿ ≥ M
Design Method
- List the required counting sequence.
- Prepare the present-state and next-state table.
- Find each T input using:
T = Q ⊕ Q(next) - Decide how invalid states should operate.
- Simplify the T-input equations.
- Build the combinational logic and connect all flip-flops to a common clock.
Invalid-State Operations
Invalid states can be handled using two methods:
1. Don’t Care Method
2. Assigned Recovery-State Method
Table 10: Invalid-State Comparison
| Feature | Don’t Care Method | Assigned Recovery-State Method |
|---|---|---|
| Invalid-state next value | Marked as X | Assigned a valid state |
| Logic equations | Usually simpler | May require more logic |
| Recovery from invalid state | Not guaranteed | Guaranteed |
| Lockout possibility | Possible | Avoided |
| Main use | Small and simple circuits | Reliable or self-correcting counters |
Don’t Care Method
- Invalid-state entries are treated as X during equation simplification.
- This reduces logic, but the counter may not recover correctly if noise or startup conditions place it in an invalid state.
Assigned Recovery-State Method
- Every invalid state is assigned a known valid next state.
- For example: Invalid State → Initial Valid State
- This makes the counter self-correcting.
MOD-11 Down Counter
A MOD-11 down counter uses eleven valid states:
10 → 9 → 8 → 7 → 6 → 5 → 4 → 3 → 2 → 1 → 0 → 10Four T flip-flops are required because:
2³ < 11 ≤ 2⁴
Binary states 1011 to 1111 are invalid. In this design, every invalid state is redirected to 1010, which represents decimal 10.
Table 11: MOD-11 Down-Counter Excitation Table
| Present State | Decimal | Next State | T3T2T1T0 |
|---|---|---|---|
| 0000 | 0 | 1010 | 1010 |
| 0001 | 1 | 0000 | 0001 |
| 0010 | 2 | 0001 | 0011 |
| 0011 | 3 | 0010 | 0001 |
| 0100 | 4 | 0011 | 0111 |
| 0101 | 5 | 0100 | 0001 |
| 0110 | 6 | 0101 | 0011 |
| 0111 | 7 | 0110 | 0001 |
| 1000 | 8 | 0111 | 1111 |
| 1001 | 9 | 1000 | 0001 |
| 1010 | 10 | 1001 | 0011 |
| 1011 | Invalid | 1010 | 0001 |
| 1100 | Invalid | 1010 | 0110 |
| 1101 | Invalid | 1010 | 0111 |
| 1110 | Invalid | 1010 | 0100 |
| 1111 | Invalid | 1010 | 0101 |
Reduced Equations
T3 = ~Q2 · ~Q1 · ~Q0
T2 = Q2 · Q3 + ~Q1 · ~Q0 · (Q2 + Q3)
T1 = ~Q0 · (~Q2 + ~Q3) + Q2 · Q3 · ~Q1
T0 = Q0 + Q1 · ~Q2 + (Q2 ⊕ Q3)Fig. 10: Synchronous MOD-11 Down Counter Circuit

Working
- All flip-flops receive the same positive-edge clock.
- States
1010to0000form the valid down-count sequence. - After
0000, the next state becomes1010. - If the circuit enters
1011to1111, the next clock moves it to1010. ~Reset = 0keep the circuit lock in1010state.
Synchronous Frequency Divider
A synchronous binary up counter can also work as a frequency divider.
All flip-flops receive the same clock, but their T inputs follow the up-counter equations.
For six flip-flops:
T0 = 1
T1 = Q0
T2 = Q1 · Q0
T3 = Q2 · Q1 · Q0
T4 = Q3 · Q2 · Q1 · Q0
T5 = Q4 · Q3 · Q2 · Q1 · Q0Fig. 11: 6-bit Synchronous Frequency Divider Circuit

Table 12: Six-Stage Divider Frequencies
| Output | Frequency |
|---|---|
Q0 or ~Q0 | fCLK / 2 |
Q1 or ~Q1 | fCLK / 4 |
Q2 or ~Q2 | fCLK / 8 |
Q3 or ~Q3 | fCLK / 16 |
Q4 or ~Q4 | fCLK / 32 |
Q5 or ~Q5 | fCLK / 64 |
Working
Q0toggles during every active clock edge.- Each higher output toggles at half the frequency of the previous output.
- All selected flip-flops update from the same common clock edge.
Propagation Delay at the Outputs
The output transition does not ripple from one flip-flop to another.
- Each selected output changes after its individual flip-flop clock-to-Q delay.
- The higher-bit T-input logic must settle before the next active clock edge.
- The maximum clock frequency is limited by the flip-flop clock-to-Q delay, the longest combinational-logic delay, the setup time, and clock skew.
Minimum clock period ≈ tCQ + tlogic(max) + tsetup
A synchronous divider gives more closely aligned output transitions than an asynchronous divider.
Custom Sequence Generator
A custom sequence generator is a synchronous counter that follows a user-defined order instead of normal binary up or down counting.
Example:
State A → State B → State C → State A
Design Method
- Write the required state sequence.
- Map each present state to its next state.
- Find the T inputs using:
T = Q ⊕ Q(next) - Prepare the excitation table.
- Simplify the T-input equations.
- Build the combinational logic.
- Connect all flip-flops to a common clock.
Table 13: Custom Sequence Mapping
| Present State | Required Next State | T-Input Calculation |
|---|---|---|
Q2Q1Q0 | Q2(next)Q1(next)Q0(next) | Present bit ⊕ next bit |
Custom Sequence Example
The required sequence is:
000 → 110 → 010 → 101 → 111 → 100 → 011 → 001 → 000This sequence uses all eight possible 3-bit states.
Table 14: Custom Sequence Excitation Table
| Present State | Next State | T2 | T1 | T0 |
|---|---|---|---|---|
| 000 | 110 | 1 | 1 | 0 |
| 001 | 000 | 0 | 0 | 1 |
| 010 | 101 | 1 | 1 | 1 |
| 011 | 001 | 0 | 1 | 0 |
| 100 | 011 | 1 | 1 | 1 |
| 101 | 111 | 0 | 1 | 0 |
| 110 | 010 | 1 | 0 | 0 |
| 111 | 100 | 0 | 1 | 1 |
Reduced Equations
T2 = ~Q0
T1 = ~(Q2 ⊕ Q0) + (Q2 ⊕ Q1)
T0 = Q2 ⊕ Q1 ⊕ Q0Fig. 12: Custom Sequence Generator using T Flip Flops

Working
- All three T flip-flops receive the same clock.
- The combinational circuit calculates
T2,T1, andT0. - At each positive clock edge, the counter moves to the next specified state.
- After
001, the sequence returns to000.
Concept understood? Let's apply and learn for real