0% found this document useful (0 votes)
36 views13 pages

Finite State Machines: Counter

This document discusses using finite state machines to implement counters. It provides examples of 2-bit and 3-state counters and describes their state transition tables and logic circuits. Potential variations are also outlined, such as using a Mealy machine, adding reset or decrement functionality, and including additional inputs like enable/disable. Counters have applications like keeping track of bits sent or incrementing a program counter each clock cycle.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views13 pages

Finite State Machines: Counter

This document discusses using finite state machines to implement counters. It provides examples of 2-bit and 3-state counters and describes their state transition tables and logic circuits. Potential variations are also outlined, such as using a Mealy machine, adding reset or decrement functionality, and including additional inputs like enable/disable. Counters have applications like keeping track of bits sent or incrementing a program counter each clock cycle.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Finite state machines: counter

Asynchronous counter: flip-flops driven by different clocks


Clock period of each successive flip-flop is 2 times previous one
power of 2 times the first clock
Finite state machines: counter

Use FSM to implement a synchronous counter

2-bit (mod 4) counter


starts at 00
counts up to 11
resets to 00 after 11
Finite state machine
state (q): 2 bits, initially 00
output (z): same as state
input
x = 0: same state
x = 1: increment

Usage
Keeping track of number of bits sent
Program counter (PC)
Increments each clock cycle to point to next instruction
Finite state machines: counter

q1 q0 x
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

1a. State transition table inputs


Finite state machines: counter

q1 q0 x q 1+ q 0+
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 1 0
1 0 1 1 1
1 1 0 1 1
1 1 1 0 0

1b. New state


input 0: no change
input 1: increment
Finite state machines: counter

q1 q0 x q 1+ q 0+ z1 z0
0 0 0 0 0 0 0
0 0 1 0 1 0 0
0 1 0 0 1 0 1
0 1 1 1 0 0 1
1 0 0 1 0 1 0
1 0 1 1 1 1 0
1 1 0 1 1 1 1
1 1 1 0 0 1 1

1c. Output: same as current state label


Note that the figure reverses our usual definition of the output bits
Finite state machines: counter

q1 q0 x q 1+ q 0+ z1 z0 D1 D0
0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 1
0 1 0 0 1 0 1 0 1
0 1 1 1 0 0 1 1 0
1 0 0 1 0 1 0 1 0
1 0 1 1 1 1 0 1 1
1 1 0 1 1 1 1 1 1
1 1 1 0 0 1 1 0 0

2. Pick flip-flops: both D


3. Use excitation tables to get values for D
(copy columns for next state)
Finite state machines: counter

Input Next Output ROM


q1 q0 x q 1+ q 0+ z1 z0 D1 D0 Address Data
0 0 0 0 0 0 0 0 0 000 0000
0 0 1 0 1 0 0 0 1 001 0001
0 1 0 0 1 0 1 0 1 010 0101
0 1 1 1 0 0 1 1 0 011 0110
1 0 0 1 0 1 0 1 0 100 1010
1 0 1 1 1 1 0 1 1 101 1011
1 1 0 1 1 1 1 1 1 110 1111
1 1 1 0 0 1 1 0 0 111 1100

4. Draw circuit: ROM


address: q1q0x
data: z1z0D1D0
Finite state machines: counter

Input Next Output Minterms


q1 q0 x q 1+ q 0+ z1 z0 D1 D0 z1
0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 1
0 1 0 0 1 0 1 0 1
0 1 1 1 0 0 1 1 0
1 0 0 1 0 1 0 1 0 q1\q0\x
1 0 1 1 1 1 0 1 1 q1\q0x
1 1 0 1 1 1 1 1 1 q1q0\x
1 1 1 0 0 1 1 0 0 q 1q 0x

4. Draw circuit: gates


Minterms
z1 = q1\q0\x + q1\q0x + q1q0\x + q1q0x
etc.
Simplified
z 1 = q1
z 0 = q0
D1 = q1\q0 + q0 (\q1x + q1\x)
D0 = \q0x + q0\x
Finite state machines: 3-state counter

Note that it is not necessary to use all possible states for the counter
3-state counter: reset to 00 after 10

Changes:
Replace entries for state 11 in state transition table with "d"
Next state after state 10 is 00 with input 1
Finite state machines: 3-state counter

Input Next Output


+ +
q1 q0 x q1 q0 z1 z0 D1 D0
0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 1
0 1 0 0 1 0 1 0 1
0 1 1 1 0 0 1 1 0
1 0 0 1 0 1 0 1 0
1 0 1 0 0 1 0 0 0
1 1 0 d d d d d d
1 1 1 d d d d d d
Finite state machines: counter

Other possible counter variations


Use Mealy machine
Use input to reset
Input 0: increment
Input 1: reset
Finite state machines: counter

Other possible counter variations


Decrement
Input 0: hold
Input 1: decrement
Increment/decrement
Input 0: increment
Input 1: decrement
Additional inputs
Asynchronous clear: reset value immediately to 00
Enable/disable
When this input is 0, counter continues to output current value
When 1, perform normal operations
Additional output
Counter out
Normally 1, but 0 when maximum value is reached
What could this be used for?
(Think of a connection with enable)
This document was created with Win2PDF available at http://www.daneprairie.com.
The unregistered version of Win2PDF is for evaluation or non-commercial use only.

You might also like