elt601 – eletrônica digital ii - elt2014 - engenharia eletrônica -...

38
ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade Federal de Itajubá IESTI Prof. Rodrigo de Paula Rodrigues Verilog HDL Descrição algorítmica

Upload: truongdieu

Post on 03-Dec-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

ELT601 – Eletrônica Digital IIGraduação em Engenharia Eletrônica

Universidade Federal de Itajubá IESTI

Prof. Rodrigo de Paula Rodrigues

Verilog HDLDescrição algorítmica

Page 2: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Descrição algorítmica

Verilog | Descrição algorítmica

A

F

B

C

ERepresentaçãoIntermediária

RTL

Circuitodigital

ELT601 – Eletrônica Digital II

D

Page 3: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Descrições

Verilog | Descrição algorítmica

X Y

Por fluxo e estrutural Algorítmica

ELT601 – Eletrônica Digital II

Código concorrente

Hardware opera de forma paralela

Código sequencial

Page 4: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Descrição algorítmica em Verilog

Verilog | Descrição algorítmica

AB

E

C

D

F

Comando 1

Comando 2

Comando N

...

Bloco ‘a’

ELT601 – Eletrônica Digital II

F

D

D

Comando 1

Comando 2

Comando M

...

Bloco ‘b’

Page 5: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Bloco ‘always’

Verilog | Descrição algorítmica

always @( )

begin

lista de comandos a serem executados

opcionais no casode um único comando ser

executado

[ ]

lista de sensibilidade

[ ]

ELT601 – Eletrônica Digital II

end

serem executadosexecutado

[ ]

[ … ] parâmetro opcional

Page 6: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Bloco ‘always’

Verilog | Descrição algorítmica

Comando 1

Comando 2Comando 3

always @( ... )

...

Evento de ativação

Comando 1

Comando 2

Comando 3Flu

xo

ELT601 – Eletrônica Digital II

Comando N ...

Fim

Comando N

Page 7: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Bloco ‘always’ - Ativação

Verilog | Descrição algorítmica

always always @( a ) always @( b or c )

d

always @(posedge d)

a b c

ou

ELT601 – Eletrônica Digital II

negedge!

Page 8: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Comandos sequenciais

Verilog | Descrição algorítmica

always @( ... )

Comando sequencial

comando

reg

ELT601 – Eletrônica Digital II

dados integerfloat

tiposbloqueadoresnão bloqueadores

! Não sintetizável

Page 9: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Registros

Verilog | Descrição algorítmica

reg ;

nome do registro

“dimensão”

[[ ]]

ELT601 – Eletrônica Digital II

“dimensão”especificação

dos limites

[ … ] parâmetro opcional

tamanho e 1 bit

Page 10: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Números inteiros

Verilog | Descrição algorítmica

integer ;

lista de inteiros

tamanho de 32 bits “número de inteiros”especificação

[[ ]]

ELT601 – Eletrônica Digital II

[ … ] parâmetro opcional

tamanho de 32 bitssinalizado especificação

dos limites

Page 11: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Atribuições bloqueadoras

Verilog | Descrição algorítmica

Registro a receber a atribuição

registro Valor de atribuição

a = b;c = d ^ w;

d = ~ e;

f = g | b;

...*

ELT601 – Eletrônica Digital II

valor ou equação de atribuição

* Aplicável ao se modelar lógica sequencial

Importante:A análise e atribuição

são realizadas no mesmo momento do

comando

Page 12: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Atribuições não bloqueadoras

Verilog | Descrição algorítmica

Registro a receber a atribuição

registro Valor de atribuição ...<

a <= b;

c <= d ^ w;d <= ~ e;

f <= g | b;

*

ELT601 – Eletrônica Digital II

valor ou equação de atribuição

f <= g | b;

* Aplicável ao modelamento de lógica combinacional

Importante:A análise é realizada no momento do comando,

enquanto a atribuição, ao final do bloco

Page 13: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Verilog | Descrição algorítmica

Exemplos

1 Levante o circuito gerado por cada um do trechos de descrições apresentados

1module M1( a, b, c );

input a, b; // entradasoutput c; // saídasreg c; // registros

a

a

ELT601 – Eletrônica Digital II

always @( a or b )begin

c = a | b;end

endmodule

a

bc

Page 14: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Verilog | Descrição algorítmica

Exemplos

1 b module M2( a, b, clk );

input a, clk; // entradasoutput b; // saídasreg b; // registros

always @( posedge clk )begin

b = a;

a C b

FF D

D Q

ELT601 – Eletrônica Digital II

b = a;end

endmodule

clk

FF D

Page 15: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Verilog | Descrição algorítmica

Exemplos

1 c module M3( a, b, clk );

input a, clk; // entradasoutput b; // saídasreg b, s; // registros

always @( negedge clk )begin

s = a;

a

clk

C b

FF D

D Q

ELT601 – Eletrônica Digital II

s = a;b = s;

end

endmodule

Page 16: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Verilog | Descrição algorítmica

Exercícios

1 d module M4( a, b, clk );

input a, clk; // entradasoutput b; // saídasreg b, s; // registros

always @( negedge clk )begin

s <= a;

a

clk

b

FF D

D Q

FF D

D Q

“s” “b”

ELT601 – Eletrônica Digital II

s <= a;b <= s;

end

endmodule

Page 17: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Operadores lógicos

Verilog | Descrição algorítmica

Símbolo Função lógica

&& E

|| Ou

! Negação

Exemplo

a && b

c || d

! e

== Teste de igualdade f == g

ELT601 – Eletrônica Digital II

== Teste de igualdade f == g

!= Teste de desigualdade w != h

=== Teste de igualdade (x, z) w === h

!== Teste de desigualdade (x, z) x !== y

Page 18: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Operadores lógicos

Verilog | Descrição algorítmica

Resultado:

0

A && B

A = 2’d3, B = 2’d0

Resultado:

1

A || BResultado:

1

! BResultado:

0

! AResultado:

0

A == B

A = 3’b0xx, B = 3’b0xz, C = 3’b0xx

ELT601 – Eletrônica Digital II

Resultado:

x

A && B

A = 3’b0xx, B = 3’b0xz, C = 3’b0xx

Resultado:

x

A != BResultado:

1

A !== BResultado:

0

A === BResultado:

1

A === C

Page 19: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Operadores relativos

Verilog | Descrição algorítmica

Símbolo Função

<= Menor ou igual a

> Maior que

< Menor que

Exemplo

a <= b

c > d

a < b

ELT601 – Eletrônica Digital II

<= Menor ou igual a a <= b

>= Maior ou igual a f >= g

Page 20: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Operadores relativos

Verilog | Descrição algorítmica

A = 4, B = 3, X = 4’b1010, Y = 4’b1101, Z = 4’b1xxx

Resultado:

A <= BResultado:

A > BResultado:

Y >= XResultado:

Y < ZResultado:

A > Z

ELT601 – Eletrônica Digital II

Resultado:

0Resultado:

1Resultado:

1Resultado:

xResultado:

x

Page 21: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de comparação ‘SE’

Verilog | Descrição algorítmica

if ( )

;

Formato 1

if ( )

;

else

;

Formato 2

if ( )

begin

Formato 4

if ( )

;

else if ( )

;

Formato 3

ELT601 – Eletrônica Digital II

;end

;

else

;

Page 22: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de comparação ‘SE’

Verilog | Descrição algorítmica

if ( A == 1’b1 )

S = B & C ;

Formato 1

if ( A == 1’b1 )

S = B & C;

else

S = B | C;

Formato 2

if ( A === 1’bx )

begin

C <= A & B;D <= C | E;

Formato 4

if ( A == 2’b01 )

S = 4’b1010;

else if ( A == 2’b10 )

S = 4’b1110;

Formato 3

ELT601 – Eletrônica Digital II

S = B | C; D <= C | E;F <= ~ G;

end

S = 4’b1110;

else

S = 4’b0000;

Page 23: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de comparação ‘CASO’

Verilog | Descrição algorítmica

expressão de teste

case ( )

: ;: ;: ;

11

22

33

expressão de teste

alternativas

comandos a serem executados no caso da alternativa associada ser verdadeira

um único comando ou

ELT601 – Eletrônica Digital II

default : ;

endcase

padrão

...

[ … ] parâmetro opcional

[ ]alternativapadrão

um único comando ou um bloco de comandos entre as palavras begine end

Page 24: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de comparação ‘CASO’

Verilog | Descrição algorítmica

case ( controle )

2’b00, 2’b01 : saida = x | y;2’b10 : begin

saida = x ^ y;sinal = 1’b1;

ELT601 – Eletrônica Digital II

sinal = 1’b1;end

2’b11 : sinal = 1’b0;

endcase

Page 25: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de comparação ‘CASO’

Verilog | Descrição algorítmica

case ( funcao_ula )

3’b000 : saida = x & y;3’b001 : saida = x | y;3’b101 : saida = x ^ y;3’b110 : saida = ~x ;default : saida = 4’h0;

ELT601 – Eletrônica Digital II

default : saida = 4’h0;

endcase

Page 26: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de comparação ‘CASO’

Verilog | Descrição algorítmica

casez

casex

Estado z é tratado como ‘não importa’

ELT601 – Eletrônica Digital II

Estados x e z são tratados como ‘não importa’

Page 27: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de comparação ‘CASO’

Verilog | Descrição algorítmica

reg [3:0] codigo;integer estado;

casex ( codigo )

4’b1xxx : estado = 1;4’bx1xx : estado = 2;4’bxx1x : estado = 3;

ELT601 – Eletrônica Digital II

4’bxx1x : estado = 3;4’bxxx1 : estado = 4;

endcase

Page 28: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de repetição ‘Enquanto’

Verilog | Descrição algorítmica

while ( ) ;

while ( )begin

end

expressão de teste

ELT601 – Eletrônica Digital II

endcomando a ser

executado enquanto a condição de teste for

verdadeira

bloco de comandos a serem executado enquanto a condição de teste for verdadeira

Page 29: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de repetição ‘Enquanto’

Verilog | Descrição algorítmica

reg [0:9] entrada, saida;integer indice;…

indice = 0;

while ( indice < 10 )begin

ELT601 – Eletrônica Digital II

saida[ indice ] = entrada[ indice ] ^ 1’b1;indice = indice + 1;

end…

Page 30: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de repetição ‘Para’

Verilog | Descrição algorítmica

inicializaçãoinicialização

for ( ; ; ) begin

end

testeatualização

for ( ; ; ) ;

ELT601 – Eletrônica Digital II

comando a ser executado enquanto a

condição de teste for verdadeira

bloco de comandos a serem executado enquanto a condição de teste for verdadeira

end

Page 31: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Estrutura de repetição ‘Para’

Verilog | Descrição algorítmica

reg [0:9] entrada, saida;integer indice;…

for ( indice = 0; indice < 10; indice = indice + 1 )begin

saida[ indice ] = entrada[ indice ] ^ 1’b1;

ELT601 – Eletrônica Digital II

saida[ indice ] = entrada[ indice ] ^ 1’b1;

end…

Page 32: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Exemplos – Mux 2 para 1

Verilog | Descrição algorítmica

/* /* Mux 2 para 1 comportamental

*/module mux2p1( a, b, s, z );

input a, b, s; // entradasoutput z; // saídasreg z; // registro de saída

always @( a or b or s )begin

za

b

0

1

ELT601 – Eletrônica Digital II

beginif ( s == 1’b1 )

z = b;else

z = a;end

endmodule

s

Page 33: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Exemplos – Circuito combinacional

Verilog | Descrição algorítmica

/* /* Combinacional

*/module combinacional( a, b, c, d );

input a, b, c; // entradasoutput d; // saídasreg s, d; // registros

always @( a or b or c )begin

a

b

c d

s

sinal interno

ELT601 – Eletrônica Digital II

begins <= a & b;d <= s & c;

end

endmodule

c d

Page 34: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Exemplos – Demux 4 para 1

Verilog | Descrição algorítmica

/* Demux 4 para 1 comportamentalDemux 4 para 1 comportamental

*/module demux4p1( I, S, O );

input I; // entrada Iinput [1:0] S; // entradas de seleçãooutput [3:0] O; // saídasreg [3:0] O; // registro de saídainteger cnt; // contador

always @( I or S )begin

IO0O1O2O3

00011011

ELT601 – Eletrônica Digital II

beginfor (cnt = 0; cnt < 4; cnt = cnt + 1 )

if ( cnt == S ) O[ cnt ] = I;

elseO[ cnt ] = 1’b0;

endendmodule

s1 s0

Page 35: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Verilog | Descrição algorítmica

Exercícios

1 Implemente um demux 4 para 1 por meio da construção comportamental ‘case’

2 Implemente um decodificador de prioridade de 4 entradas e 2 saídas

ELT601 – Eletrônica Digital II

Page 36: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Verilog | Descrição algorítmica

Demux 4 para 1

IO0O1O2O3

00011011

ELT601 – Eletrônica Digital II

s1 s0

Page 37: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Verilog | Descrição algorítmica

Codificador de prioridade

s1

E0E1E2E3

s0Codif.Prioridade

E3 E1 E2 E0 S1 S01 x x x 1 10 1 x x 1 00 0 1 x 0 10 0 0 1 0 0

Entradas Saídas

ELT601 – Eletrônica Digital II

Page 38: ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica - …elt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 10... · 2016-10-25 · sequencial comando reg ELT601

Verilog | Fim

Obrigado

ELT601 – Eletrônica Digital II