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

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

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