Upload
truongnhu
View
216
Download
0
Embed Size (px)
Citation preview
ELT601 – Eletrônica Digital IIGraduação em Engenharia Eletrônica
Universidade Federal de Itajubá IESTI
Prof. Rodrigo de Paula Rodrigues
Verilog HDLMáquinas de estados finitos
Verilog | Circuitos sequenciais
Máquinas de estado
Mealy
q Q
X Z
Q D Z = f(q, X)
Moore
X ZqQ QD
ELT601 – Eletrônica Digital II
clk
Q D Z = f(q, X) Q = g(q,X)
Z = f(q) Q = g(q,X)
clk
Verilog | Circuitos sequenciais
Comportamento
Mudança de estado
Geração das saídas
FC
D
E
ELT601 – Eletrônica Digital II
Verilog | Circuitos sequenciais
Modelo em Verilog
Mealy Moore
CLK, X q, X
Q ←←←←f( q, X ) Z ←←←←g( q, X )
CLK, X q
Q ←←←← f( q, X ) Z ←←←← g( q )
ELT601 – Eletrônica Digital II
Q ←←←←f( q, X ) Z ←←←←g( q, X ) Q ←←←← f( q, X ) Z ←←←← g( q )
Verilog | Circuitos sequenciais
Modelo em Verilog
EF
…Z
AB
CD
Estado
Q ←←←← f( q, X )
Saídas
Z ←←←← g( q, X )
ELT601 – Eletrônica Digital II
Definição dos estados Geração de transições Geração das saídas
Verilog | Circuitos sequenciais
Definição de estados
`define parameter
constantes parâmetros
ELT601 – Eletrônica Digital II
Verilog | Circuitos sequenciais
Definição de constantes
`define nome
nome único à constante
palavra
valor
valor numérico
ELT601 – Eletrônica Digital II
palavrareservada
valor numéricopara a constante
Verilog | Circuitos sequenciais
Definição de constantes
`define S1 3’b000`define S2 3’b001`define S3 3’b010…
case ( estado )
`S1: estado <= `S2;`S2: estado <= `S1;
ELT601 – Eletrônica Digital II
`S2: estado <= `S1;`S3: estado <= `S3;…
endcase
Parâmetros
Verilog | Circuitos sequenciais
parameter [a:b] nome = ;
nome único para o parâmetro
palavra
valor
valor numéricolimites
[ ]
ELT601 – Eletrônica Digital II
palavrareservada
valor numéricopara o parâmetro
[ … ] parâmetro opcional
limites
Verilog | Circuitos sequenciais
Codificação de estados
`define S1 2’b00`define S2 2’b01`define S3 2’b10
parameter S1 = 2’b00;
`define S1 2’b00`define S2 2’b01`define S3 2’b11
parameter [1:0] S1 = 2’b00;
`define S1 3’b001`define S2 3’b010`define S3 3’b100
parameter S1 = 3’b001;
Binária Gray “One-hot”
ELT601 – Eletrônica Digital II
parameter S1 = 2’b00;parameter S2 = 2’b01;parameter S3 = 2’b10;
parameter [1:0] S1 = 2’b00;parameter [1:0] S2 = 2’b01;parameter [1:0] S3 = 2’b11;
parameter S1 = 3’b001;parameter S2 = 3’b010;parameter S3 = 3’b100;
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
Mealy Moore
1/0
1/0
0/0
B
1
0
1
A
B0
ELT601 – Eletrônica Digital II
0/00/0
0/0
1/1A
C
0
10
1
A0
C0
D1
0
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
module mef1 ( CLK, RST, X, S );input CLK, X, RST; // entradasoutput S; // saídareg S; // registrosreg [1:0] E; // registros (estado atual)
“variável” de estadodepende da definição dos
estados
ELT601 – Eletrônica Digital II
endmodule
declaração de estados
transição de estados
geração das saídas
estados
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
Mealy
`define SA 2’b00`define SB 2’b01
Gray
`define SA 3’b001`define SB 3’b010
“one-hot”
1/0
1/0
0/0
B `define SA 2’b00`define SB 2’b01
Binária
ELT601 – Eletrônica Digital II
`define SB 2’b01`define SC 2’b11
`define SB 3’b010`define SC 3’b1000/0
0/0
0/0
1/1A
C
`define SB 2’b01`define SC 2’b10
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
always @( posedge CLK or posedge RST ) begin
if ( RST == 1’b1 )E <= `SA;
elsebegin
Mealy Transição de estados
1/0
1/0
0/0
B
ELT601 – Eletrônica Digital II
begincase (E)
`SA: if ( X == 1’b1 ) E <= `SB; else E <= `SA;`SB: if ( X == 1’b1 ) E <= `SB; else E <= `SC;`SC: if ( X == 1’b1 ) E <= `SB; else E <= `SA;default: E <= `SA;
endcaseend
end
0/00/0
0/0
1/1A
C
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
always @( E or X ) begin
case (E) `SA: S <= 1‘b0;`SB: S <= 1‘b0;`SC:
if ( X == 1’b1 )
Mealy Geração das saídas
1/0
1/0
0/0
B
ELT601 – Eletrônica Digital II
if ( X == 1’b1 ) S <= 1‘b1;
else S <= 1‘b0;
default: S <= 1‘b0;endcase
end
0/00/0
0/0
1/1A
C
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
Mealy
Descrição
RTL1/0
1/0
0/0
B
ELT601 – Eletrônica Digital II
0/00/0
0/0
1/1A
C
Mapeada na tecnologia
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
Gray “one-hot”
parameter SA=2’b00;parameter SB=2’b01;
Binária
Moore
parameter SA=2’b00;parameter SB=2’b01;
parameter SA=4’b0001;parameter SB=4’b0010;
0
1
0
1
A
B0
0
ELT601 – Eletrônica Digital II
parameter SB=2’b01;parameter SC=2’b10;parameter SD=2’b11;
parameter SB=2’b01;parameter SC=2’b11;parameter SD=2’b10;
parameter SB=4’b0010;parameter SC=4’b0100;parameter SD=4’b1000;
0
10
1
A0
C0
D1
0
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
always @( posedge CLK or posedge RST ) begin
if ( RST == 1’b1 )E <= SA;
elsecase (E)
Mealy Transição de estadosMoore
0
1
0
1
A0
B0
0
ELT601 – Eletrônica Digital II
case (E) SA: if ( X == 1’b1 ) E <= SB; else E <= SA;SB: if ( X == 1’b1 ) E <= SB; else E <= SC;SC: if ( X == 1’b1 ) E <= SD; else E <= SA;SD: if ( X == 1’b1 ) E <= SB; else E <= SA;default: E <= SA; // necessário ?
endcaseend
0
10
1
0C0
D1
0
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
MealyMoore
always @( E ) begin
case (E) SA: S <= 1‘b0;SB: S <= 1‘b0;
Geração das saídas
0
1
0
1
A
B0
0
ELT601 – Eletrônica Digital II
SB: S <= 1‘b0;SC: S <= 1‘b0;SD: S <= 1‘b1;
endcaseend
0
10
1
A0
C0
D1
0
Verilog | Circuitos sequenciais
Exemplo: Detecção da sequência “101”
Descrição
RTL
Máquina de estados
MealyMoore
0
1
0
1
A
B0
0
ELT601 – Eletrônica Digital II
Possibilidades
if…else
bloco sequencial único
codificação “one-hot”
0
10
1
A0
C0
D1
0
Exercícios
Verilog | Circuitos sequenciais
Desenvolva uma máquina de estados para controlar uma máquinade venda de refrigerantes com as seguintes características:
Entradas
M Moeda de 1 UND N Nota de 2 UND
Pedido de produtos
R Refrigerante, a 2 UND L Lanche, a 3 UND
Opções Máximo valor:
Utilize o modelo de Moore.
ELT601 – Eletrônica Digital II
Opções
C Cancelar. Devolver 1 UND.
Saídas de liberação
LR Refrigerante LL Lanche LM Liberar moeda
Permitir recebimento
PM Permitir receber moedas PN Permitir receber notas
Máximo valor:3 UND
Exercícios
Verilog | Circuitos sequenciais
M
eS1
eS2
eS0
M
M
N
NeLM1 C
eLM2
C
eLM3
eS0: Estado inicial
eS1: 1 unidade adicionada
eS2: 2 unidades adicionadas
eS3: 3 unidades adicionadas
eLM1: Liberar moeda para situação 1
eLM2: Liberar moeda para situação 2
eLM3: Liberar moeda para situação 3
ELT601 – Eletrônica Digital II
eS3
M
C
eLR1R
eLR2
R
eLL
L
eLM3: Liberar moeda para situação 3
eLR1: Liberar refrigerante para situação 1
eLR2: Liberar refrigerante para situação 2
eLL : Liberar lanche