Chapter 10 Counters

ETEC 2301 Programmable Logic Devices
Chapter 10
Counters
Shawnee State University
Department of Industrial and Engineering Technologies
Copyright © 2007 by Janna B. Gallaher
Asynchronous Counter Operation

A 2-Bit Asynchronous Binary Counter
This counter is
asynchronous because there
is no common clock pulse.
The clocks are cascaded
Clock Pulse
Q1
Q0
Initially
0
0
1
0
1
2
1
0
3
1
1
4 (recycles)
0
0
Asynchronous Counter Operation

A 3-Bit Asynchronous Binary Counter
Asynchronous Counter Operation

Propagation Delay
−
−
One issue with asynchronous counters is propagation delay due to the
“ripple” effect.
The clock pulse of successive stages is derived from the output of
previous stages. This has a cumulative effect.
Asynchronous Counter Operation

Asynchronous Decade Counters
−
−
−
−
−
The modulus of a counter is the
number of unique states through
which the counter will sequence.
A decade counter has 10 states
which produces the BCD code.
Since 4 stages are required to count
to at least 10, the counter must be
forced to recycle before going
through all of its states (counts 1115)
We can force this recycling by
decoding the output and clear the
flip-flops when the count = 10
The glitch is a result of the need for
Q1 to go high before it can be
decoded. The width of the glitch is a
function of the speed of the gate.
Asynchronous Counter Operation

The 74LS93 4-Bit Asynchronous Binary Counter
This device is reset by taking both R0(1) and R0(2) high.
It can be used as a divide by 2 counter by using only the first flip-flop.
It can be configured as a modulus-16 counter (counts 0-15) by connecting the
Q0 output back to the CLK B input
It can be configured as a modulus-10 counter (decade) by partial decoding of
count 10 (connect Q0 to CLK B, Q1 to Ro(1) and Q3 to R0(2).
Synchronous Counter Operation


Synchronous counters have a common clock pulse applied
simultaneously to all flip-flops.
A 2-Bit Synchronous Binary Counter
Inputs
Outputs
Comments
J
K
CLK
Q
Q
0
0
↑
Q0
Q0
No change
0
1
↑
0
1
RESET
1
0
↑
1
0
SET
1
1
↑
Q0
Q0
Toggle
Note that both the J and K inputs are
connected together. The flip-flop will
toggle when both are a 1 (FF0)
Also the transition at clock pulse 2 works
because of propagation delay effects. Q0
is still high on the input of Q1 at the
instant clock 2 hits so FF1 changes state.
A short time later clock 2 has propagated
through FF0 and it goes low.
Synchronous Counter Operation

A 3-Bit Synchronous Binary Counter
Synchronous Counter Operation

A 4-Bit Synchronous Binary Counter
Note: The shaded areas are where the AND gates
are HIGH.
Synchronous Counter Operation

A 4-Bit Synchronous Decade Counter (BCD)
Synchronous Counter Operation

The 74HC163 4-Bit Synchronous Binary Counter
This IC also has the capability of
presetting the count to any valid
binary value.
Note also the asynchronous CLR.
Synchronous Counter Operation

The 74F162 Synchronous BCD Decade Counter
Up/Down Synchronous Counters




Many applications require a counter that can be decremented as well
as incremented
These are also known as bidirectional counters and they can have
any specified sequence of states.
The direction is controlled by an additional input pin that when held
HIGH makes it count up and when held LOW it counts down.
The direction of counting can be reversed at any point (by changing
the state of the up/down pin).
Up/Down Synchronous Counters

Typical 3-Bit Up/Down Counter
Up/Down Synchronous Counters

The 74HC190 Up/Down Decade Counter
Design of Synchronous Counters



We can use synchronous counting circuits to implement state
machines.
State machines are useful in many control and digital applications as
they provide the means for taking specific action based upon what
state the machine is in and, perhaps, some external event.
Two types of state machines
Moore Circuits – the outputs depend only on the present internal state
− Mealy Circuits – the output depends on the present state and one or
more inputs.
State machines are sequential in that they follow prescribed paths. But the
path may vary depending on events.
−

Design of Synchronous Counters

General Model of a Sequential Circuit
Memory circuits are flipflops. They are always in
one state or another. The
state they are in is called
the present state. When
they change, they go to
the next state.
Inputs will affect the
path the circuit takes
to the next state.
The present state of the
output variables Q0
through Qn define the
value of the state they
are in.
Note that the logic section
also looks at the output as
well as the input.
Design of Synchronous Counters

Step 1: State Diagram
−
−
−
−
−
−
−
Shows the progression through the states
Note that there is a direction to each path
This circuit only has a clock input
It can only go through one set path
It does not respond to external events.
Each circle defines a “state”
The numbers inside are the values of the state
variables (outputs)
Design of Synchronous Counters

Step 2: Next-State Table
This table is derived from the
state diagram as shown on the
previous slide.
Q0 is the LSB, Q3 is the MSB
These represent the
current value of the state
variables.
These represent the next
value of the state variables
after the next clock pulse.
Design of Synchronous Counters

Step 3: Flip-Flop Transition Table
−
−
−
−
All possible output transitions are
listed as they transition from the
present state to the next state.
For each output transition, the J and K
inputs that will cause the transition to
occur are shown.
An X indicates a “don't care”
condition.
Use the transition table to design the
counter by applying it to each of the
flip flops in the counter.
Design of Synchronous Counters

Step 4: Karnaugh Maps
−
−
−
−
A Karnaugh map is created for the J and K inputs.
Each cell represents one of the present states of the counter (the left side
of the Next-State table).
Place a 1 or 0 in each cell depending on the transition of the Q output
(from the right side of the Next-State table).
So, each cell is the present state, but the value it holds is for the next
state.
Flip-Flop Transition Table
J0 Map
Next-State Table
This mapping is performed for each row in the Next
State table.
K0 Map
Design of Synchronous Counters

Karnaugh maps for 3-bit Gray Code Counter
Design of Synchronous Counters

Step 5: Logic Expressions for Flip-Flop Inputs
−
The SOP terms for each stage are derived from the Karnaugh Maps:






J 0 =Q 2 Q 1Q 2 Q 1=Q 2 XOR Q 1
K 0=Q 2 Q 1Q 2 A1=Q 2 XOR Q 1
J 1=Q 2 Q 0
K 1=Q 2 Q 0
J 2=Q 1 Q 0
K 2=Q 1 Q 0
Step 6: Counter Implementation
Cascaded Counters


Cascading counters connects them in series with the output of one
becoming the input of the other.
This provides a means of achieving higher-modulus operation
Cascading a mod-4 and mod-8
counter yields a mod-32 counter.
Note that the mod number is 2
raised to the
number of output
lines => 25 = 32
There are 32 unique states for
this counter. This counter
counts in binary.
Cascaded Counters

Cascading is not limited to binary counters
A modulus 100 counter from two decade counters.
A divide by 1000 frequency divider.
Cascaded Counters

Cascaded Counters with Truncated Sequences
−
Any count value can be achieved by forcing a counter to:


reset either before it reaches its full count
pre-loading a specific value and then resetting to this value when full count is
reached.
The LOAD signal goes
true when the terminal
count is reached.
This loads the values on
the D inputs into each
counter.
The counters then count
from this value up to the
terminal value:
(1111111111111111)
Select a counter configuration that counts higher than you want to go
Subtract the number of counts you want from the terminal count.
Use this value as the pre-load value for the counters.
Counter Decoding



Certain count values may need to be extracted from a counter
This is done by using decoding logic to test for the particular value
These decoded values can be used for events for other logic circuits.
Fore some reason a signal is
needed when this counter
reaches a value of 6. The 3input AND gate will go HIGH
when the counter is 6 (110)
Using this scheme, any number
of states can be decoded.
Decoder chips may also be used
instead of standard logic.
Counter Decoding

Decoding Glitches
−
−
As discussed before, glitches creep into the signals due to propagation
delays even in synchronous circuits.
These glitches need to be avoided since the decoding logic is usually fast
enough to detect them
Note the glitches introduced by propagation
delay.
Counter Decoding

Avoiding Glitches
−
−
Strobe the enable input of the decoding logic chips
This allows enough time to elapse after the clock pulse is applied for the
chip to be at a steady value
Note that the CLK pulse also acts as a LOW true
Enable pulse for the decoder logic.
Counter Applications

Many applications use counters
−
−
−
−
−
−
−
Digital Clocks
Automobile Parking Control
Parallel-to-Serial Data Conversion
A/D Converters
Frequency Meters/Counters
Signal Generators
Microprocessors
These examples are in the book
Logic Symbols with Dependency Notation


Alternative logic symbols defined by the ANSI/IEEE
Usually they are similar to the traditional symbols but counters are
one case where they are different.
Qualifying Symbol
Common Control
Block
Mode Dependency
AND Dependency
Control Dependency
Individual Elements
Timing Logic with Software




Using fixed-function logic for timing can get complex and involved
All that is available are flip-flops and counters along with one-shots
Programmable logic devices provide the ability to create software
defined timing using text entry or schematic entry.
Text entry using VHDL is more convenient in many cases.
Schematic Entry Examples
Divide-by-1,048,576 implemented with flip-flops
Divide-by-1,000,000 implemented with decade
counters
Timing Logic with Software

VHDL code can also be used to implement functions
The divide-by-1,000,000
counter implemented with
VHDL.
The program keeps checking
the value of the variable
DelayCount. When it reaches
1,000,000, the variable
ClockOut is set to a 1 and
DelayCount is reset to 0. When
the next event is detected,
ClockOut is reset to a 0. This
results in an output pulse
beginning on the one-millionth
input pulse and ending on the
following input pulse.
Timing Logic with Software

Timers
−
−
−
Timers produce an output pulse of a specific duration
One-shots are usually used for this but are not available in the function
library for programmable devices.
Timers are created using VHDL
General timer configuration with mod-8
counter.
Two separate timer definitions (4 sec. & 25 sec) using
VHDL