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

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.

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