A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Hardware Description Language (HDL)

Apresentações semelhantes


Apresentação em tema: "Hardware Description Language (HDL)"— Transcrição da apresentação:

1 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

2 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 ), Verilog 2001 (IEEE ) e Verilog 2005 (IEEE ). O Verilog tem uma grande semelhança com a linguagem de programação C.

3 VERILOG HDL unidade básica – o módulo Módulo (module)
Define terminais (pinos, portas) de entrada e saída Descreve a funcionalidade do circuito

4 VERILOG HDL Módulo – Definição Geral module <nome do módulo>
(declaração das portas); declaração de variáveis; descrição do comportamento endmodule

5 VERILOG HDL Exemplo: module meu_and (output reg C, input A, B);
(A, B) begin C = A & B; // & operador AND end endmodule Módulo – Definição Geral module <nome do módulo> ( declaração das portas ); declaração de variáveis; descrição do comportamento endmodule

6 VERILOG HDL Identificadores A ... Z a ... z 0 ... 9 Underscore
O primeiro caractere do identificador não pode ser um dígito Verilog diferencia letras maiúsculas de minúsculas

7 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, binario Decimal sem sinal Decimal com sinal Cadeias de caracteres "Delimite usando aspas numa mesma linha" limitados a 1024 caracteres

8 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

9 VERILOG HDL Modelo estrutural Execução: Concorrente
Formato: portas lógicas primitivas Exemplo:

10 VERILOG HDL Exemplo somador completo:
f1 f2 f3 A B Cin 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

11 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:

12 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

13 lista de sensibilidade (todas as entradas do circuito)
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: (a, b, c...) begin <comandos> end Os comandos always são concorrentes lista de sensibilidade (todas as entradas do circuito)

14 VERILOG HDL Exemplo: Modelo Comportamental do Multiplexador Tabela Verdade do Multiplexador sel out a 1 b a b sel out Multiplexador 2X1 Algoritmo dp Comportamento do MUX Se sel = 0 então out = a Senão out = b

15 VERILOG HDL Exemplo: Modelo Comportamental do Multiplexador
Tabela Verdade do Multiplexador sel out a 1 b Descrição Verilog: Símbolo do Mux: module comportamental_mux (output reg out, input a, b, sel); sel) begin if (sel == 0) out = a; else out = b; end endmodule

16 VERILOG HDL Exemplo: Modelo Comportamental do Multiplexador Tabela Verdade do Multiplexador sel out a 1 b Equação booleana do Mux (2x1): a b sel out Multiplexador 2X1 out = (~ sel & a) | (sel & b)

17 Substitui a lista de sensibilidade
VERILOG HDL Exemplo: Modelo Comportamental do Multiplexador Tabela Verdade do Multiplexador sel out a 1 b Síntese Descrição Verilog: module comportamental2_mux (output reg out, input a, b, sel); begin out = (~ sel & a) | (sel & b); end endmodule Substitui a lista de sensibilidade

18 VERILOG HDL Exemplo: Tabela Verdade do Somador Completo A B Cin S Cout
1

19 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) else Exemplo: if (reset) Q = 0; Q = D;

20 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

21 VERILOG HDL Instruções Condicionais (Instrução CASE) Exemplo:
module exemplo_case (output reg[1:0] Y, input [1:0] A, B, X); (*) begin case (X) 2'b00: Y = A+B; 2'b01: Y = A-B; 2'b10: Y = A/B; default: Y = 00; endcase end endmodule

22 VERILOG HDL Instruções Condicionais (Instrução CASE) Exemplo:
module exemplo_case (output reg[1:0] Y, input [1:0] A, B, X); (*) 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

23 VERILOG HDL Instruções Condicionais (Instrução CASE) Exemplo:
module exemplo_case (output reg[1:0] Y, input [1:0] A, B, X); (*) begin case (X) 2'b00: Y = A+B; 2'b01: Y = A-B; 2'b10: Y = A/B; default: Y = 00; endcase end endmodule

24 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

25 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 f3 A B Cin wire wire

26 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

27 VERILOG HDL Exempo de Register do tipo reg: module comportamental2_mux
(output reg out, input a, b, sel); begin out = (~ sel & a) | (sel & b); end endmodule

28 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

29 VERILOG HDL Mais exemplos:
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

30 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

31 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

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

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

34 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

35 VERILOG HDL Operadores Lógicos: and  & or  | xor  ^ not  ~
nand  ~& nor  ~| right shift  >> left shift  << concatenacao  { } condicional  ?

36 VERILOG HDL Exemplo Concatenação: Tabela Verdade do Somador Completo A
Cin S Cout 1 Concatena as entradas: {A, B, Cin }

37 VERILOG HDL Exemplo Concatenação: Tabela Verdade do Somador Completo
module exemplo_concatena (output reg S, Cout, input A, B, Cin); (*) 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 (*) begin // procedimento resolve o Cary (Cout) 3'b011: Cout = 1; 3'b101: Cout = 1; 3'b110: Cout = 1; 3'b111: Cout = 1; default: Cout = 0; endmodule Exemplo Concatenação: Tabela Verdade do Somador Completo A B Cin S Cout 1 Concatena as entradas: {A, B, Cin }

38 VERILOG HDL Simulação

39 VERILOG HDL module buffer_terceiro_estado (output out,
Síntese module buffer_terceiro_estado (output out, input enable, dado); assign out = (enable) ? dado : 1'bz; endmodule

40 VERILOG HDL Descrição Verilog module buffer_terceiro_estado
Síntese Descrição Verilog module buffer_terceiro_estado (output out, input enable, dado); assign out = (enable) ? dado : 1'bz; endmodule Simulação terceiro estado (tri-state) terceiro estado (tri-state)

41 VERILOG HDL Operações Aritméticas : adicao  + subtracao  -
multiplicacao  * divisao  / modulo  %

42 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


Carregar ppt "Hardware Description Language (HDL)"

Apresentações semelhantes


Anúncios Google