My question is very basic one, but thought of asking here to clarify. In asynchronous counter the output of Flip Flop is given as input to other Flip Flop as clock, where as in synchronous counter the output of Flip Flop is given as direct input to other Flip Flop. So in both cases the next Flip Flop has to wait until previous output of Flip Flop is available. Can someone explain how synchronous counter has less propagation delay than asynchronous?
In every Flip-Flop there is the clock-to-Q delay.
In a synchronous counter all the outputs are updated with a single clock to Q delay.
In an a-synchronous counter the first FF updates after one clock to Q delay. The second one can only change after the first one has changed so it updated in two clock to Q delays. The third one needs three clock to Q delays etc.
If you analyze only for two FFs you won't see the difference. But as the counter is built by more and more FFs, the difference becomes apparent.
If you have 'n' FFs, for an asynchronous counter, the 'n' FF has to wait until the clock signal has traversed the previous 'n-1' FFs. For a synchronous counter the latency is constant, since all the FFs receive the clock simultaneously. The latency is a single clock cycle.