Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware...

42
Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital Concorrência Paralelismo Valores de sinais no tempo Construções especiais Transições (bordas) de valores de sinais Atrasos de propagação de sinais Verificação de condições temporais

Transcript of Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware...

Page 1: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

Hardware Description Language (HDL)

• Para que precisamos de uma Linguagem de Descrição de Hardware ?

• Modelar, Representar e simular hardware digital

– Concorrência

– Paralelismo

– Valores de sinais no tempo

• Construções especiais

– Transições (bordas) de valores de sinais

– Atrasos de propagação de sinais

– Verificação de condições temporais

Page 2: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

Hardware Description Language (HDL)

• A linguagem Verilog foi introduzida em 1985 pela Gateway Design Automation.

• A Gateway foi comprada pela empresa Cadence Design Systems, em 1989, que tornou a linguagem de domínio público em maio de 1990 com a formação da Open Verilog International (OVI).

• Hoje o Verilog é um padrão IEEE, já tendo duas extensões ou modificações: Verilog-95 (padrão IEEE 1364-1995), Verilog 2001 (IEEE 1364-2001) e Verilog 2005 (IEEE 1364-2005).

• O Verilog tem uma grande semelhança com a linguagem de programação C.

Page 3: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

unidade básica – o módulo

Módulo (module)

• Define terminais (pinos, portas) de entrada e saída

• Descreve a funcionalidade do circuito

VERILOG HDL

Page 4: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

Módulo – Definição Geral

module <nome do módulo> (declaração das portas);

… declaração de variáveis;

… descrição do comportamentoendmodule

VERILOG HDL

Page 5: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

Módulo – Definição Geral

module <nome do módulo> ( declaração das portas );

… declaração de variáveis;

… descrição do comportamentoendmodule

VERILOG HDL

Exemplo:

module meu_and (output reg C, input A, B); always @ (A, B) begin C = A & B; // & operador AND endendmodule

Page 6: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Identificadores

A ... Za ... z0 ... 9Underscore

• O primeiro caractere do identificador não pode ser um dígito

Verilog diferencia letras maiúsculas de minúsculas

Page 7: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Comentários em Verilog

// comentário de uma linha só/* outra forma de comentário de uma linha *//* inicio de comentário com múltiplas linhas todo text é ignorado termina com a linha abaixo*/

Números

decimal, hexadecimal, octal, binarioDecimal sem sinal Decimal com sinal

Cadeias de caracteres

"Delimite usando aspas numa mesma linha"limitados a 1024 caracteres

Page 8: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Modelos de Descrição

• Estrutural: descreve um circuito lógico através da interligação dos componentes que os compõe.

• Fluxo de dados: descreve um circuito através das funções booleanas que os compõe.

• Comportamental: descreve o circuito através do comportamento do mesmo, na forma de um algoritmo.

• RTL (Register Transfer Level): descreve o circuito através do que acontece a cada transição ativa do sinal de relogio

Page 9: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Modelo estrutural

• Execução: Concorrente

• Formato: portas lógicas primitivas

Exemplo:

Page 10: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

f1

f2

f3ABCin

VERILOG HDL

Exemplo somador completo:

module somador_completo_estrutural (output Cout, S, input A, B, Cin); and g1(f1, A, Cin), // saída sempre o primeiro parâmetro da instância (f1)) g2(f2, A, B), g3(f3, B, Cin); or g4(Cout, f1, f2, f3); xor g5(S, A, B, Cin); endmodule

Page 11: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Modelo fluxo de dados

• Execução: Concorrente.

• Formato: assign net = expressão;

• A ordem das atribuições dentro do arquivo Verilog não tem efeito sobre a execução.

Exemplo:

Page 12: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exemplo somador completo (fluxo de dados):

module soma_fluxo_de_dados (output S, Cout, input A, B, Cin);

assign S = A ^ B ^ Cin; // Soma assign Cout = (A & B) | (A & Cin) | (B & Cin); // Cout endmodule

Page 13: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Modelo comportamental:

• Uso de instruções alto nível da linguagem (if, case, while, for)

• Uso do comando always

• Comandos dentro do procedimento always são executados sequencialmente

• O comando always é executado quando há uma mudança no valor lógico de um sinal da lista de sensibilidade

• Formato do comando always:

always @ (a, b, c...) begin <comandos> end

• Os comandos always são concorrentes

lista de sensibilidade (todas as entradas do circuito)

Page 14: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exemplo: Modelo Comportamental do Multiplexador

sel out

0 a

1 b

Tabela Verdade do Multiplexador

a

b

sel

outMultiplexador

2X1

Se sel = 0 então out = a

Senão out = b

Algoritmo dp Comportamento do MUX

Page 15: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exemplo: Modelo Comportamental do Multiplexador

sel out

0 a

1 b

Tabela Verdade do Multiplexador

module comportamental_mux (output reg out, input a, b, sel); always @(a,b, sel) begin if (sel == 0) out = a; else out = b; end endmodule

Descrição Verilog:

Símbolo do Mux:

Page 16: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exemplo: Modelo Comportamental do Multiplexador

sel out

0 a

1 b

Tabela Verdade do Multiplexador

a

b

sel

outMultiplexador

2X1out = (~ sel & a) | (sel & b)

Equação booleana do Mux (2x1):

Page 17: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exemplo: Modelo Comportamental do Multiplexador

Tabela Verdade do Multiplexador

module comportamental2_mux (output reg out, input a, b, sel); always @(*) begin out = (~ sel & a) | (sel & b); end endmodule

Descrição Verilog:

sel out

0 a

1 b

Síntese

Substitui a lista de sensibilidade

Page 18: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exemplo:

A B Cin S Cout

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

Tabela Verdade do Somador Completo

Page 19: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Instruções Condicionais (Instrução IF)

Formato:

if (condição) // obs: usar BEGIN e END quando existir mais de um comando comando;else if (condição) comando;else

comando;

Exemplo:

if (reset) Q = 0;else Q = D;

Page 20: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Instruções Condicionais (Instrução CASE)

Formato:

case (sinal) // obs: usar BEGIN e END quando existir mais de um comando

<número de bits>’<sistema de numeração><alvo1>: comando; ... <número de bits>’<sistema de numeração><valor2>: comando;

end case

<sistema de numeração> d – decimal; h – hexadecimal, b - binário

<alvo1>, <alvo2>... será executado o comando cujo alvo for igual ao sinal

Page 21: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Instruções Condicionais (Instrução CASE)

Exemplo:

module exemplo_case (output reg[1:0] Y, input [1:0] A, B, X); always @ (*) begin case (X) 2'b00: Y = A+B; 2'b01: Y = A-B; 2'b10: Y = A/B; default: Y = 00; endcase end endmodule

Page 22: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Instruções Condicionais (Instrução CASE)

Exemplo:

module exemplo_case (output reg[1:0] Y, input [1:0] A, B, X); always @ (*) begin case (X) 2'b00: Y = A+B; 2'b01: Y = A-B; 2'b10: Y = A/B; default: Y = 00; endcase end endmodule

Formato:

case (sinal)

<número de bits>’<sistema de numeração><alvo1>: comando; ... <número de bits>’<sistema de numeração><valor2>: comando;

end case

<sistema de numeração> d – decimal; h – hexadecimal, b - binário

<alvo1>, <alvo2>... será executado o comando cujo alvo for igual ao sinal

Page 23: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Instruções Condicionais (Instrução CASE)

Exemplo:

module exemplo_case (output reg[1:0] Y, input [1:0] A, B, X); always @ (*) begin case (X) 2'b00: Y = A+B; 2'b01: Y = A-B; 2'b10: Y = A/B; default: Y = 00; endcase end endmodule

Page 24: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Tipos de Dados:

• Net (wire) – usado para modelar uma conexão elétrica wire [msb:lsb] msb: most significant bit; lsb: least significant bit

Exemplo:

wire Reset; // 1-bit wire

wire [6:0] Clear; // 7-bit wire

Page 25: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exempo de NET do tipo wire:

module somador_completo_estrutural (output Cout, S, input A, B, Cin); wire f1, f2, f3; and g1(f1, A, Cin), g2(f2, A, B), g3(f3, B, Cin); or g4(Cout, f1, f2, f3); xor g5(S, A, B, Cin); endmodule

f1

f2

f3ABCin

wire

wire

Page 26: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Tipos de Dados:

• Register (reg) tipo de dado que armazena o valor de um sinal, até o mesmo ser alterado (não representa um registrador de fato). reg [msb:lsb] msb: most significant bit; lsb: least significant bit

Exemplo:

reg [ 3: 0 ] cla; // 4-bit register

reg cla; // A 1-bit register

Page 27: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exempo de Register do tipo reg:

module comportamental2_mux (output reg out, input a, b, sel); always @(*) begin out = (~ sel & a) | (sel & b); end endmodule

Page 28: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Uso dos tipos de dados:

• Nos modelos de descrição Estrutural e Fluxo de dados são usados o tipo wire, não se usa o tipo reg

• Nos modelos de descrição Comportamental e RTL são usados o tipo reg, não se usa o tipo wire

Page 29: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Mais exemplos:

1) Fazer o modelo Verilog Fluxo de Dados de um circuito comparador com as características:

• O circuito possui duas entradas de 8 bits (a, b)

• O circuito possui três saídas de 1bit, denominadas (maior, menor e igual)

• O circuito possui a seguinte função: se a >b; maior = 1; se a< b ; menor = 1; se a = b; igual = 1

Page 30: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Descrição Verilog Simulação

module comparador (output igual,maior,menor, input [7:0] a, b); assign igual = (a==b); assign maior = (a>b); assign menor = (a<b); endmodule

Page 31: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Mais exemplos:

2) Fazer o modelo Verilog Comportamental de um circuito comparador com as características:

• O circuito possui duas entradas de 8 bits (a, b)

• O circuito possui três saídas de 1bit, denominadas (maior, menor e igual)

• O circuito possui a seguinte função: se a >b; maior = 1; se a< b ; menor = 1; se a = b; igual = 1

Page 32: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Descrição Verilog Simulação module comparador_comportamental (output reg igual,maior,menor, input [7:0] a, b); always @(*) begin if (a==b) begin igual=1; maior=0; menor=0; end else if (a>b) begin menor=0; maior=1; igual=0; end else begin menor=1; maior=0; igual=0; end end endmodule

Page 33: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Descrição Verilog Descrição RTL module comparador_comportamental (output reg igual,maior,menor, input [7:0] a, b); always @(*) begin maior=0; menor = 0; igual = 0; if (a==b) begin igual=1; end else if (a>b) begin maior=1;; end else begin menor=1; end end endmodule

Page 34: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Descrição Verilog Descrição RTL

module comparador (output igual,maior,menor, input [7:0] a, b); assign igual = (a==b); assign maior = (a>b); assign menor = (a<b); endmodule

Page 35: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Operadores Lógicos:

and & or | xor ^ not ~ nand ~& nor ~| right shift >> left shift << concatenacao { } condicional ?

Page 36: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exemplo Concatenação:

A B Cin S Cout

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

Tabela Verdade do Somador Completo

Concatena as entradas: {A, B, Cin }

Page 37: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Exemplo Concatenação:

A B Cin S Cout

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

Tabela Verdade do Somador Completo

module exemplo_concatena (output reg S, Cout, input A, B, Cin); always @ (*) begin // procedimento resolve a soma case ({A, B, Cin}) // concatena A, B, Cin, numa única variável 3'b001: S = 1; 3'b010: S = 1; 3'b100: S = 1; 3'b111: S = 1; default: S = 0; endcase end always @ (*) begin // procedimento resolve o Cary (Cout) case ({A, B, Cin}) // concatena A, B, Cin, numa única variável 3'b011: Cout = 1; 3'b101: Cout = 1; 3'b110: Cout = 1; 3'b111: Cout = 1; default: Cout = 0; endcase end endmodule

Concatena as entradas: {A, B, Cin }

Page 38: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Simulação

Page 39: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

module buffer_terceiro_estado (output out, input enable, dado); assign out = (enable) ? dado : 1'bz;

endmodule

Síntese

Page 40: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

module buffer_terceiro_estado (output out, input enable, dado); assign out = (enable) ? dado : 1'bz;

endmodule

Síntese

Simulação

Descrição Verilog

terceiro estado

(tri-state)

terceiro estado (tri-state)

Page 41: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Operações Aritméticas :

adicao + subtracao - multiplicacao * divisao / modulo %

Page 42: Hardware Description Language (HDL) Para que precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital –Concorrência.

VERILOG HDL

Instruções de Laço

• Repeat• While• For

• O laço Repeat não é usado para síntese de circuitos • O laço While é usado para síntese de circuitos sequenciais

• O laço For é usado para síntese de circuitos combinacionais