Escolar Documentos
Profissional Documentos
Cultura Documentos
2
Maquina de Estado em Verilog
Gabriel Fanelli
Maquina de Estado em Verilog
O processo de projeto pode ser resumido na
determinação de dois circuitos combinacionais e
união com um conjunto de flip-flops.
2
Maquina de Mealy
rst
Flip-Flops
s(t+1)
C1 Próximo s(t)
estado Estado z(t)
x(t)
Atual C2
entrada
clk
3
Maquina de Moore
rst
Flip - Flops
s(t+1) z(t)
C1 C2
Estado s(t)
Seguinte Estado
x(t)
Atual
Entrada
Pode não ser
utilizado,
dependendo
clk do estilo de
descrição
4
Codificação dos Estados
Definição de um “Parâmetro”
Parameter é uma constante que pode ser definida dentro de um módulo. A constante
é local ao módulo. Entretanto, quando é criada uma chamada de um módulo, o valor de
parameter pode ser mudado no local que ocorre a chamada (instanciação do módulo).
module seq_rec (input CLK, input RESET, input X, output reg Z);
// declaração do registrador de estado:
reg [1:0] estado;
iniciar=1
S0/ S1/
00 01
S3/ S2/
10 11
6
Exemplo de
máquina de
estados
Circuito Combinacional
Lógica de Estado Seguinte
Registradores
de Estado
Circuito Combinacional
Lógica de Saída
7
Exemplo de máquina de estados
Usando somente 2 Always
Um armazena e atualiza o estado
Outro produz as saídas
8
Exemplo de
máquina de
estados
Usando somente
2 Always
Circuito Combinacional
Lógica de Saída
9
Exemplo de máquina de estados
Outra arquitetura de máquina de estados com 4 estados:
Alteração do estado agora depende da entrada “sobe”
sobe=0
iniciar=
1
S0/ S1/
00 sobe=1 01
sobe=0
10
Exemplo de
máquina de
estados
Uso de estrutura
IF-ELSE para
codificar evolução
do estado com
entradas
11
Exemplo de máquina de estados
Diagrama de estados para máquina que detecta a sequência
101:
12
Exemplo de máquina de estados
Máquina que detecta a sequência 101:
13
Exemplo de máquina de estados
14
Exemplo de máquina de estados
Simulação para Máquina que detecta a sequencia 101:
15
Exemplo de máquina de estados
Diagrama de estados para máquina de Mealy que detecta a seqüência 101:
0
0
1
0 1
0
rst S0 S1
1
1
0
0
0 S2
16
0
Exemplo de máquina de estados
Código para máquina de Mealy que detecta a seqüência 101:
Descrição alternativa
Na máquina de Mealy a
decodificação das saídas
depende da entrada
17
Exemplo de máquina de estados
Código para máquina de Mealy que detecta a seqüência 101:
Evolução do Estado +
Registradores de Estado
Exemplo de máquina de estados
always@(posedge clk)
case (state)
s1: if (x1 == 1'b1) begin state <= s2; outp <= 1'b1; end
else begin state <= s3; outp <= 1'b0; end
s2: begin
state <= s4; outp <= 1'b1;
end
s3: begin
state <= s4; outp <= 1'b0;
end
s4: begin
state <= s1; outp <= 1'b0;
end
endcase
Máquina de estados com 1 always
O uso de um bloco always geralmente
não é recomendado
Configuração da Ferramenta de Síntese
23
Exemplos de Codificação
Códigos utilizados em codificação de estados
Binário One-hot Gray
0 0000 0000000000000001 00000000
1 0001 0000000000000010 00000001
2 0010 0000000000000100 00000011
3 0011 0000000000001000 00000111
4 0100 0000000000010000 00001111
5 0101 0000000000100000 00011111
6 0110 0000000001000000 00111111
7 0111 0000000010000000 01111111
8 1000 0000000100000000 11111111
9 1001 0000001000000000 11111110
10 1010 0000010000000000 11111100
11 1011 0000100000000000 11111000
12 1100 0001000000000000 11110000
13 1101 0010000000000000 11100000
14 1110 0100000000000000 11000000
15 1111 1000000000000000 10000000
Fluxo de projeto de Máquina de
Estado no software Quartus
Especificações da máquina de estados
BR
Bravado
– Luzes: LA, LB Dining
459
Hall
LB
LA TB
LA
R. Brasópolis
Academic TA TA Ave.
Labs TB LB Dorms
Blvd.
Fields
Exemplo
• Inputs: CLK, Reset, TA, TB
• Outputs: LA, LB
CLK
TA Traffic LA
Light
TB Controller LB
Reset
Exemplo
• Inputs: CLK, Reset, TA, TB
• Outputs: LA, LB
Reset
S0
LA: green
LB: red
Exemplo
• Inputs: CLK, Reset, TA, TB
• Outputs: LA, LB
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
S3 S2
LA: red LA: red
LB: yellow LB: green
TB
TB
TA
Reset
S0 TA S1
Exemplo
LA: green LA: yellow
LB: red LB: red
Exemplo
LA: green LA: yellow
LB: red LB: red
Exemplo
LA: green LA: yellow
LB: red LB: red
Current Next
State Inputs State
S TA TB S'
S0 0 X S1
S0 1 X S0
S1 X X S2
S2 X 0 S3
S2 X 1 S2
S3 X X S0
Exemplo
• Codificação das Saídas
TA
Reset
S0 TA S1
Output Encoding LA: green
LB: red
LA: yellow
LB: red
green 001
yellow 010
S3 S2
LA: red LA: red
red 100 LB: yellow
TB
LB: green
TB
TA
Reset
S0 TA S1
Exemplo
LA: green LA: yellow
LB: red LB: red
Output Encoding
green 001
yellow 010
red 100
Exemplo • Código Verilog Completo
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
S3 S2
LA: red LA: red
LB: yellow LB: green
TB
TB
TA
Reset
S0 TA S1
Exemplo
LA: green LA: yellow
LB: red LB: red
Exemplo
LA: green LA: yellow
LB: red LB: red
Exemplo
LA: green LA: yellow
LB: red LB: red
• Máquina de Estados
• Tabela de Transição de Estados
S3 S2
LA: red LA: red
LB: yellow LB: green
TB
TB
TA
Reset
S0 TA S1
Exemplo
LA: green LA: yellow
LB: red LB: red
• Máquina de Estados
• Codificação de Estados
S3 S2
• Quartus configurado para opção “user-encoded” LA: red LA: red
LB: yellow LB: green
TB
TB
Exemplo
• Teste do circuito
(Testbench)
TA
Reset
S0 TA S1
LA: green LA: yellow