máquinas de estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · máquinas de estado...

23
IC-UNICAMP MC613 IC/UNICAMP 1 MC 613 IC/Unicamp Prof Guido Araújo Prof Mario Côrtes Máquinas de Estado

Upload: others

Post on 13-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 1

MC 613

IC/Unicamp

Prof Guido Araújo

Prof Mario Côrtes

Máquinas de Estado

Page 2: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 2

Combinational

circuit Flip-flops

Clock

Q

W Z

Combinational circuit

Forma geral de um circuito síncrono

Page 3: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 3

Máquina de Moore

C z 1 =

Reset

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

Clockcycle: t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10

w : 0 1 0 1 1 0 1 1 1 0 1

z : 0 0 0 0 0 1 0 0 1 1 0

Page 4: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 4

Present Next state Output state w = 0 w = 1 z

A A B 0

B A C 0

C A C 1

C z 1 =

Rese

t

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

Diagrama de Estados

Page 5: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 5

Implementação

Combinational circuit

Combinational circuit

Clock

y 2

z

w y 1 Y 1

Y 2

Page 6: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 6

Atribuição de Estado

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 0

B 01 00 10 0

C 10 00 10 1

11 dd dd d

C z 1 =

Rese

t

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

Page 7: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 7

w 00 01 11 10

0

1

0

1 0

y

2

y

1

Y 1

wy 1

y 2

=

w 00 01 11 10

0

1

0 d

1 d

y 2

y 1

Y 2

wy 1

y 2

wy 1

y 2

+ =

d

d

0

0

0

0

0

0

1

0 1

0

1

0

d

y 1

z y 1

y 2

=

0

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

Derivação das expressões lógicas

Page 8: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 8

D Q

Q

D Q

Q

Y 2

Y 1 w

Clock

z

y 1

y 2

Resetn

Circuito sequencial

Page 9: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 9

t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10

1

0

1

0

1

0

1

0

Clock

w

y 1

y 2

1

0 z

Timing diagram

Page 10: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 10

FSM de Moore

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

TYPE State_type IS (A, B, C); -- Tipo Enumerado para

-- definir os Estados

SIGNAL y : State_type;

BEGIN

PROCESS ( Resetn, Clock )

BEGIN

IF Resetn = '0' THEN -- A é o estado inicial

y <= A;

ELSIF (Clock'EVENT AND Clock = '1') THEN

con’t ...

Page 11: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 11

FSM de Moore

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;

C z 1 =

Rese

t

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

Page 12: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 12

FSM de Moore - Simulação

C z 1 =

Rese

t

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

Page 13: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 13

FSM de Moore - Simulação

C z 1 =

Rese

t

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

Page 14: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 14

FSM de Moore

Codificação Alternativa (2 processos)

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

TYPE State_type IS (A, B, C);

SIGNAL y_present, y_next : State_type;

Page 15: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 15

FSM de Moore

Codificação Alternativa (2 processos) 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;

WHEN B =>

IF w = '0' THEN

y_next <= A;

ELSE

y_next <= C;

END IF;

C z 1 =

Rese

t

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

Page 16: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 16

FSM de Moore - Codificação Alternativa

WHEN C =>

IF w = '0' THEN

y_next <= A;

ELSE

y_next <= C;

END IF;

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;

C z 1 =

Rese

t

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

Page 17: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 17

FSM - Especificando a Atribuição de

Estados

ARCHITECTURE Behavior OF simple IS

TYPE State_TYPE IS (A, B, C);

ATTRIBUTE ENUM_ENCODING : STRING;

ATTRIBUTE ENUM_ENCODING OF State_type: TYPE IS "00 01

11";

SIGNAL y_present, y_next : State_type;

BEGIN

con’t ...

• Obs: Atributo Enum_Encoding é específico da ferramenta Quartus. Esta

solução pode não funcionar em outras ferramentas CAD

Page 18: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 18

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

FSM - Especificando a Atribuição de

Estados

Page 19: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 19

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;

FSM - Especificando a Atribuição de

Estados

C

z 1 =

Reset

B

z 0 = A z 0 = w

0 =

w

1 =

w

1 =

w

0 =

w

0 = w

1 =

Page 20: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 20

A

w 0 = z 0 =

w 1 = z 1 = B w 0 = z 0 =

Reset

w 1 = z 0 =

Máquina de Mealy

Page 21: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 21

FSM de Mealy

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

Page 22: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 22

FSM de Mealy 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

A

w 0 = z 0 =

w 1 = z 1 = B w 0 = z 0 =

Rese

t w 1 = z 0 =

Page 23: Máquinas de Estado - ic.unicamp.brcortes/mc613/slides/aula_09/aula9_fsm.… · Máquinas de Estado . IC-UNICAMP ... Atribuição de Estado Present Next state state w = 0 w = 1 Output

IC-UNICAMP

MC613 – IC/UNICAMP 23

FSM de Mealy

PROCESS ( y, w )

BEGIN

CASE y IS

WHEN A =>

z <= '0';

WHEN B =>

z <= w;

END CASE;

END PROCESS;

END Behavior;

A

w 0 = z 0 =

w 1 = z 1 = B w 0 = z 0 =

Rese

t w 1 = z 0 =