In an asynchronous (ripple) counter, a stage can't start changing until the stage below it has changed and handed it a clock edge. Each flip-flop adds its own propagation delay (tpd), so the delays stack up like dominoes.
- If only Q0 changes (say
0110→0111), the count settles after 1 × tpd. - If every bit changes (
0111→1000, or1111→0000), the change has to pass through all n stages. The last bit settles n × tpd after the edge. That's the worst case, and the one that sets the speed limit.
Two consequences follow:
- The clock period must be at least n × tpd (plus the delay of any logic reading the count), so the maximum counter frequency is at most 1 / (n × tpd). Adding bits slows the counter down.
- Until the ripple finishes, the outputs show transient states, which can make decoding logic glitch.
A synchronous counter avoids ripple delay entirely: every bit changes one tpd after the shared clock edge, however wide the counter is.