Chapter7 Counters
Chapter7 Counters
Henry Hexmoor
Counters
Counters are a specific type of sequential circuit. Like registers, the state, or the flipflop values themselves, serves as the output. The output value increases by one on each clock cycle. After the largest value, the output wraps around back to 0. Using two bits, wed get something like this:
Present State A B 0 0 1 1 0 1 0 1 Next State A B 0 1 1 0 1 0 1 0
00 1 11
2
01
1
10
Henry Hexmoor
Benefits of counters
Counters can act as simple clocks to keep track of time. You may need to record how many times something has happened. How many bits have been sent or received? How many steps have been performed in some computation? All processors contain a program counter, or PC. Programs consist of a list of instructions that are to be executed one after another (for the most part). The PC keeps track of the instruction currently being executed. The PC increments once on each clock cycle, and the next program instruction is then executed.
Henry Hexmoor
Lets try to design a slightly different two-bit counter: Again, the counter outputs will be 00, 01, 10 and 11. Now, there is a single input, X. When X=0, the counter value should increment on each clock cycle. But when X=1, the value should decrement on successive cycles. Well need two flip-flops again. Here are the four possible states:
00
01
11
10
Henry Hexmoor
Heres the complete state diagram and state table for this circuit.
00 0 1
1
1 1
01 0 10
Present State Q1 Q0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1
Inputs X 0 1 0 1 0 1 0 1
Next State Q1 Q0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0
11
Henry Hexmoor
D flip-flop inputs
If we use D flip-flops, then the D inputs will just be the same as the desired next states. Equations for the D flip-flop inputs are shown at the right. Why does D0 = Q0 make sense?
Present State Q1 Q0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 Inputs X 0 1 0 1 0 1 0 1 Next State Q1 Q0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0
Q1
0 1
1 0 X
Q0 0 1
1 0
D1 = Q1 Q0 X
Q0 0 0
Q1
1 1
1 1 X
0 0
D0 = Q0
Henry Hexmoor 6
Henry Hexmoor
JK flip-flop inputs
If we use JK flip-flops instead, then we have to compute the JK inputs for each flip-flop. Look at the present and desired next state, and use the excitation table on the right.
Q(t) 0 0 1 1 Q(t+1) 0 1 0 1 J 0 1 x x K x x 1 0
Present State Q1 Q0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1
Inputs X 0 1 0 1 0 1 0 1
Next State Q1 Q0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0
J1 0 1 1 0 x x x x
K0 x x 1 1 x x 1 1
Henry Hexmoor
We can then find equations for all four flip-flop inputs, in terms of the present state and inputs. Here, it turns out J1 = K1 and J0 = K0. J1 = K1 = Q0 X + Q0 X J0 = K 0 = 1
Henry Hexmoor
Henry Hexmoor
10
Asynchronous Counters
This counter is called asynchronous because not all flip flops are hooked to the same clock. Look at the waveform of the output, Q, in the timing diagram. It resembles a clock as well. If the period of the clock is T, then what is the period of Q, the output of the flip flop? It's 2T! We have a way to create a clock that runs twice as slow. We feed the clock into a T flip flop, where T is hardwired to 1. The output will be a clock who's period is twice as long.
Henry Hexmoor
11
Asynchronous counters If the clock has period T. Q0 has period 2T. Q1 period is 4T With n flip flops the period is 2n.
Henry Hexmoor
12
3 bit asynchronous ripple counter using T flip flops This is called as a ripple counter due to the way the FFs respond one after another in a kind of rippling effect.
Henry Hexmoor
13
Synchronous Counters
each flip-flop and a combinational circuit to generate the next state. For an up-counter, use an incrementer => Incrementer
A3 A2 A1
S3
D3 Q3 D2 Q2 D1 Q1 D0 Q0
S2
S1 S0
A0
Clock
Henry Hexmoor 14
Henry Hexmoor
15
Next State Q8 Q4 Q2 Q1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0
Henry Hexmoor
17
0 9 14 15 7 6 5 11 13 1 2 12 3
10
Henry Hexmoor
18
For the BCD counter design, if an invalid state is entered, return to a valid state occurs within two clock cycles Is this adequate?!
Henry Hexmoor
19
Henry Hexmoor
20
Unused states
The examples shown so far have all had 2n states, and used n flip-flops. But sometimes you may have unused, leftover states. For example, here is a state table and diagram for a counter that repeatedly counts from 0 (000) to 5 (101). What should we put in the table for the two unused states?
Present State Q2 Q1 Q0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Next State Q2 Q1 Q0 0 0 0 1 1 0 ? ? 0 1 1 0 0 0 ? ? 1 0 1 0 1 0 ? ?
000
101
001
100 011
21
010
Henry Hexmoor
000
101
001
100 011
22
010
Henry Hexmoor
000
101
001
100 011
23
010
Henry Hexmoor
LogicWorks counters
There are a couple of different counters available in LogicWorks. The simplest one, the Counter-4 Min, just increments once on each clock cycle. This is a four-bit counter, with values ranging from 0000 to 1111. The only input is the clock signal.
Henry Hexmoor
24
More complex counters are also possible. The full-featured LogicWorks Counter-4 device below has several functions. It can increment or decrement, by setting the UP input to 1 or 0. You can immediately (asynchronously) clear the counter to 0000 by setting CLR = 1. You can specify the counters next output by setting D3-D0 to any four-bit value and clearing LD. The active-low EN input enables or disables the counter. When the counter is disabled, it continues to output the same value without incrementing, decrementing, loading, or clearing. The counter out CO is normally 1, but becomes 0 when the counter reaches its maximum value, 1111.
Henry Hexmoor
25
An 8-bit counter
As you might expect by now, we can use these general counters to build other counters. Here is an 8-bit counter made from two 4-bit counters. The bottom device represents the least significant four bits, while the top counter represents the most significant four bits. When the bottom counter reaches 1111 (i.e., when CO = 0), it enables the top counter for one cycle. Other implementation notes: The counters share clock and clear signals.
Henry Hexmoor
26
Henry Hexmoor
27
Henry Hexmoor
28
Summary of Counters
Counters serve many purposes in sequential logic design. There are lots of variations on the basic counter. Some can increment or decrement. An enable signal can be added. The counters value may be explicitly set. There are also several ways to make counters. You can follow the sequential design principles to build counters from scratch. You could also modify or combine existing counter devices.
Henry Hexmoor
29