MOTORES ELÉTRICOS Eletrônica Industrial. Energia ElétricaEnergia Mecânica Eletrônica Industrial.
ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica -...
-
Upload
truongdieu -
Category
Documents
-
view
231 -
download
0
Transcript of ELT601 – Eletrônica Digital II - ELT2014 - Engenharia Eletrônica -...
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
Descrição algorítmica
Verilog | Descrição algorítmica
A
F
B
C
ERepresentaçãoIntermediária
RTL
Circuitodigital
ELT601 – Eletrônica Digital II
D
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
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’
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
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
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!
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
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
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
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
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
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
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
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
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
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
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
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
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
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
;
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;
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
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
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
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’
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
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
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…
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
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…
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
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
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
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
Verilog | Descrição algorítmica
Demux 4 para 1
IO0O1O2O3
00011011
ELT601 – Eletrônica Digital II
s1 s0
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
Verilog | Fim
Obrigado
ELT601 – Eletrônica Digital II