verilog alex vidigal bastos - decom · com as linguagens de descrição de hardware, o processo...

51
VERILOG Alex Vidigal Bastos

Upload: others

Post on 05-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

VERILOG

Alex Vidigal Bastos

Page 2: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

● Objetivos

● Introdução● Hierarquia● Estruturas de Modelagem

Sumário

Page 3: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

● Identificar os modelos de componentes doVerilog, incluindo módulos, instâncias e portas;

● Correta sintaxe para cada um dos modelos doscomponentes do Verilog;

● Indicar as relações entre os diferentes modelosdos componentes do Verilog;

● Identificar e corrigir a sintaxe para as estruturasde modelagem que são componentes dosmódulos Verilog;

Objetivos

Page 4: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

Com as linguagens de descrição de hardware, oprocesso passou a ser como o de sedesenvolver um software. Um exemplo seria:

● Especificação

● Design de Alto Nível

● Codificação

● Verificação / Testes

● Sintetização

Verilog

Page 5: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

Linguagens de descrição de hardware, ou HDL,são linguagens utilizadas para projetar hardware.Tal como o nome implica, um HDL também podeser usado para descrever a funcionalidade dohardware, bem como a sua aplicação.

Introdução

Page 6: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

A principal característica de uma linguagem dedescrição de hardware é que ele contém acapacidade para descrever a função de umapeça de hardware de forma independente daaplicação.

Introdução

Page 7: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

O grande avanço com HDL modernos foi oreconhecimento de que uma linguagem únicapode ser utilizada para descrever a função doprojeto e também para descrever aimplementação. Isto permite que o processo deconcepção inteira para ter lugar numa únicalinguagem, e, assim, uma representação únicado projeto.

Introdução

Page 8: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

História

Page 9: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

Verilog permite representar a hierarquia de um projeto. As estruturas de Verilog que constrõem a hierarquia são:

● Módulos;

● Portas;

Hierarquia

Page 10: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

● Um modelo de Verilog é composto de módulos.

● Um módulo é a unidade básica do modelo, epode ser composto de instâncias de outrosmódulos. Um módulo de que é composto deinstâncias dos outros módulos é chamado umparent module, e as instâncias são chamadasparent children.

Hierarquia

Page 11: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

Hierarquia

Page 12: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

Verilog - Exemplo

Page 13: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

module and2 (a, b, y);input a, b;output y;assign y = a & b;

endmodule

Verilog - Exemplo

Page 14: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

14

Linguagens de Descrição de Hardware - HDL

�Para quê precisamos de uma Linguagem de Descrição de Hardware ?

�Modelar, Representar e simular hardware digital�Concorrência�Paralelismo�Semântica para valores de sinais no tempo

�Construções e semântica especiais�Transições (bordas) de valores de sinais�Atrasos de propagação de sinais�Verificação de condições temporais

Page 15: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

15

VERILOG HDL�A unidade básica – o modulo

�Modulo (module)� Descreve a funcionalidade do circuito� Define terminais (pinos, portas) de entrada e saída

�Exemplo: Um computador�Funcionalidade: Realizar operações programadas�Portas de entrada/saída: conector para teclado, mouse, conector VGA, conector USB

Page 16: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

16

Module�Definição geral

module module module module module_name ( port_list );

port declarations;

variable declaration;

description of behavior

endmoduleendmoduleendmoduleendmodule

�Exemplo

module module module module HalfAdder (A, B, Sum, Carry);

input A, B;output Sum, Carry;assign Sum = A ^ B;//^ denotes XORassign Carry = A & B;// & denotes ANDendmoduleendmoduleendmoduleendmodule

Page 17: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

17

Convenções Lexicais�Comentários

// comentário de uma linha só/* outra forma de comentário de uma linha *//* inicio de comentário com múltiplas linhas

todo texto é ignoradotermina com a linha abaixo

*/�Números

decimal, hexadecimal, octal, bináriounsized decimal formsize base forminclude underlines, +,-�Cadeias de caracteres

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

Page 18: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

18

Convenções Lexicais (cont.)�Identifier

A ... Z

a ... z

0 ... 9

Underscore

�Strings são limitadas a 1024 caracteres

�Primeiro caractere de identificação não deve ser um dígito

Operators:

Verilog diferencia letras maiúsculos de minúsculos

Page 19: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

19

Estilos de Descrição�Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog

�Exemplo:not n1(sel_n, sel);

and a1(sel_n, b, sel_b);

and a2(sel_a, a, sel);

or o1(out, sel_b, sel_a);

sel

b

a

out

sel_n

sel_b

sel_a

n1a1

a2

o1

Page 20: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

20

Estilo de Descrição (cont.)�Fluxo de dados: Representa sinais de saída em função de sinais de entrada

�Exemplo:assign out = (sel & a) | (~sel & b);

sel

b

a

out

sel_n

sel_b

sel_a

Page 21: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

21

Estilo de Descrição (cont.)�Comportamental: representa o comportamento na forma de um algoritmo

�Exemplo:if (select == 0)

begin

out = b;

end

else if (select == 1)

begin

out = a;

end

a

b

select

outBlack Box

2x1 MUX

Page 22: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

22

Estilo de Descrição (cont.)�RTL (Register Transfer Level): descreve o que acontece a cada transição ativa do sinal de relógio

�Exemplo:always @(posedge clock)

begin

pisca = ~pisca;

end

Page 23: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

23

Modelo estrutural

�Execução: Concorrente

�Formato (portas lógicas primitivas):

and G2(Carry, A, B);�Primeiro parâmetro (Carry) – Output

�Outros parâmetros (A, B) - Inputs

Page 24: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

24

Modelo de Fluxo de Dados�Usa atribuição permanente para sinais�Format: assign [ delay ] net = expression;

�Example: assign sum = a ^ b;

�delay : Atraso de propagação da expressão para o sinal

�Todas as atribuições permanentes executam simultaneamente

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

Page 25: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

25

Modelo de Fluxo de Dados (cont.)

�Atraso�Exemplo: assign #2 sum = a ^ b;

� “#2” indica 2 unidades de tempo

�Sem especificação de atraso: 0 (default)

�Associação entre unidade de tempo e tempo simulado�`timescale unidade de tempo/ precisão tempo� Exemplo: `timescale 1 ns / 10 ps•1 unidade de tempo = 1 ns

• resolução é 10 ps (0.01 ns)

•10.512 ns é interpretado como 10.51 ns

Page 26: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

26

�Exemplo:

`timescale 1ns/10ps

modulemodulemodulemodule HalfAdder (A, B, Sum, Carry);

input A, B;

output Sum, Carry;

assign #3 Sum = A ^ B;

assign #6 Carry = A & B;

endmoduleendmoduleendmoduleendmodule

Modelo de Fluxo de Dados (cont.)

Page 27: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

27

Modelo de Fluxo de Dados (cont.)

Page 28: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

28

Modelo comportamental�Exemplo:

module module module module mux_2x1(a, b, sel, out);

input a, a, sel;

output out;

always @(a or b or sel)

begin

if (sel == 1)

out = a;

else out = b; end

endmoduleendmoduleendmoduleendmodule

Sensitivity List

Page 29: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

29

Modelo comportamental RTL (cont.)

�always statement : Sequência do bloco;

Sequential Block: Todas as declarações dentro do bloco são executados sequencialmente;

�Quando é executado?– Ocorrência de um evento na lista de sensibilidade;

– Evento: Mudança do valor lógico

Page 30: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

30

Modelo comportamental RTL (cont.)

- Declarações com um bloco seqüencial: Atribuições processuais

- Atraso na Atribuições processuais

Inter-Statement DelayIntra-Statement Delay

Page 31: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

31

Modelo comportamental (cont.)�Atraso entre atribuições:�Exemplo:Sum = A ^ B;

#2 Carry = A & B;

�Execução atrasada

�Atraso dentro de uma atribuição:�Exemplo:Sum = A ^ B;

Carry = #2 A & B;

�Atribuição atrasada

Page 32: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

32

Construções Procedurais�Existem dois:

�initial : Executa uma única vez no início da simulação,NÃO sintetizável

�always : Executa repetidamente, sintetizável

�Exemplo:

…initial beginSum = 0;Carry = 0;

end…

…always @(A or B) beginSum = A ^ B;Carry = A & B;

end…

Page 33: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

33

Controle por evento�Controle por evento

�Disparo do evento por transição (borda)

�Disparo do evento por nível

�Controle por evento de transição

@ (posedge CLK) // transição positiva de CLK

Curr_State = Next_state;

�Controle por evento de nível lógico

@ (A or B) // mudança nos valores de A ou B

Out = A & B;

Page 34: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

34

Instruções de Laço�Laços�Repeat�While�For

�Laço repeat�Exemplo:

repeat (Count)

sum = sum + 5;

�Se a condição é x or z ela é tratada como 0

Page 35: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

35

Instruções de Laço (cont.)�Laço While

�Exemplo:while (Count < 10) begin

sum = sum + 5;

Count = Count +1;

end

�Se a condição é x or z ela é tratada como 0

�Laço For

�Exemplo:for (Count = 0; Count < 10; Count = Count + 1) begin

sum = sum + 5;

end

Page 36: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

36

Instruções Condicionais�Formato:if (condition)

procedural_statementelse if (condition)

procedural_statementelse

procedural_statement�Exemplo:if (reset)

Q = 0;

else

Q = D;

Page 37: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

37

Instruções Condicionais (cont.)�Instrução Case�Exemplo 1:case (X)

2’b00: Y = A + B;

2’b01: Y = A – B;

2’b10: Y = A / B;

endcase

�Example 2:case (3’b101 << 2)

3’b100: A=B+C;

4’b0100: A=B–C;

5’b10100: A=B/C; //This statement is executed

endcase

Page 38: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

38

Tipos de Dados�Net Type: Wirewire [ msb : lsb ] wire1, wire2, …

�Exemplo:

wire Reset; // A 1-bit wirewire [6:0] Clear; // A 7-bit wire

�Register Type: Regreg [ msb : lsb ] reg1, reg2, …

�Exemplo:

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

Page 39: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

39

Restrições sobre Tipos de Dados

� Fluxo de Dados e Modelagem Estrutural- Pode usar somente tipos de dados wire- Não pode usar tipo de dados reg

� Modelos de Comportamento- Pode usar somente tipos de dados reg (dentro das construções iniciais e always)- Não pode usar tipo de dados wire

Page 40: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

40

Memórias� Um array de registros

reg [ msb : lsb ] memory1 [ upper : lower ];

�Examplereg [ 0 : 3 ] mem [ 0 : 63 ];// Um array de 64-4bit de registradoresreg mem [ 0 : 4 ];// Um array de 5 1-bit registers

Page 41: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

41

Diretivas de Compilação�`define – (Similar ao define em C) usado para definir parâmetros globais�Example:`define BUS_WIDTH 16reg [ `BUS_WIDTH - 1 : 0 ] System_Bus;

`undef – Remove a diretiva previamente definida

�Example:`define BUS_WIDTH 16

…reg [ `BUS_WIDTH - 1 : 0 ] System_Bus;…

`undef BUS_WIDTH

Page 42: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

42

Compiler Directives (cont.)�`include – usado para incluir outro arquivo

�Example`include “./fulladder.v”

Page 43: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

43

Tarefas de Sistema�Exibir as tarefas- $display : Mostra toda a lista no momento em que

declaração é encontrada;$monitor : Sempre que há uma mudança em qualquer

argumento, exibe toda a lista no final do passo detempo;

�Tarefa de Controle de Simulação�$finish : Faz o simulador sair;�$stop : Suspende a simulação

�Time�$time: dá o tempo da simulação;

Page 44: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

44

Tipos de Conexões de portas�Connection by Position

parent_mod

Page 45: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

45

�Connection by Nameparent_mod

Tipos de Conexões de portas (cont.)

Page 46: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

46

Conexões de Portas Vazias�Se uma porta de entrada de um módulo instanciado estivervazia, a porta está definida para um valor de z (alta impedância).

module child_mod(In1, In2, Out1, Out2) module parent_mod(…….)input In1; input In2; child_mod mod(A, ,Y1, Y2);output Out1; //Empty Inputoutput Out2; endmodule

//behavior relating In1 and In2 to Out1endmodule

�Se uma porta de saída de um módulo instanciado é deixado vazio, a porta é considerado como não utilizada.

module parent_mod(…….)child_mod mod(A, B, Y1, ); //Empty Output

endmodule

Page 47: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

47

Bancada de Teste`timescale 1ns/100psmodule Top;

reg PA, PB;wire PSum, PCarry;

HalfAdder G1(PA, PB, PSum, PCarry);

initial begin: LABELreg [2:0] i;for (i=0; i<4; i=i+1) begin

{PA, PB} = i;#5 $display (“PA=%b PB=%b PSum=%b

PCarry=%b”, PA, PB, PSum, PCarry);end // for

end // initialendmodule

Test Bench

Design

Module

Apply Inputs

Observe Outputs

Page 48: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

48

Bancada de Teste - Estímulo gerador

�Exemplo: uma sequência de valores;

initial begin

Clock = 0;

#50 Clock = 1;

#30 Clock = 0;

#20 Clock = 1;

end

Page 49: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

49

Bancada de Teste – Gerando Clock�Sinais Repetitivos Signals (clock)

Clock

�Solução Simples:wire Clock;assign #10 Clock = ~ Clock

�Cuidados:�Iniciar valores de clock (wire data type) = z�~z = x and ~x = x

Page 50: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

50

Inicializar o sinal de clockinitial begin

Clock = 0;end�Cuidado: Clock is of data type wire, cannot be used in an initial statement�Solução:reg Clock;…initial beginClock = 0;

end…always begin#10 Clock = ~ Clock;end

SEMPRE loop pode

ser usado paragerar clock

Bancada de Teste – Gerando Clock

Page 51: VERILOG Alex Vidigal Bastos - DECOM · Com as linguagens de descrição de hardware, o processo passou a ser como o de se desenvolver um software. Um exemplo seria: Especificação

?

Perguntas