MC602 – 2011
1
IC-UNICAMP
MC 602
IC/Unicamp 2011s2 Prof Mario Côrtes
VHDL Mquina de Estados (FSM) 1 MC602 2011 Tpicos IC-UNICAMP - - PowerPoint PPT Presentation
MC 602 IC-UNICAMP IC/Unicamp 2011s2 Prof Mario Crtes VHDL Mquina de Estados (FSM) 1 MC602 2011 Tpicos IC-UNICAMP Mquinas de estados Moore Mealy Dois templates para implementao em VHDL 2 MC602 2011
MC602 – 2011
1
IC-UNICAMP
IC/Unicamp 2011s2 Prof Mario Côrtes
MC602 – 2011
2
IC-UNICAMP
MC602 – 2011
3
IC-UNICAMP
Combinational circuit Flip-flops Clock Q W Z Combinational circuit
MC602 – 2011
4
IC-UNICAMP
C z 1 =
⁄ ⁄ ⁄ ⁄
Reset B z =
⁄ ⁄ ⁄ ⁄
A z =
⁄ ⁄ ⁄ ⁄
w = w 1 = w 1 = w = w = w 1 =
1
2
3
4
5
6
7
8
9
10
MC602 – 2011
5
IC-UNICAMP
C z 1 = ⁄ ⁄⁄ ⁄ Rese t B z 0 = ⁄ ⁄⁄ ⁄ A z 0 = ⁄ ⁄⁄ ⁄ w = w 1 = w 1 = w = w = w 1 =
MC602 – 2011
6
IC-UNICAMP
Combinational circuit Combinational circuit Clock y2 z w y1 Y
1
Y
2
MC602 – 2011
7
IC-UNICAMP
Present Next state state w = 0 w = 1 Output y 2 y 1 Y 2 Y 1 Y 2 Y 1 z A 00 00 01 B 01 00 10 C 10 00 10 1 11 dd dd d
MC602 – 2011
8
IC-UNICAMP w 00 01 11 10 1 1 y 2 y 1 Y 1 wy 1 y 2 = w 00 01 11 10 1 d 1 d y 2 y 1 Y 2 wy 1 y 2 wy 1 y 2 + = d d 1 1 1 d y 1 z y 1 y 2 = 1 y 2 Y 1 wy 1 y 2 = Y 2 wy 1 wy 2 + = z y 2 = w y 1 y 2 + ( ) = Ignoring don't cares Using don't cares
MC602 – 2011
9
IC-UNICAMP
D Q Q D Q Q Y
2
Y
1
w Clock z y
1
y
2
Resetn
MC602 – 2011
10
IC-UNICAMP
t t
1
t
2
t
3
t
4
t
5
t
6
t
7
t
8
t
9
t
10
1 1 1 1 Clock w y
1
y
2
1 z
MC602 – 2011
11
IC-UNICAMP
MC602 – 2011
12
IC-UNICAMP
MC602 – 2011
13
IC-UNICAMP
MC602 – 2011
14
IC-UNICAMP
MC602 – 2011
15
IC-UNICAMP
MC602 – 2011
16
IC-UNICAMP
MC602 – 2011
17
IC-UNICAMP
MC602 – 2011
18
IC-UNICAMP
MC602 – 2011
19
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;
… con’t
MC602 – 2011
20
IC-UNICAMP
WHEN B => IF w = '0' THEN y_next <= A; ELSE y_next <= C; END IF; WHEN C => IF w = '0' THEN y_next <= A; ELSE y_next <= C; END IF; WHEN OTHERS => y_next <= A; END CASE; END PROCESS; PROCESS ( Clock, Resetn ) BEGIN IF Resetn = '0' THEN y_present <= A; ELSIF (Clock'EVENT AND Clock = '1') THEN y_present <= y_next; END IF; END PROCESS; z <= '1' WHEN y_present = C ELSE '0'; END Behavior;
MC602 – 2011
21
IC-UNICAMP
MC602 – 2011
22
IC-UNICAMP
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mealy IS PORT (Clock, Resetn, w : IN STD_LOGIC; z : OUT STD_LOGIC ); END mealy; … con’t
MC602 – 2011
23
IC-UNICAMP
ARCHITECTURE Behavior OF mealy IS TYPE State_type IS (A, B); SIGNAL y : State_type; 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; … con’t
MC602 – 2011
24
IC-UNICAMP
PROCESS ( y, w ) BEGIN CASE y IS WHEN A => z <= '0'; WHEN B => z <= w; END CASE; END PROCESS; END Behavior;