A synchronous counter, in contrast to an asynchronous counter,
is one whose output bits change state simultaneously, with no ripple.
The only way we can build such a counter circuit from J-K flip-flops is
to connect all the clock inputs together, so that each and every
flip-flop receives the exact same clock pulse at the exact same time. The clock inputs of all the flip-flops are connected together and are triggered
by the input pulses. Thus, all the flip-flops change state simultaneously
(in parallel). The circuit below is a 3-bit
synchronous counter. The J and K inputs of FF0 are connected
to HIGH. FF1 has its J and K inputs connected to the output of FF0,
and the J and K inputs of FF2 are connected to the output of an AND gate
that is fed by the outputs of FF0 and FF1.
The result is a four-bit synchronous "up" counter. Each of the
higher-order flip-flops are made ready to toggle (both J and K inputs
"high") if the Q outputs of all previous flip-flops are "high."
Otherwise, the J and K inputs for that flip-flop will both be "low,"
placing it into the "latch" mode where it will maintain its present
output state at the next clock pulse. Since the first (LSB) flip-flop
needs to toggle at every clock pulse, its J and K inputs are connected
to Vcc or Vdd, where they will be "high" all the
time. The next flip-flop need only "recognize" that the first
flip-flop's Q output is high to be made ready to toggle, so no AND gate
is needed. However, the remaining flip-flops should be made ready to
toggle only when all lower-order output bits are "high," thus the need for AND gates.
Asynchronous counter , Since we know that binary count sequences follow a pattern of octave
(factor of 2) frequency division, and that J-K flip-flop multivibrators
set up for the "toggle" mode are capable of performing this type of
frequency division, we can envision a circuit made up of several J-K
flip-flops, cascaded to produce four bits of output. The main problem
facing us is to determine how to connect these flip-flops
together so that they toggle at the right times to produce the proper
binary sequence. Examine the following binary count sequence, paying
attention to patterns preceding the "toggling" of a bit between 0 and 1:
Starting with four J-K flip-flops connected in such a way to always be
in the "toggle" mode, we need to determine how to connect the clock
inputs in such a way so that each succeeding bit toggles when the bit
before it transitions from 1 to 0. The Q outputs of each flip-flop will
serve as the respective binary bits of the final, four-bit count:
he first flip-flop (the one with the Q0 output), has a
positive-edge triggered clock input, so it toggles with each rising edge
of the clock signal. Notice how the clock signal in this example has a
duty cycle less than 50%. I've shown the signal in this manner for the
purpose of demonstrating how the clock signal need not be symmetrical to
obtain reliable, "clean" output bits in our four-bit binary sequence.
In the very first flip-flop circuit shown in this chapter, I used the
clock signal itself as one of the output bits. This is a bad practice in
counter design, though, because it necessitates the use of a square
wave signal with a 50% duty cycle ("high" time = "low" time) in order to
obtain a count sequence where each and every step pauses for the same
amount of time. Using one J-K flip-flop for each output bit, however,
relieves us of the necessity of having a symmetrical clock signal,
allowing the use of practically any variety of high/low waveform to
increment the count sequence.