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

28
ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade Federal de Itajubá IESTI Prof. Rodrigo de Paula Rodrigues Verilog HDL Inferência de elementos de memória

Upload: dangtuong

Post on 07-Jun-2018

231 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

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

Universidade Federal de Itajubá IESTI

Prof. Rodrigo de Paula Rodrigues

Verilog HDLInferência de elementos de memória

Page 2: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Inferência de elementos de memória

Verilog | Elementos de memória

D Q

QJ Q

QK

Forma direta

Forma indireta

ELT601 – Eletrônica Digital II

QK

Page 3: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Descrição direta

Verilog | Elementos de memória

Latch D

D Q

QE

QDE

Q

ELT601 – Eletrônica Digital II

Q

Page 4: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Descrição direta

Verilog | Elementos de memória

// Latch D com habilitação

QDE

Q

s

nd

// Latch D com habilitação

module latchD( D, E, Q, Qb );

input D, E; // entradasoutput Q, Qb; // saídaswire nd, r, s; // sinais internos

not n1 ( nd, D );

and a1 ( s, E, D );

Qb

E

D

ELT601 – Eletrônica Digital II

Qr

and a1 ( s, E, D );and a2 ( r, E, nd );

nor no1( Qb, s, Q );nor no2( Q, r, Qb );

endmoduleSimulação no Quartus II

QE

Page 5: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Descrição indireta

Verilog | Elementos de memória

ou Sensibilidadeao nível

ouSensibilidade à borda

Comando 1

Comando 2Comando 3

always @( ... )

Comando N

...

ELT601 – Eletrônica Digital II

atribuição

Condição não coberta

Page 6: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Sensibilidade ao nível

Verilog | Elementos de memória

Nível alto

always @( a )begin

if ( a == 1’b1 )begin

Nível baixo

always @( b )begin

if ( b == 1’b0 )begin

ELT601 – Eletrônica Digital II

begin

// atribuição

end

end

begin

// atribuição

end

end

Page 7: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Sensibilidade à borda

Verilog | Elementos de memória

Borda de subida Borda de descida

always @( posedge a )begin

always @( negedge b )begin

ELT601 – Eletrônica Digital II

begin

// atribuição

end

begin

// atribuição

end

Page 8: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Sensibilidade por nível

Verilog | Elementos de memória

// Exemplo de sensibilidade por nível

module nivel ( A, B, C, E );input A, B, E; // entradasoutput C; // saídasreg C; // registros

always @( E )begin

if ( E == 1’b1 )

A

B C‘0’10

E

ELT601 – Eletrônica Digital II

if ( E == 1’b1 )C = A | B;

elseC = 1’b0;

end

endmodule

Descrição no Quartus II | Mapeamento na tecnologia

E

‘0’

Page 9: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Sensibilidade por nível

Verilog | Elementos de memória

// Exemplo de sensibilidade por nível

module nivel ( A, B, C, E );

input A, B, E; // entradasoutput C; // saídasreg C; // registros

always @( E )begin

A

B

E

C C

Latch D

D Q

ENA

ELT601 – Eletrônica Digital II

if ( E == 1’b1 )C = A | B;

end

endmodule

Descrição no Quartus II

ENA

Page 10: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Latch D com habilitação

Verilog | Elementos de memória

Latch D

D Q

E

// Latch D com habilitação

module latchD( D, E, Q );

input D, E; // entradasoutput Q; // saídasreg Q; // registros

always @( D or E )begin

ELT601 – Eletrônica Digital II

Eif ( E == 1’b1 )

Q = D;end

endmodule

Descrição no Quartus II

Page 11: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Latch D com habilitação e clear

Verilog | Elementos de memória

// Latch D com habilitação

Latch D

D Q

QE

// Latch D com habilitação

module latchD( D, E, CLR, Q, Qb );input D, E, CLR; // entradasoutput Q, Qb; // saídasreg Q; // registros

always @( D or E or CLR )begin

if ( CLR == 1’b0 )Q = 1’b0;

ELT601 – Eletrônica Digital II

QE Q = 1’b0;else if ( E == 1’b1 )

Q = D;end

assign Qb = ~Q;

endmoduleDescrição no Quartus II

clr

Page 12: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Sensibilidade à borda

Verilog | Elementos de memória

// Exemplo de sensibilidade à borda

module borda( A, B, C, E );input A, B, E; // entradasoutput C; // saídasreg C; // registros

always @( posedge E )begin

C = A | B;

A

B

E

C C

FF D

D Q

ELT601 – Eletrônica Digital II

C = A | B;

end

endmodule

Descrição no Quartus II

Page 13: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Flip-flop D

Verilog | Elementos de memória

// FF D

module ffd( CLK, D, Q);input CLK, D; // entradasoutput Q; // saídasreg Q; // registros

always @( posedge CLK )begin

Q = D;

FF D

D Q

ELT601 – Eletrônica Digital II

Q = D;

end

endmodule

Descrição no Quartus II | Mapeamento na tecnologia

Page 14: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Flip-flop D com RESET assíncrono

Verilog | Elementos de memória

// FF D com RESET assíncrono

module ffdr( CLK, D, RST, Q);input CLK, D, RST; // entradasoutput Q; // saídasreg Q; // registros

always @( negedge CLK or negedge RST )begin

if ( !RST ) Q = 1’b0;

FF D

D Q

ELT601 – Eletrônica Digital II

if ( !RST ) Q = 1’b0; else Q = D;

end

endmodule

Descrição no Quartus II

RST

Page 15: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Flip-flop D com RESET síncrono

Verilog | Elementos de memória

// FF D com RESET síncrono

module ffdrs( CLK, D, RST, Q);input CLK, D, RST; // entradasoutput Q; // saídasreg Q; // registros

always @( posedge CLK)begin

if ( !RST ) Q = 1’b0; FF D

D Q

RST

‘0’10

D

RST

ELT601 – Eletrônica Digital II

if ( !RST ) Q = 1’b0; else Q = D;

end

endmodule

Descrição no Quartus II | Mapeamento na tecnologia

RST

CLK

Page 16: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Aplicação: Registrador paralelo de 4 bits

Verilog | Elementos de memória

S[3]

Latch D

D Q

ENA

S[2]

Latch D

D Q

ENA

S[1]

Latch D

D Q

ENA

S[0]

Latch D

D Q

ENA

Hreg4bits

ELT601 – Eletrônica Digital II

E[3] E[2] E[1] E[0]

Hreg4bits

Page 17: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Aplicação: Registrador paralelo de 4 bits

Verilog | Elementos de memória

reg4bits

E S

H

4 4

// Registrador paralelo de 4 bits com habilitação

module reg4bits( E, H, S );

input [3:0] E; // entradasinput H; // entradasoutput [3:0] S; // saídasreg [3:0] S; // registros

always @( H or E )begin

ELT601 – Eletrônica Digital II

Descrição no Quartus II

Hbegin

if ( H )S = E;

end

endmodule

Page 18: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Aplicação: Registrador síncrono paralelo de 4 bits

Verilog | Elementos de memória

Q[3]

FF D

D Q

Q[2]

FF D

D Q

Q[1]

FF D

D Q

Q[0]

FF D

D Q

Hreg4sCLK

ENA ENA ENA ENA

ELT601 – Eletrônica Digital II

D[3] D[2] D[1] D[0]

reg4sCLK

Page 19: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Aplicação: Registrador síncrono paralelo de 4 bits

Verilog | Elementos de memória

reg4s

D Q

H

4 4

// Registrador síncrono paralelo de 4 bits

module reg4s ( CLK, H, D, Q );

input [3:0] D; // entradasinput CLK, H; // entradasoutput [3:0] Q; // saídasreg [3:0] Q; // registros

always @( posedge CLK )beginCLK

ELT601 – Eletrônica Digital II

Descrição no Quartus II

begin

if ( H )Q = D;

end

endmodule

CLK

Page 20: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Parâmetros

Verilog | Elementos de memória

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

Page 21: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Instância de módulos parametrizados

Verilog | Elementos de memória

regNbits

E S

H

N N

// Registrador paralelo de “N” bits com habilitação

module regNbits( E, H, S );

parameter N = 2;

input [N-1:0] E; // entradasinput H; // entradasoutput [N-1:0] S; // saídasreg [N-1:0] S; // registros

ELT601 – Eletrônica Digital II

Descrição no Quartus II

Halways @( H or E )begin

if ( H )S = E;

end

endmodule

Page 22: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Aplicação

Verilog | Elementos de memória

regNbits

E S

H

N N

// Registrador paralelo de “6” bits com habilitação

module teste_reg( E1, E2, H, S1, S2 );

input [2:0] E1; // entradasoutput [2:0] S1; // saídasinput H; // entradasinput [5:0] E2; // entradasoutput [5:0] S2; // saídas

// Instância parametrizada

ELT601 – Eletrônica Digital II

Descrição no Quartus II

H // Instância parametrizada

regNbits #(3) reg3bits( E1, H, S1);regNbits #(6) reg6bits( E2, H, S2);

endmodule

Page 23: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Operador de concatenação

Verilog | Elementos de memória

{ , , …, }v1 v2 vn

delimitação dos vetores a concatenar

Vetores (sinal ou registro) a serem concatenados

ELT601 – Eletrônica Digital II

vetores a concatenar

Page 24: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Operador de concatenação

Verilog | Elementos de memória

wire [ 2: 0 ] a, b;reg [0:4] c;

a = 3b’101; b = 6; c = 5’01010;

{ }

{ 3’b111, 2b’00 } 5‘b11100

ELT601 – Eletrônica Digital II

{ a, 2b’11 } 5‘b10111

{ b, c } 8‘b11001010

{ a[0], b[2], c[2:3] } 4‘b1101

Page 25: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Aplicação: Registrador de deslocamento

Verilog | Elementos de memória

Q[3]23

FF D

D Q

FF D

D Q

FF D

D Q

FF D

D QE S

Q[2]22

Q[1]21

Q[0]20

ELT601 – Eletrônica Digital II

regserialCLK

Page 26: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Aplicação: Registrador de deslocamento

Verilog | Elementos de memória

regserial

E Q4

CLK

S

// Registrador serial de 4 bits

module regserial ( CLK, E, Q, S );

input CLK, E, // entradasoutput S; // saídasoutput [3:0] Q; // saídasreg [3:0] Q; // registros

always @( posedge CLK )begin

ELT601 – Eletrônica Digital II

CLK beginQ = { E, Q[3:1] };

end

assign S = Q[0];

endmodule

Page 27: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Exercícios

Verilog | Elementos de memória

1 Altere o registrador de deslocamento de forma a incluir um sinal de seleção para a direção do deslocamento

2 Implemente um registrador paralelo para serial com sinal de carregamento síncrono

ELT601 – Eletrônica Digital II

Page 28: ELT601 – Eletrônica Digital IIelt2014.com.br/materiais/1-2016/ELT601-32/Aulas/Aula 11 - Verilog...ELT601 – Eletrônica Digital II Graduação em Engenharia Eletrônica Universidade

Verilog | Elementos de memória

Obrigado

ELT601 – Eletrônica Digital II