Lab 5 - Digital Design With VHDL
Lab 5 - Digital Design With VHDL
Laboratory 5
Rational: The purpose of this lab is to become familiar in using nite state machines.
Part I
We wish to implement a finite state machine (FSM) that recognizes two specific sequences of applied input symbols, namely four consecutive 1s or four consecutive 0s. There is an input w and an output z. Whenever w = 1 or
w = 0 for four consecutive clock pulses the value of z has to be 1; otherwise, z = 0. Overlapping sequences are
allowed, so that if w = 1 for five consecutive clock pulses the output z will be equal to 1 after the fourth and fifth
pulses. Figure 1 illustrates the required relationship between w and z.
Clock
w
z
A/0
w=0
w=1
1
B/0
F/0
w=0
1
1
0
G/0
C/0
w=0
D/0
0
1
w=0
0
1
H/0
1
E/1
I/1
Name
State Code
y8 y7 y6 y5 y4 y3 y2 y1 y0
A
B
C
D
E
F
G
H
I
000000001
000000010
000000100
000001000
000010000
000100000
001000000
010000000
100000000
Name
State Code
y8 y7 y6 y5 y4 y3 y2 y1 y0
A
B
C
D
E
F
G
H
I
000000000
000000011
000000101
000001001
000010001
000100001
001000001
010000001
100000001
Name
State Code
y3 y2 y1 y0
A
B
C
D
E
F
G
H
I
0000
0001
0010
0011
0100
0101
0110
0111
1000
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY part2 IS
PORT ( . . . define input and output ports
. . .);
END part2;
ARCHITECTURE Behavior OF part2 IS
. . . declare signals
TYPE State_type IS (A, B, C, D, E, F, G, H, I);
Attribute to declare a specific encoding for the states
attribute syn_encoding : string;
attribute syn_encoding of State_type : type is "0000 0001 0010 0011 0100 0101 0110 0111 1000";
SIGNAL y_Q, Y_D : State_type; - - y_Q is present state, y_D is next state
BEGIN
...
PROCESS (w, y_Q) - - state table
BEGIN
case y_Q IS
WHEN A IF (w = 0) THEN Y_D <= B;
ELSE Y_D <= F;
END IF;
. . . other states
END CASE;
END PROCESS; - - state table
PROCESS (Clock) - - state flip-flops
BEGIN
...
END PROCESS;
. . . assignments for output z and the LEDs
END Behavior;
4. To examine the circuit produced by Quartus II open the RTL Viewer tool. Double-click on the box shown
in the circuit that represents the finite state machine, and determine whether the state diagram that it shows
properly corresponds to the one in Figure 2. To see the state codes used for your FSM, open the Compilation
Report, select the Analysis and Synthesis section of the report, and click on State Machines.
5. Simulate the behavior of your circuit.
6. Once you are confident that the circuit works properly as a result of your simulation, download the circuit
into the FPGA chip. Test the functionality of your design by applying the input sequences and observing
the output LEDs. Make sure that the FSM properly transitions between states as displayed on the red LEDs,
and that it produces the correct output values on LEDG0 .
7. In step 3 you instructed the Quartus II Synthesis tool to use the state assignment given in your VHDL
code. To see the result of removing this setting, open again the Quartus II settings window by choosing
Assignments > Settings, and click on the Analysis and Synthesis item, then click on the More Setting
button. Change the setting for State Machine Processing from User-Encoded to One-Hot. Recompile
the circuit and then open the report file, select the Analysis and Synthesis section of the report, and click
on State Machines. Compare the state codes shown to those given in Table 2, and discuss any differences
that you observe.
Part III
The sequence detector can be implemented in a straightforward manner using shift registers, instead of using
the more formal approach described above. Create VHDL code that instantiates two 4-bit shift registers; one is
for recognizing a sequence of four 0s, and the other for four 1s. Include the appropriate logic expressions in your
design to produce the output z. Make a Quartus II project for your design and implement the circuit on the DE2series board. Use the switches and LEDs on the board in a similar way as you did for Parts I and II and observe
the behavior of your shift registers and the output z. Answer the following question: could you use just one 4-bit
shift register, rather than two? Explain your answer.
5