
Dueck R.Digital design with CPLD applications and VHDL.2000
.pdf
440 C H A P T E R 9 • Counters and Shift Registers
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Q3 |
|
|
|
|
Q2 |
|
|
|
|
Q1 |
|
|
|
|
Q0 |
|||
|
|
D |
Q |
D |
Q |
D |
Q |
D |
Q |
|||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clock
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Q3 |
|
|
|
|
Q2 |
|
|
|
|
Q1 |
|
|
|
|
Q0 |
|||
|
|
D |
Q |
D |
Q |
D |
Q |
D |
Q |
|||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clock
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Q3 |
|
|
|
|
Q2 |
|
|
|
|
Q1 |
|
|
|
|
Q0 |
|||
|
|
D |
Q |
D |
Q |
D |
Q |
D |
Q |
|||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clock
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
Q3 |
|
|
|
|
Q2 |
|
|
|
|
Q1 |
|
|
|
|
Q0 |
|||
|
|
D |
Q |
D |
Q |
D |
Q |
D |
Q |
|||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clock
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Q3 |
|
|
|
|
Q2 |
|
|
|
|
Q1 |
|
|
|
|
Q0 |
|||
|
|
D |
Q |
D |
Q |
D |
Q |
D |
Q |
|||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clock
FIGURE 9.78
Circulating a 1 in a Ring Counter
tional state. A 16-state ring counter needs 16 flip-flops and an 18-state ring counter must have 18 flip-flops. No decoding is required for either circuit.
Johnson Counters
Figure 9.81 shows a 4-bit Johnson counter constructed from D flip-flops. It is the same as a ring counter except for the inversion in the feedback loop where Q0 is connected to D3. The circuit output is taken from flip-flop outputs Q3 through Q0. Since the feedback introduces a “twist” into the recirculating data, a Johnson counter is also called a “twisted ring

|
|
|
|
|
|
|
|
|
|
|
9.9 |
• |
Shift Register Counters |
441 |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
Q3 |
|
|
|
|
Q2 |
|
|
|
|
Q1 |
|
|
|
|
Q0 |
|
|||
|
|
|
|
D |
Q |
D |
Q |
D |
Q |
D |
Q |
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
Clock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
D |
Q |
Q3 |
D |
Q |
Q2 |
D |
Q |
Q1 |
D |
Q |
Q0 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Clock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
D |
Q |
Q3 |
D |
Q |
Q2 |
D |
Q |
Q1 |
D |
Q |
Q0 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Clock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
D |
Q |
Q3 |
D |
Q |
Q2 |
D |
Q |
Q1 |
D |
Q |
Q0 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Clock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
D |
Q |
Q3 |
D |
Q |
Q2 |
D |
Q |
Q1 |
D |
Q |
Q0 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
|
Q |
|
|
|
|
Q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clock
FIGURE 9.79
Circulating a 0 in a Ring Counter




9.9 • Shift Register Counters |
445 |
Table 9.18 Count Sequence of an 8-bit Johnson Counter
Q7Q6Q5Q4Q3Q2Q1Q0
00000000
10000000
11000000
11100000
11110000
11111000
11111100
11111110
11111111
01111111
00111111
00011111
00001111
00000111
00000011
00000001
Note that in the component file (jnsn_ct.vhd), the counter is cleared synchronously by the statement ( q <= (others => ‘0’);). Recall that the clause (others => ‘0’) can be used to set all bits of a signal aggregate to the value ‘0’. This is a simple way to clear a vector of unknown width without using a conversion function.
Table 9.18 shows the count sequence for the 8-bit Johnson counter.
The simulation of the Johnson counter, including one full cycle and a clear, is shown in Figure 9.83.
FIGURE 9.83
Example 9.19
Simulation of an 8-bit Johnson
Counter
Johnson Counter Modulus and Decoding
N O T E
The maximum modulus of a Johnson counter is 2n for a circuit with n flip-flops.
The Johnson counter represents a compromise between binary and ring counters, whose maximum moduli are, respectively, 2n and n for an n-bit counter.

446 C H A P T E R 9 • Counters and Shift Registers
If it is used for event sequencing, a Johnson counter must be decoded, unlike a ring counter. Its output states are such that each state can be decoded uniquely by a 2-input AND or NAND gate, depending on whether you need active-HIGH or active-LOW indication. This yields a simpler decoder than is required for a binary counter.
Table 9.19 shows the decoding of a 4-bit Johnson counter.
Table 9.19 Decoding a 4-bit Johnson Counter
Q3 Q2 Q1 Q0 |
Decoder Outputs |
Comment |
0 |
|
0 |
0 |
|
0 |
3 0 |
MSB LSB |
||
|
|
Q Q |
|||||||
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
||
1 |
|
0 |
0 |
|
0 |
3 2 |
“1/0” |
||
|
Q Q |
|
|||||||
1 |
|
1 |
0 |
|
0 |
2 1 |
Pairs |
||
|
|
Q Q |
|
||||||
1 |
1 |
1 |
|
0 |
1 0 |
|
|||
|
Q Q |
|
|
||||||
1 |
1 |
1 |
1 |
Q3Q0 |
MSB LSB |
||||
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
0 |
|
1 |
1 |
1 |
3 |
Q |
2 |
“0/1” |
|
|
Q |
|
|||||||
0 |
|
0 |
1 |
1 |
2 |
Q |
1 |
Pairs |
|
|
Q |
|
|||||||
0 |
0 |
0 |
|
1 |
1 |
Q |
0 |
|
|
|
Q |
|
|
|
0 |
|
0 |
|
0 |
|
0 |
D |
Q3 |
D |
Q2 |
D |
Q1 |
D |
Q0 |
Q |
Q |
Q |
Q |
||||
|
Q |
|
Q |
|
Q |
|
Q |
Clock
Q3Q0
Q3Q2
Q2Q1
Q1Q0
Q3Q0
Q3Q2
Q2Q1
Q1Q0
FIGURE 9.84
4-bit Johnson Counter with Output Decoding


