Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Maquina de Estados
Maquina de Estados
MC 602
IC/Unicamp
2011s2
Prof Mario Crtes
VHDL
Mquina de Estados (FSM)
MC602 2011
IC-UNICAMP
Tpicos
Mquinas de estados
Moore
Mealy
MC602 2011
IC-UNICAMP
Combinational
circuit
Flip-flops
Combinational
circuit
Clock
MC602 2011
Mquina de Moore
IC-UNICAMP
Reset
w = 1
Az= 0
w = 0
Bz = 0
w = 0
w = 1
w = 0
Cz = 1
t0
0
0
t1
1
0
t2
0
0
t3
1
0
t4
1
0
w = 1
t5
0
1
t6
1
0
t7
1
0
t8
1
1
t9
0
1
t10
1
0
4
Diagrama de Estados
IC-UNICAMP
Rese
t
w= 1
w= 0
A z = 0
B z = 0
w= 0
w= 1
w= 0
C z = 1
w= 1
MC602 2011
Next state
Present
state w = 0 w = 1
A
B
C
A
A
A
B
C
C
Output
z
0
0
1
Implementao
IC-UNICAMP
Y1
y1
Combinational
circuit
Combinational
circuit
Y2
y2
Clock
MC602 2011
FSM de Moore
IC-UNICAMP
Reset
w= 1
w= 0
B z=0
w= 0
USE ieee.std_logic_1164.all;
ENTITY simple IS
PORT (Clock, Resetn, w : IN
z
: OUT
END simple;
A z=0
w= 1
w= 0
C z=1
STD_LOGIC;
STD_LOGIC );
w= 1
o estado inicial
= '1') THEN
cont ...
MC602 2011
FSM de Moore
IC-UNICAMP
CASE y IS
WHEN A =>
IF w = '0
THEN y <= A;
ELSE y <= B;
END IF;
WHEN B =>
IF w = '0
THEN y <= A;
ELSE y <= C;
END IF;
WHEN C =>
IF w = '0'
THEN
y <= A;
ELSE
y <= C;
END IF;
END CASE;
END IF;
END PROCESS;
z <= '1' WHEN y = C ELSE '0';
END Behavior;
MC602 2011
Reset
w= 1
w= 0
A z=0
B z=0
w= 0
w= 1
w= 0
C z=1
w= 1
IC-UNICAMP
Reset
w= 1
w= 0
A z=0
B z=0
w= 0
w= 1
w= 0
C z=1
w= 1
MC602 2011
IC-UNICAMP
FSM de Moore
Codificao Alternativa (2 processos)
Reset
w= 1
w= 0
A z=0
USE ieee.std_logic_1164.all;
B z=0
w= 0
w= 1
w= 0
ENTITY simple IS
PORT (Clock, Resetn, w : IN
z
: OUT
END simple;
C z=1
STD_LOGIC;
STD_LOGIC );
w= 1
MC602 2011
10
IC-UNICAMP
FSM de Moore
Codificao Alternativa (2 processos)
Reset
BEGIN
PROCESS ( w, y_present )
BEGIN
CASE y_present IS
WHEN A =>
IF w = '0'
y_next
ELSE
y_next
END IF;
WHEN B =>
IF w = '0'
y_next
ELSE
y_next
END IF;
MC602 2011
w= 1
w= 0
A z=0
B z=0
w= 0
w= 1
w= 0
C z=1
THEN
<= A;
w= 1
<= B;
THEN
<= A;
<= C;
11
WHEN C =>
IF w = '0' THEN
y_next <= A;
ELSE
y_next <= C;
END IF;
END CASE;
END PROCESS;
Reset
w= 1
w= 0
A z=0
B z=0
w= 0
w= 1
w= 0
C z=1
w= 1
12
IC-UNICAMP
MC602 2011
PROCESS ( w, y_present )
BEGIN
CASE y_present IS
WHEN A =>
IF w = '0' THEN
y_next <= A;
ELSE
y_next <= B;
END IF;
WHEN B => .
END CASE;
END PROCESS;
PROCESS (Clock, Resetn)
BEGIN
IF Resetn .
y_present <= A;
ELSIF (Clock'EVENT AND
Clock = '1') THEN
y_present <= y_next;
END IF;
END PROCESS;
13
IC-UNICAMP
14
IC-UNICAMP
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY simple IS
PORT ( Clock, Resetn, w : IN
STD_LOGIC;
z
: OUT STD_LOGIC );
END simple;
ARCHITECTURE Behavior OF simple IS
SIGNAL y_present, y_next : STD_LOGIC_VECTOR(1 DOWNTO 0);
CONSTANT A
: STD_LOGIC_VECTOR(1 DOWNTO 0) := "00";
CONSTANT B
: STD_LOGIC_VECTOR(1 DOWNTO 0) := "01";
CONSTANT C
: STD_LOGIC_VECTOR(1 DOWNTO 0) := "11";
BEGIN
PROCESS ( w, y_present )
BEGIN
CASE y_present IS
WHEN A =>
IF w = '0' THEN y_next <= A;
ELSE y_next <= B;
END IF;
cont
MC602 2011
15
IC-UNICAMP
END Behavior;
MC602 2011
16
Mquina de Mealy
IC-UNICAMP
Reset
w= 1z= 0
w= 0z= 0
w= 1z= 1
w= 0z= 0
MC602 2011
17
FSM de Mealy
IC-UNICAMP
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mealy IS
PORT (Clock, Resetn, w : IN
z
STD_LOGIC );
END mealy;
STD_LOGIC;
: OUT
cont
MC602 2011
18
IC-UNICAMP
FSM de Mealy
Reset
ARCHITECTURE Behavior OF mealy IS
w= 1 z=0
TYPE State_type IS (A, B);
w= 0 z=0
A
B
SIGNAL y : State_type;
w= 0 z=0
BEGIN
PROCESS ( Resetn, Clock )
BEGIN
IF Resetn = '0' THEN y <= A;
ELSIF (Clock'EVENT AND Clock = '1') THEN
CASE y IS
WHEN A =>
IF w = '0' THEN y <= A;
ELSE y <= B;
END IF;
WHEN B =>
IF w = '0' THEN y <= A;
ELSE y <= B;
END IF;
END CASE;
END IF;
END PROCESS;
cont
MC602 2011
w= 1 z=1
19
FSM de Mealy
IC-UNICAMP
Reset
w= 1 z=0
w= 0 z=0
PROCESS ( y, w )
BEGIN
CASE y IS
WHEN A =>
z <= '0';
WHEN B =>
z <= w;
END CASE;
END PROCESS;
END Behavior;
MC602 2011
w= 1 z=1
w= 0 z=0
20