Aula 16

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 92

Universidade Federal de Campina Grande

Centro de Engenharia Elétrica e Informática


Departamento de Engenharia Elétrica

Circuitos Lógicos

Aula 16

Prof. Gutemberg Gonçalves dos Santos Júnior

2023.1 - Campina Grande-PB - Brasil


CRÉDITOS
§ Slides baseados no material:
q Harris, D.; Harris, S., Digital Design and Computer Architecture –
ARM Edition, 2016, Morgan Kaufman

CL - Aula 16 2
MÁQUINA DE ESTADOS FINITOS (FSM)

§ Características de um circuito sequencial Estrutura Básica de um Circuito


síncrono: Sequencial
q Todo elemento do circuito deve ser ou um
registrador (FF) ou um bloco combinacional
q Pelo menos um elemento é um registrador
q Todos os registradores recebem o mesmo sinal de
clock
q Todo caminho síncrono contém pelo menos um
registrador
q Os registradores (FFs) armazenam o estado do
sistema
q O estado muda a cada borda do clock
• O sistema opera de forma síncrona com o clock

CL - Aula 16 3
MÁQUINA DE ESTADOS FINITOS (FSM)

§ Máquina de Estados Finitos Estrutura Básica de um Circuito


q Trata-se de um modelo matemático de
Sequencial
computação
q É uma máquina abstrata que pode assumir
exatamente um estado, de uma quantidade finita
de estados, em um determinado instante de
tempo
q Estão no coração da maioria dos projetos de
circuitos digitais
q Pode ser utilizada para modelar problemas em
diferentes áreas como por exemplo matemática,
inteligência artificial, jogos, robótica, etc.
q Representamos o comportamento de uma FSM
através de um diagrama de transição de estados

CL - Aula 16 4
MÁQUINA DE ESTADOS FINITOS (FSM)

§ Exemplo de modelagem de um simples robô em Diagrama de Estados


FSM § Podemos definir 3 estados
q Ele pode ser ligado (estado ligado) q S0 à desligado
q Ele pode ser desligado (estado desligado) q S1 à ligado e se movendo para frente
S2 à ligado e se movendo para trás
q Ele não pode estar nos estados ligado e desligado q

ao mesmo tempo
q Ao ser ligado, o robô se move para frente
q Ao detectar um obstáculo, o robô se move na S1
Botão Sensor
direção contrária
• A detecção poderá ocorrer por meio de um sensor
Botão Sensor
q O mesmo botão permite ligar e desligar o robô
• Se o robô estiver desligado, pressionar o botão o
ligará S0 S2
• Se o robô estiver ligado, pressionar o botão o
desligará
Botão
CL - Aula 16 5
MÁQUINA DE ESTADOS FINITOS (FSM)

§ Nos projetos de uma FSM, dividimos a Estrutura Básica de um Circuito


parte combinacional em duas partes: Sequencial
q Lógica de Saída: computa a saída do
circuito Lógica de
q Lógica de Próximo Estado: computa o Saída
Lógica de
próximo estado do circuito Próximo
Estado

CL - Aula 16 6
MÁQUINA DE ESTADOS FINITOS (FSM)

Tipos de FSMs
§ Nos projetos de uma FSM, dividimos a
parte combinacional em duas partes:
q Lógica de Saída: computa a saída do
circuito
q Lógica de Próximo Estado: computa o
próximo estado do circuito

§ Podemos classificar as FSMs em 2 tipos:


q Máquina de Moore
• As saídas dependem apenas do estado atual
q Máquina de Mealy
• As saídas dependem do estado atual e das
entradas
CL - Aula 16 7
MÁQUINA DE ESTADOS FINITOS (FSM)

Tipos de FSMs
§ Nos projetos de uma FSM, dividimos a
parte combinacional em duas partes:
q Lógica de Saída: computa a saída do
circuito
q Lógica de Próximo Estado: computa o
próximo estado do circuito

§ Podemos classificar as FSMs em 2 tipos:


q Máquina de Moore
• As saídas dependem apenas do estado atual
q Máquina de Mealy Note que na máquina de Moore as saídas só
• As saídas dependem do estado atual e das são alteradas com o clock. Isso não é válido
entradas para as máquinas do tipo Mealy

CL - Aula 16 8
MÁQUINA DE ESTADOS FINITOS (FSM)

Tipos de FSMs
§ Nos projetos de uma FSM, dividimos a
parte combinacional em duas partes:
q Lógica de Saída: computa a saída do
circuito
q Lógica de Próximo Estado: computa o
próximo estado do circuito

§ Podemos classificar as FSMs em 2 tipos:


q Máquina de Moore
• As saídas dependem apenas do estado atual
q Máquina de Mealy Além do mais, note que estamos
• As saídas dependem do estado atual e das considerando a utilização de FF-D como
entradas registradores

CL - Aula 16 9
EXEMPLO DE FSM
Cruzamento entre Avenidas
§ Vamos projetar um controlador para um Academic e Bravado
sinal de trânsito
q Vamos instalar dois sensores nas avenidas
Academic e Bravado (TA e TB)
• Retorna verdadeiro se alunos estão presentes
e falso caso contrário
q Vamos instalar dois semáforos (LA e LB)
• Cada semáforo recebe informações do
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode
mudar de estado a depender dos valores dos
sensores
q Também há um botão de reset
• Coloca o semáforo no estado inicial
CL - Aula 16 10
EXEMPLO DE FSM
Caixa Preta da FSM
§ Vamos projetar um controlador para um
sinal de trânsito § Entradas:
q Vamos instalar dois sensores nas avenidas q CLK, Reset, TA, TB
Academic e Bravado (TA e TB)
§ Saídas
• Retorna verdadeiro se alunos estão presentes
e falso caso contrário q LA , LB
q Vamos instalar dois semáforos (LA e LB)
• Cada semáforo recebe informações do
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode
mudar de estado a depender dos valores dos
sensores
q Também há um botão de reset
• Coloca o semáforo no estado inicial
CL - Aula 16 11
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar um controlador para um § FSM do tipo Moore
sinal de trânsito q As saídas (LA e LB) são indicadas em
q Vamos instalar dois sensores nas avenidas cada estado
Academic e Bravado (TA e TB) Reset
• Retorna verdadeiro se alunos estão presentes
e falso caso contrário S0
q Vamos instalar dois semáforos (LA e LB) LA: green
• Cada semáforo recebe informações do LB: red
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode
mudar de estado a depender dos valores dos
sensores
q Também há um botão de reset
• Coloca o semáforo no estado inicial
CL - Aula 16 12
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar um controlador para um § FSM do tipo Moore
sinal de trânsito q As saídas (LA e LB) são indicadas em
q Vamos instalar dois sensores nas avenidas cada estado
Academic e Bravado (TA e TB) Reset
• Retorna verdadeiro se alunos estão presentes
e falso caso contrário 𝑇! S0
q Vamos instalar dois semáforos (LA e LB) LA: green
• Cada semáforo recebe informações do LB: red
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode
mudar de estado a depender dos valores dos
sensores
q Também há um botão de reset
• Coloca o semáforo no estado inicial
CL - Aula 16 13
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar um controlador para um § FSM do tipo Moore
sinal de trânsito q As saídas (LA e LB) são indicadas em
q Vamos instalar dois sensores nas avenidas cada estado
Academic e Bravado (TA e TB) Reset
• Retorna verdadeiro se alunos estão presentes 𝑇!
e falso caso contrário 𝑇! S0 S1
q Vamos instalar dois semáforos (LA e LB) LA: green LA: yellow
• Cada semáforo recebe informações do LB: red LB: red
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode
mudar de estado a depender dos valores dos
sensores
q Também há um botão de reset
• Coloca o semáforo no estado inicial
CL - Aula 16 14
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar um controlador para um § FSM do tipo Moore
sinal de trânsito q As saídas (LA e LB) são indicadas em
q Vamos instalar dois sensores nas avenidas cada estado
Academic e Bravado (TA e TB) Reset
• Retorna verdadeiro se alunos estão presentes 𝑇!
e falso caso contrário 𝑇! S0 S1
q Vamos instalar dois semáforos (LA e LB) LA: green LA: yellow
• Cada semáforo recebe informações do LB: red LB: red
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode S2
mudar de estado a depender dos valores dos LA: red
sensores LB: green
q Também há um botão de reset
• Coloca o semáforo no estado inicial
CL - Aula 16 15
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar um controlador para um § FSM do tipo Moore
sinal de trânsito q As saídas (LA e LB) são indicadas em
q Vamos instalar dois sensores nas avenidas cada estado
Academic e Bravado (TA e TB) Reset
• Retorna verdadeiro se alunos estão presentes 𝑇!
e falso caso contrário 𝑇! S0 S1
q Vamos instalar dois semáforos (LA e LB) LA: green LA: yellow
• Cada semáforo recebe informações do LB: red LB: red
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode S2
mudar de estado a depender dos valores dos LA: red
sensores LB: green
q Também há um botão de reset 𝑇"
• Coloca o semáforo no estado inicial
CL - Aula 16 16
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar um controlador para um § FSM do tipo Moore
sinal de trânsito q As saídas (LA e LB) são indicadas em
q Vamos instalar dois sensores nas avenidas cada estado
Academic e Bravado (TA e TB) Reset
• Retorna verdadeiro se alunos estão presentes 𝑇!
e falso caso contrário 𝑇! S0 S1
q Vamos instalar dois semáforos (LA e LB) LA: green LA: yellow
• Cada semáforo recebe informações do LB: red LB: red
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode S3 S2
mudar de estado a depender dos valores dos LA: red LA: red
sensores LB: yellow LB: green
q Também há um botão de reset 𝑇" 𝑇"
• Coloca o semáforo no estado inicial
CL - Aula 16 17
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar um controlador para um § FSM do tipo Moore
sinal de trânsito q As saídas (LA e LB) são indicadas em
q Vamos instalar dois sensores nas avenidas cada estado
Academic e Bravado (TA e TB) Reset
• Retorna verdadeiro se alunos estão presentes 𝑇!
e falso caso contrário 𝑇! S0 S1
q Vamos instalar dois semáforos (LA e LB) LA: green LA: yellow
• Cada semáforo recebe informações do LB: red LB: red
controlador para especificar se deve estar
verde, amarelo ou vermelho
q Teremos um sinal de clock de 5 segundos
• Em cada borda ascendente, o semáforo pode S3 S2
mudar de estado a depender dos valores dos LA: red LA: red
sensores LB: yellow LB: green
q Também há um botão de reset 𝑇" 𝑇"
• Coloca o semáforo no estado inicial
CL - Aula 16 18
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Iniciamos nosso projeto através da codificação § FSM do tipo Moore
dos estados e das saídas existentes no diagrama

Tabela de Codificação de Tabela de Codificação de


Estados Saídas

Estado Codificação S1:0 Saída Codificação L1:0

S0 00 green 00

S1 01 yellow 01

S2 10 red 10

S3 11 - -

CL - Aula 16 19
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0

CL - Aula 16 20
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1

CL - Aula 16 21
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0

CL - Aula 16 22
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0

CL - Aula 16 23
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1

CL - Aula 16 24
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1
1 0 X 1 1 0

CL - Aula 16 25
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1
1 0 X 1 1 0
1 1 X X 0 0

CL - Aula 16 26
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1
1 0 X 1 1 0
1 1 X X 0 0

𝑆’# = 𝑆%# 𝑆$ + 𝑆# 𝑆%$ 𝑇" + 𝑆# 𝑆%$ 𝑇" = 𝑆# ⨁𝑆$


CL - Aula 16 27
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de próximo estado
§ FSM do tipo Moore
q Entradas: TA, TB, Estado atual S1:0
q Saídas: Próximo estado S’1:0

Tabela: Lógica de Próximo Estado


Entradas Saídas
Estado Atual Sensores Próximo Estado
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1
1 0 X 1 1 0
1 1 X X 0 0

𝑆’# = 𝑆%# 𝑆$ + 𝑆# 𝑆%$ 𝑇" + 𝑆# 𝑆%$ 𝑇" = 𝑆# ⨁𝑆$


𝑆’$ = 𝑆%# 𝑆%$ 𝑇! + 𝑆# 𝑆%$ 𝑇" CL - Aula 16 28
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 yellow 01
0 1 red 10
1 0 - -
1 1

CL - Aula 16 29
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 0 0 1 0 yellow 01
0 1 red 10
1 0 - -
1 1

CL - Aula 16 30
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 0 0 1 0 yellow 01
0 1 0 1 1 0 red 10
1 0 - -
1 1

CL - Aula 16 31
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 0 0 1 0 yellow 01
0 1 0 1 1 0 red 10
1 0 1 0 0 0 - -
1 1

CL - Aula 16 32
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 0 0 1 0 yellow 01
0 1 0 1 1 0 red 10
1 0 1 0 0 0 - -
1 1 1 0 0 1

CL - Aula 16 33
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 0 0 1 0 yellow 01
0 1 0 1 1 0 red 10
1 0 1 0 0 0 - -
1 1 1 0 0 1

𝐿!# = 𝑆#

CL - Aula 16 34
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 0 0 1 0 yellow 01
0 1 0 1 1 0 red 10
1 0 1 0 0 0 - -
1 1 1 0 0 1

𝐿!# = 𝑆#
𝐿!$ = 𝑆%# 𝑆$
CL - Aula 16 35
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 0 0 1 0 yellow 01
0 1 0 1 1 0 red 10
1 0 1 0 0 0 - -
1 1 1 0 0 1

𝐿!# = 𝑆# 𝐿"# = 𝑆%#


𝐿!$ = 𝑆%# 𝑆$
CL - Aula 16 36
EXEMPLO DE FSM
Criação do Diagrama de Estados
§ Vamos projetar a lógica de saída
§ FSM do tipo Moore
q Entradas: Estado atual S1:0
q Saídas: Acionamento dos LEDs

Tabela: Lógica de Saída


Entradas Saídas
Codificação de Saídas
Estado
LEDS Saída Codificação L1:0
Atual
S1 S0 LA1 LA0 LB1 LB0 green 00

0 0 0 0 1 0 yellow 01
0 1 0 1 1 0 red 10
1 0 1 0 0 0 - -
1 1 1 0 0 1

𝐿!# = 𝑆# 𝐿"# = 𝑆%#


𝐿!$ = 𝑆%# 𝑆$ 𝐿"$ = 𝑆# 𝑆$
CL - Aula 16 37
EXEMPLO DE FSM

§ O esquemático da FSM projetada é apresentado abaixo

CL - Aula 16 38
EXEMPLO DE FSM

§ O esquemático da FSM projetada é apresentado abaixo

CL - Aula 16 39
EXEMPLO DE FSM

§ O esquemático da FSM projetada é apresentado abaixo

CL - Aula 16 40
EXEMPLO DE FSM

§ O diagrama temporal para a FSM projetada é apresentado abaixo

CL - Aula 16 41
EXEMPLO DE FSM
§ Implementação em SystemVerilog

module fsm_moore(input logic Ta, Tb, clk, reset,


output logic [1:0] La, Lb);

parameter S0 = 2'b00;
parameter S1 = 2'b01;
parameter S2 = 2'b10;
parameter S3 = 2'b11;

logic [1:0] current_state, next_state;

//Next State Logic


always@(Ta or Tb or current_state)
begin
case(current_state)
S0: next_state = Ta ? S0 : S1;
S1: next_state = S2;
S2: next_state = Tb ? S2 : S3;
S3: next_state = S0;
default: next_state = S0;
endcase
end CL - Aula 16 42
EXEMPLO DE FSM
§ Implementação em SystemVerilog

//Update State Register S2:


always@(posedge clk) begin
begin La = 2'b10; //red
current_state <= reset == 0 ? S0 : next_state; Lb = 2'b00; //green
end end
S3:
//Output Logic begin
always@(current_state) La = 2'b10; //red
begin Lb = 2'b01; //yellow
case(current_state) end
S0: default:
begin begin
La = 2'b00; //green La = 2'b00; //green -- corresponds to S0
Lb = 2'b10; //red Lb = 2'b10; //red
end end
S1: endcase
begin end
La = 2'b01; //yellow endmodule
Lb = 2'b10; //red
end
CL - Aula 16 43
EXEMPLO DE FSM
§ Implementação em SystemVerilog

module fsm_moore(input logic Ta, Tb, clk, reset, //Update State Register S2:
output logic [1:0] La, Lb); always@(posedge clk) begin
begin La = 2'b10; //red
parameter S0 = 2'b00; current_state <= reset == 0 ? S0 : next_state; Lb = 2'b00; //green
parameter S1 = 2'b01; end end
parameter S2 = 2'b10; S3:
parameter S3 = 2'b11; //Output Logic begin
always@(current_state) La = 2'b10; //red
logic [1:0] current_state, next_state; begin Lb = 2'b01; //yellow
case(current_state) end
//Next State Logic S0: default:
always@(Ta or Tb or current_state) begin begin
begin La = 2'b00; //green La = 2'b00; //green -- corresponds to S0
case(current_state) Lb = 2'b10; //red Lb = 2'b10; //red
S0: next_state = Ta ? S0 : S1; end end
S1: next_state = S2; S1: endcase
S2: next_state = Tb ? S2 : S3; begin end
S3: next_state = S0; La = 2'b01; //yellow endmodule
default: next_state = S0; Lb = 2'b10; //red
endcase end
end CL - Aula 16 44
EXEMPLO DE FSM

§ Veja que utilizamos a codificação binária para representar os


estados (S0 a S3)
§ Uma outra opção é a utilização da codificação “one-hot
encoding”
q Cada palavra possui apenas 1 bit igual a ‘1’
q Exemplo: 0001, 0010, 0100, 1000
q Requer mais Flip-Flops
q Normalmente a lógica de próximo estado e de saída são mais
simples ao se utilizar essa codificação

CL - Aula 16 45
EXEMPLO DE FSM (2)

§ Alyssa P. Hacker tem um caramujo que


desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo
percebe que os últimos dois dígitos
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que
represente o cérebro do caramujo.

CL - Aula 16 46
EXEMPLO DE FSM (2)

§ Alyssa P. Hacker tem um caramujo que


desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo
percebe que os últimos dois dígitos
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 47
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Moore
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset
percebe que os últimos dois dígitos S0
percorridos foi 01, ele sorri. Vamos Y=0
desenhar uma FSM do tipo Moore que
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 48
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Moore
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset A=0

percebe que os últimos dois dígitos S0 S1


percorridos foi 01, ele sorri. Vamos Y=0 Y=0
desenhar uma FSM do tipo Moore que A=1
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 49
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Moore
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset A=0 A=1

percebe que os últimos dois dígitos S0 S1 S2


percorridos foi 01, ele sorri. Vamos Y=0 Y=0 Y=1
desenhar uma FSM do tipo Moore que A=1 A=0

represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 50
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Moore
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset A=0 A=1

percebe que os últimos dois dígitos S0 S1 S2


percorridos foi 01, ele sorri. Vamos Y=0 Y=0 Y=1
A=0
desenhar uma FSM do tipo Moore que A=1 A=0
A=1
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 51
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 A S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 A=1
A=1
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1

CL - Aula 16 52
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 A S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 0 1 A=1
A=1
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1

CL - Aula 16 53
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 A S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 0 1 A=1
A=1
0 0 1 0 0
0 1 0
0 1 1
1 0 0
1 0 1

CL - Aula 16 54
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 A S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 0 1 A=1
A=1
0 0 1 0 0
0 1 0 0 1
0 1 1
1 0 0
1 0 1

CL - Aula 16 55
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 A S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 0 1 A=1
A=1
0 0 1 0 0
0 1 0 0 1
0 1 1 1 0
1 0 0
1 0 1

CL - Aula 16 56
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 A S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 0 1 A=1
A=1
0 0 1 0 0
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1

CL - Aula 16 57
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 A S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 0 1 A=1
A=1
0 0 1 0 0
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0

CL - Aula 16 58
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 A S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 0 1 A=1
A=1
0 0 1 0 0
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0

𝑆’# = 𝑆$ 𝐴

CL - Aula 16 59
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de próximo estado FSM Moore
Tabela: Lógica de Próximo Estado A=0 A=1
Reset
Entradas Saídas
Estado Atual Dígito Lido Próximo Estado S0 S1 S2
S1 S0 I S’1 S’0 Y=0 Y=0 Y=1
A=0 A=0
0 0 0 0 1 A=1
A=1
0 0 1 0 0
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0

𝑆’# = 𝑆$ 𝐴
𝑆’$ = 𝐴̅
CL - Aula 16 60
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de saída FSM Moore
Tabela: Lógica de Saída A=0 A=1
Reset
Entradas Saídas
Estado Atual Sorrir?
S0 S1 S2
Y=0 Y=0 Y=1
S1 S0 Y
A=0 A=0
A=1
0 0 A=1
0 1
1 0

CL - Aula 16 61
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de saída FSM Moore
Tabela: Lógica de Saída A=0 A=1
Reset
Entradas Saídas
Estado Atual Sorrir?
S0 S1 S2
Y=0 Y=0 Y=1
S1 S0 Y
A=0 A=0
A=1
0 0 0 A=1
0 1
1 0

CL - Aula 16 62
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de saída FSM Moore
Tabela: Lógica de Saída A=0 A=1
Reset
Entradas Saídas
Estado Atual Sorrir?
S0 S1 S2
Y=0 Y=0 Y=1
S1 S0 Y
A=0 A=0
A=1
0 0 0 A=1
0 1 0
1 0

CL - Aula 16 63
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de saída FSM Moore
Tabela: Lógica de Saída A=0 A=1
Reset
Entradas Saídas
Estado Atual Sorrir?
S0 S1 S2
Y=0 Y=0 Y=1
S1 S0 Y
A=0 A=0
A=1
0 0 0 A=1
0 1 0
1 0 1

CL - Aula 16 64
EXEMPLO DE FSM (2)
Diagrama de Transição de Estados
§ Projetando a lógica de saída FSM Moore
Tabela: Lógica de Saída A=0 A=1
Reset
Entradas Saídas
Estado Atual Sorrir?
S0 S1 S2
Y=0 Y=0 Y=1
S1 S0 Y
A=0 A=0
A=1
0 0 0 A=1
0 1 0
1 0 1

𝑌 = 𝑆#

CL - Aula 16 65
EXEMPLO DE FSM (2)
Como projetar uma FSM do tipo
§ Alyssa P. Hacker tem um caramujo que Mealy?
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo
percebe que os últimos dois dígitos
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 66
EXEMPLO DE FSM (2)
Como projetar uma FSM do tipo
§ Alyssa P. Hacker tem um caramujo que Mealy?
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Note que a lógica de saída depende,
percebe que os últimos dois dígitos também, da entrada!
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 67
EXEMPLO DE FSM (2)
Como projetar uma FSM do tipo
§ Alyssa P. Hacker tem um caramujo que Mealy?
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Note que a lógica de saída depende,
percebe que os últimos dois dígitos também, da entrada!
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que Os arcos do diagrama de estados
apresentará, também, o valor da
represente o cérebro do caramujo. saída!

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 68
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Mealy
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset
percebe que os últimos dois dígitos
S0
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 69
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Mealy
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset
Não há indicação do valor da saída
percebe que os últimos dois dígitos no estado! A saída depende,
S0
percorridos foi 01, ele sorri. Vamos também, do valor da entrada!
desenhar uma FSM do tipo Moore que
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 70
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Mealy
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset
A=0/Y=0

percebe que os últimos dois dígitos


S0 S1
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que A=1/Y=0
represente o cérebro do caramujo.

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 71
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Mealy
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset
A=0/Y=0

percebe que os últimos dois dígitos


S0 S1
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que A=1/Y=0 A=0/Y=0
represente o cérebro do caramujo. A=1/Y=1

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 72
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Alyssa P. Hacker tem um caramujo que FSM Mealy
desliza sobre um fita de papel com 1’s e
0’s sobre ela. Cada vez que o caramujo Reset
A=0/Y=0

percebe que os últimos dois dígitos


S0 S1
percorridos foi 01, ele sorri. Vamos
desenhar uma FSM do tipo Moore que A=1/Y=0 A=0/Y=0
represente o cérebro do caramujo. A=1/Y=1

Apenas 2 estados foram necessários!

Entrada à Número percorrido (A)

Saída à Sorriso (Y)

CL - Aula 16 73
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de próximo estado FSM Mealy
Tabela: Lógica de Próximo Estado A=0/Y=0
Entradas Saídas Reset
Estado Atual Dígito Lido Próximo Estado
S0 S1
S0 A S’0
0 0 A=1/Y=0 A=0/Y=0
0 1 A=1/Y=1
1 0
1 1 Apenas 2 estados foram necessários!

CL - Aula 16 74
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de próximo estado FSM Mealy
Tabela: Lógica de Próximo Estado A=0/Y=0
Entradas Saídas Reset
Estado Atual Dígito Lido Próximo Estado
S0 S1
S0 A S’0
0 0 1 A=1/Y=0 A=0/Y=0
0 1 A=1/Y=1
1 0
1 1 Apenas 2 estados foram necessários!

CL - Aula 16 75
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de próximo estado FSM Mealy
Tabela: Lógica de Próximo Estado A=0/Y=0
Entradas Saídas Reset
Estado Atual Dígito Lido Próximo Estado
S0 S1
S0 A S’0
0 0 1 A=1/Y=0 A=0/Y=0
0 1 0 A=1/Y=1
1 0
1 1 Apenas 2 estados foram necessários!

CL - Aula 16 76
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de próximo estado FSM Mealy
Tabela: Lógica de Próximo Estado A=0/Y=0
Entradas Saídas Reset
Estado Atual Dígito Lido Próximo Estado
S0 S1
S0 A S’0
0 0 1 A=1/Y=0 A=0/Y=0
0 1 0 A=1/Y=1
1 0 1
1 1 Apenas 2 estados foram necessários!

CL - Aula 16 77
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de próximo estado FSM Mealy
Tabela: Lógica de Próximo Estado A=0/Y=0
Entradas Saídas Reset
Estado Atual Dígito Lido Próximo Estado
S0 S1
S0 A S’0
0 0 1 A=1/Y=0 A=0/Y=0
0 1 0 A=1/Y=1
1 0 1
1 1 0 Apenas 2 estados foram necessários!

CL - Aula 16 78
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de próximo estado FSM Mealy
Tabela: Lógica de Próximo Estado A=0/Y=0
Entradas Saídas Reset
Estado Atual Dígito Lido Próximo Estado
S0 S1
S0 A S’0
0 0 1 A=1/Y=0 A=0/Y=0
0 1 0 A=1/Y=1
1 0 1
1 1 0 Apenas 2 estados foram necessários!

𝑆’$ = 𝐴̅

CL - Aula 16 79
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de saída FSM Mealy

Tabela: Lógica de Saída A=0/Y=0


Reset
Entradas Saídas
S0 S1
Estado Atual Dígito Lido Sorrir?
S0 A Y
A=1/Y=0 A=0/Y=0
0 0 A=1/Y=1
0 1
1 0
Apenas 2 estados foram necessários!
1 1

CL - Aula 16 80
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de saída FSM Mealy

Tabela: Lógica de Saída A=0/Y=0


Reset
Entradas Saídas
S0 S1
Estado Atual Dígito Lido Sorrir?
S0 A Y
A=1/Y=0 A=0/Y=0
0 0 0 A=1/Y=1
0 1
1 0
Apenas 2 estados foram necessários!
1 1

CL - Aula 16 81
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de saída FSM Mealy

Tabela: Lógica de Saída A=0/Y=0


Reset
Entradas Saídas
S0 S1
Estado Atual Dígito Lido Sorrir?
S0 A Y
A=1/Y=0 A=0/Y=0
0 0 0 A=1/Y=1
0 1 0
1 0
Apenas 2 estados foram necessários!
1 1

CL - Aula 16 82
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de saída FSM Mealy

Tabela: Lógica de Saída A=0/Y=0


Reset
Entradas Saídas
S0 S1
Estado Atual Dígito Lido Sorrir?
S0 A Y
A=1/Y=0 A=0/Y=0
0 0 0 A=1/Y=1
0 1 0
1 0 0
Apenas 2 estados foram necessários!
1 1

CL - Aula 16 83
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de saída FSM Mealy

Tabela: Lógica de Saída A=0/Y=0


Reset
Entradas Saídas
S0 S1
Estado Atual Dígito Lido Sorrir?
S0 A Y
A=1/Y=0 A=0/Y=0
0 0 0 A=1/Y=1
0 1 0
1 0 0
Apenas 2 estados foram necessários!
1 1 1

CL - Aula 16 84
EXEMPLO DE FSM (2)
Diagrama de Estados
§ Projetando a lógica de saída FSM Mealy

Tabela: Lógica de Saída A=0/Y=0


Reset
Entradas Saídas
S0 S1
Estado Atual Dígito Lido Sorrir?
S0 A Y
A=1/Y=0 A=0/Y=0
0 0 0 A=1/Y=1
0 1 0
1 0 0
Apenas 2 estados foram necessários!
1 1 1

𝑌 = 𝑆$ 𝐴

CL - Aula 16 85
EXEMPLO DE FSM (2)

§ Esquemático da FSM - Moore § Esquemático da FSM - Mealy

CLK
S'0 S0 Y

r
Reset

CL - Aula 16 86
EXEMPLO DE FSM
FSM Moore
§ O diagrama temporal para a FSM projetada é apresentado abaixo

FSM Mealy

CL - Aula 16 87
IMPLEMENTAÇÕES EM SYSTEMVERILOG

CL - Aula 05
88
FSM - MOORE
§ Vamos implementar a FSM S2: next_state = A ? S0 : S1;
default: next_state = S0;
anterior endcase
end
//Update State Register
always@(posedge clk)
begin
current_state <= reset == 0 ? S0 : next_state;
end
module fsm_moore(input logic A, clk, reset, //Output Logic
output logic Y); always@(current_state)
parameter S0 = 2'b00; begin
parameter S1 = 2'b01; case(current_state)
parameter S2 = 2'b10; S0: Y=0;
parameter S3 = 2'b11; S1: Y=0;
logic [1:0] current_state, next_state; S2: Y=1;
//Next State Logic default: Y = 0;
always@(A or current_state) endcase
begin end
case(current_state) endmodule
S0: next_state = A ? S0 : S1;
S1: next_state = A ? S2: S1; CL - Aula 16 89
FSM - MEALY
§ Vamos implementar a FSM default: next_state = S0;
endcase
anterior end
//Update State Register
always@(posedge clk)
begin
current_state <= reset == 0 ? S0 : next_state;
end
//Output Logic
module fsm_mealy(input logic A, clk, reset, always@(A or current_state)
output logic Y); begin
parameter S0 = 1'b0; case(current_state)
parameter S1 = 1'b1; S0: Y=0;
logic current_state, next_state; S1: Y = A ? 1'b1 : 1'b0;
//Next State Logic default: Y = 1'b0;
always@(A or current_state) endcase
begin end
case(current_state) endmodule
S0: next_state = A ? S0 : S1;
S1: next_state = A ? S0: S1;

CL - Aula 16 90
EXERCÍCIOS

CL - Aula 05
91
ALGUMA DÚVIDA?

CL - Aula 05
92

Você também pode gostar