Sample
Design:
A Controller
for a Simple Traffic Light
Assumption:
Two Linked Pairs of Traffic Lights
If
one light is Green, the “cross light” must be Red.
Assumed
Cycling Rules
One Light Cross Light Comments
Green Red Traffic moving on one street
Yellow Red Traffic on cross street must wait
for
this light to turn red.
Red Red Both lights are red for about
one
second.
Red Green Cross traffic now moves.
This
is the basic sequence for a traffic light without turn signals or
features such as an
“advanced green”, etc.
Name the
States
State |
Light 1 |
Light 2 |
Alias |
0 |
Red |
Red |
RR |
1 |
Red |
Green |
RG |
2 |
Red |
Yellow |
RY |
3 |
Red |
Red |
RR |
4 |
Green |
Red |
GR |
5 |
Yellow |
Red |
YR |
Step 1a:
State Diagram for the System
Notation:
L1L2, so RG Ž Light 1 is Red and Light 2 is Green
The six–state design is more
easily implemented.
Step 1b:
Define the State Table
Present State |
Next State |
||
Number |
Alias |
Number |
Alias |
0 |
RR |
1 |
RG |
1 |
RG |
2 |
RY |
2 |
RY |
3 |
RR |
3 |
RR |
4 |
GR |
4 |
GR |
5 |
YR |
5 |
YR |
0 |
RR |
At the moment, this is
just a modulo–6 counter with unusual output.
We
shall add some additional circuitry to allow for safety constraints.
The
choice of Red – Red as state 0 is arbitrary, but convenient.
Step 2: Count the States and
Determine the Flip–Flop Count
There
are six states, so we have N = 6.
Solve
2P–1 < N £ 2P for P, the number of flip–flops.
2P–1
< 6 £ 2P gives P =
3, because 22 < 6 £ 23.
We
denote the states by Q2Q1Q0, because the
symbol “Y” is taken to
indicate the color Yellow.
Step 3:
Assign a 3–bit Binary Number
to Each State
This
is a modified counter, so the assignments are quite obvious.
State |
Q2 |
Q1 |
Q0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
2 |
0 |
1 |
0 |
3 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
5 |
1 |
0 |
1 |
We have two possible additional
states: 6 and 7.
Normally, these are ignored,
but we consider them due to
safety constraints.
Redefine the
State Diagram to Add Safety
States
6 and 7 should never be entered. Each is
“RR” for safety.
Step 4a:
Derive the Output Equations.
|
Alias |
Q2Q1Q0 |
R1 |
G1 |
Y1 |
R2 |
G2 |
Y2 |
0 |
RR |
0 0 0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
RG |
0 0 1 |
1 |
0 |
0 |
0 |
1 |
0 |
2 |
RY |
0 1 0 |
1 |
0 |
0 |
0 |
0 |
1 |
3 |
RR |
0 1 1 |
1 |
0 |
0 |
1 |
0 |
0 |
4 |
GR |
1 0 0 |
0 |
1 |
0 |
1 |
0 |
0 |
5 |
YR |
1 0 1 |
0 |
0 |
1 |
1 |
0 |
0 |
6 |
RR |
1 1 0 |
1 |
0 |
0 |
1 |
0 |
0 |
7 |
RR |
1 1 1 |
1 |
0 |
0 |
1 |
0 |
0 |
Here are the output
equations
G1 = Q2·Q1’·Q0’ G2
= Q2’·Q1’·Q0
Y1 = Q2·Q1’·Q0 Y2
= Q2’·Q1·Q0’
R1 = (G1 + Y1)’ R2 = (G2 + Y2)’
Step 4a:
Derive the Output Equations.
(page 2)
Here
are the equations again.
G1
= Q2·Q1’·Q0’ G2 = Q2’·Q1’·Q0
Y1
= Q2·Q1’·Q0 Y2 = Q2’·Q1·Q0’
R1
= (G1 + Y1)’ R2 = (G2 + Y2)’
We
derive the Green and Yellow signals, which are easier.
We stipulate that if a light is not Green or Yellow, it must be Red.
Now
add a safety constraint: If a light is Green or Yellow, the
cross light must be Red.
R1 = (G1 + Y1)’ + G2 + Y2, and
R2 = (G2 + Y2)’ + G1 + Y1
These equations may lead to a
light showing two colors.
This is obviously an error
situation.
Step 4b:
Derive the State Transition Table.
Present
State |
Next State |
|
|
Q2Q1Q0 |
Q2Q1Q0 |
0 |
0 0 0 |
0 0 1 |
1 |
0 0 1 |
0 1 0 |
2 |
0 1 0 |
0 1 1 |
3 |
0 1 1 |
1 0 0 |
4 |
1 0 0 |
1 0 1 |
5 |
1 0 1 |
0 0 0 |
6 |
1 1 0 |
0 0 0 |
7 |
1 1 1 |
0 0 0 |
Step 5:
Separate the Table into Three Tables
Q2 |
|
Q1 |
|
Q0 |
|||
PS |
NS |
|
PS |
NS |
|
PS |
NS |
Q2Q1Q0 |
Q2 |
|
Q2Q1Q0 |
Q1 |
|
Q2Q1Q0 |
Q0 |
0 0 0 |
0 |
|
0 0 0 |
0 |
|
0 0 0 |
1 |
0 0 1 |
0 |
|
0 0 1 |
1 |
|
0 0 1 |
0 |
0 1 0 |
0 |
|
0 1 0 |
1 |
|
0 1 0 |
1 |
0 1 1 |
1 |
|
0 1 1 |
0 |
|
0 1 1 |
0 |
1 0 0 |
1 |
|
1 0 0 |
0 |
|
1 0 0 |
1 |
1 0 1 |
0 |
|
1 0 1 |
0 |
|
1 0 1 |
0 |
1 1 0 |
0 |
|
1 1 0 |
0 |
|
1 1 0 |
0 |
1 1 1 |
0 |
|
1 1 1 |
0 |
|
1 1 1 |
0 |
Color
added to emphasize the transitions of interest.
Step 6:
Select the Flip–Flops to Use
Use
JK flip–flops. What a surprise!
The
excitation table for a JK flip-flop is given again.
Q(T) |
Q(T + 1) |
|
J |
K |
0 |
0 |
|
0 |
d |
0 |
1 |
|
1 |
d |
1 |
0 |
|
d |
1 |
1 |
1 |
|
d |
0 |
Step 7: Derive
the Input Tables
Flip-Flop 2 |
|
Flip-Flop 1 |
|
Flip-Flop 0 |
|||||||||
PS |
NS |
Input |
|
PS |
NS |
Input |
|
PS |
NS |
Input |
|||
Q2Q1Q0 |
Q2 |
J2 |
K2 |
|
Q2Q1Q0 |
Q1 |
J1 |
K1 |
|
Q2Q1Q0 |
Q0 |
J0 |
K0 |
0 0 0 |
0 |
0 |
d |
|
0 0 0 |
0 |
0 |
d |
|
0 0 0 |
1 |
1 |
d |
0 0 1 |
0 |
0 |
d |
|
0 0 1 |
1 |
1 |
d |
|
0 0 1 |
0 |
d |
1 |
0 1 0 |
0 |
0 |
d |
|
0 1 0 |
1 |
d |
0 |
|
0 1 0 |
1 |
1 |
d |
0 1 1 |
1 |
1 |
d |
|
0 1 1 |
0 |
d |
1 |
|
0 1 1 |
0 |
d |
1 |
1 0 0 |
1 |
d |
0 |
|
1 0 0 |
0 |
0 |
d |
|
1 0 0 |
1 |
1 |
d |
1 0 1 |
0 |
d |
1 |
|
1 0 1 |
0 |
0 |
d |
|
1 0 1 |
0 |
d |
1 |
1 1 0 |
0 |
d |
1 |
|
1 1 0 |
0 |
d |
1 |
|
1 1 0 |
0 |
0 |
d |
1 1 1 |
0 |
d |
1 |
|
1 1 1 |
0 |
d |
1 |
|
1 1 1 |
0 |
d |
1 |
Step 8: Derive
the Input Equations
Here they are
J2
= Q1 · Q0 J1
= Q2’ · Q0 J0
= Q2’ + Q1’
K2 = Q1
+ Q0 K1 = Q2
+ Q0 K0
= 1
There
is no need to summarize the equations.
Step 10:
Draw the Circuit