elt601 – eletrônica digital iielt2014.com.br/materiais/1-2016/elt601-32/aulas/aula 12 -...

24
ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade Federal de Itajubá IESTI Prof. Rodrigo de Paula Rodrigues Verilog HDL Máquinas de estados finitos

Upload: truongnhu

Post on 19-Jan-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

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

Circuitos sequenciais

QQ

QQ FC

D

E

ELT601 – Eletrônica Digital II

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

Verilog | Circuitos sequenciais

Obrigado

ELT601 – Eletrônica Digital II