Skip to main content

Sync vs async; 3-bit Gray code counter

Short answer

Synchronous counters avoid ripple, run faster, and give glitch-free outputs, but require extra gates and design effort. A 3-bit Gray code counter using D flip-flops follows 000,001,011,010,110,111,101,100. The D inputs are D2 = Q2 Q0 + Q1 Q0', D1 = Q2' Q0 + Q1 Q0', D0 = Q2 XNOR Q1.

List the advantages and disadvantages of a synchronous counter over asynchronous counter. Design a 3 bit synchronous counter which follow gray code sequence.

Synchronous over asynchronous counter

Advantages

  • All flip-flops change together, so the total delay is one flip-flop delay plus one gate delay; the counter can run at a much higher clock frequency.
  • No ripple, so there are no temporary false states and no glitches when outputs are decoded.
  • Any count sequence (Gray, BCD, arbitrary) can be designed directly from the state table.
  • Maximum frequency does not fall as more stages are added (with parallel carry).

Disadvantages

  • Needs extra combinational logic (AND gates) for each stage, so the circuit is more complex and costlier.
  • The clock drives every flip-flop, so the clock line has a larger load.
  • Design takes more effort (excitation table, K-maps).

Design: 3-bit synchronous Gray code counter (D flip-flops)

Sequence: 000 → 001 → 011 → 010 → 110 → 111 → 101 → 100 → 000. 8 states, so 3 D flip-flops with a common clock. For a D flip-flop, D=Q+D = Q^+, so the next-state columns give the D inputs directly.

Present Q2Q1Q0Next Q2Q1Q0D2D1D0
000001001
001011011
011010010
010110110
110111111
111101101
101100100
100000000

K-maps

D0: Q2 / Q1Q000011110
01100
10011
D1: Q2 / Q1Q000011110
00111
10001
D2: Q2 / Q1Q000011110
00001
10111

Equations

D2=Q2Q0+Q1Q0‾D1=Q2‾Q0+Q1Q0‾D0=Q2Q1+Q2‾Q1‾=Q2⊕Q1‾\begin{aligned} D_2 &= Q_2Q_0 + Q_1\overline{Q_0} \\ D_1 &= \overline{Q_2}Q_0 + Q_1\overline{Q_0} \\ D_0 &= Q_2Q_1 + \overline{Q_2}\overline{Q_1} = \overline{Q_2 \oplus Q_1} \end{aligned}

Circuit

   +-----+       +-----+       +-----+
D0>|D   Q|-Q0 D1>|D   Q|-Q1 D2>|D   Q|-Q2
   | FF0 |       | FF1 |       | FF2 |
   |     |       |     |       |     |
   +--o--+       +--o--+       +--o--+
      |             |             |
CLK---+-------------+-------------+
D2 = Q2.Q0 + Q1.Q0'
D1 = Q2'.Q0 + Q1.Q0'
D0 = XNOR(Q2, Q1)

Timing diagram

CLK  __|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾
Q2   ________________|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|___
Q1   ________|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|___________
Q0   ____|‾‾‾‾‾‾‾|_______|‾‾‾‾‾‾‾|_______
Cnt  000  001 011 010 110 111 101 100 000

Only one output changes per clock, as required by the Gray code.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Digital Logic chapter 8 questions →