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

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

VERILOG.

Apresentações semelhantes


Apresentação em tema: "VERILOG."— Transcrição da apresentação:

1 VERILOG

2 O que é o Verilog? Relembrando: A unidade básica de hardware no verilog é o módulo Os módulos não podem contem definições de outros módulos Um módulo pode estar “instanciado” dentro de outro módulo Permite a criação de uma hierarquia na descrição (programa) de verilog

3 O que é o Verilog? Teremos um módulo para cada arquivo de definição
Um módulo é a definição de um componente Sintaxe básica: module nome_modulo (lista_de_portas); input/output declaracoes local net declarações comandos paralelos endmodule Lista de portas (ou sinais) Local net declarations: declaração de sinais “intermediários” Comandos paralelos: deve ficar claro que a execução dos comandos não é sequencial

4 Exemplo module and_gate (f, x, y); input x, y; output f; assign f= x & y; endmodule

5 Exemplo module two_level (a, b, c, d, f); input a, b, c, d; output f; wire t1, t2; assign t1 = a & b; assign t2 = ~(c | d); assign f = t1 ^ t2; endmodule Wire t1 e t2 são valores temporários, intermediários Operador ^  Ou exclusivo (para bits)

6 Algumas regras 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 é ignorado termina com a linha abaixo */

7 Algumas regras Números decimal, hexadecimal, octal, binário
Cadeias de caracteres "Delimite usando aspas numa mesma linha" limitados a 1024 caracteres

8 Algumas regras Identificadores A ... Z a ... z 0 ... 9 Underscore
Primeiro caractere de identificação não deve ser um dígito É case sensitive

9 Categorias de tipos de dados para variáveis
t = x & y; f = t ^in1; Conexão (wire) Seu valor pode mudar de maneira contínua, dependendo das variáveis das quais depende Registro Retém o último valor atribuído (como se fosse um flip-flop) Utilizado principalmente para representar armazenamento Wire -> Se alterar a entrada, altera o valor do wire Se for um valor temporário, geralmente usa o wire Faz analogia com um “cabo” porque usa para “ligar” componentes

10 Tipos de dados de conexão
wire, wor, wand, tri, supply0, supply1 wire e tri são equivalentes wor e wand adiciona uma porta OR / AND no ponto de conexão (exemplo mais adiante) supply0 / supply1 servem para modelar conexões das conexões de energia (gnd e vcc)

11 Exemplo de uso do wire module using_wire (a, b, c, d, f);
input a, b, c, d; output f; wire f; //Conexão declarada como wire assign f = a & b; assign f = c | d; endmodule f é de saída e do tipo wire Não se sabe o que vai sair.... É um erro!

12 Exemplo de uso do wire module using_wire (a, b, c, d, f);
input a, b, c, d; output f; wand f; //Conexão declarada como wand assign f = a & b; assign f = c | d; endmodule f é de saída e do tipo wire

13 Exemplo de uso do wire (sintaxe verilog 2001)
module using_wire ( input a, input b, input c, input d, output wand f); assign f = a & b; assign f = c | d; endmodule Sintaxe do Verilog 95

14 Exemplo de uso do supply0 e supply1
module using_supply_wire (a, b, c, f) input a, b, c; output f; wire t1, t2; supply0 gnd; supply1 vcc; nand G1 (t1, vcc, a, b); xor G2 (t2, c, gnd); and G3 (f, t1, t2); endmodule Supply0 = 0; Suppy1 = 1;

15 Tipos de dados de registro
Dois tipos de dados são aceitos para síntese reg, integer A declaração de reg deve especificar explicitamente o tamanho reg x, y; //variáveis de 1 bit (padrão) reg [15:0] bus; // bus de 16 bits, bus[15] é o bit mais significativo integer utiliza o tamanho por padrão de 32 bits (geralmente represente números com sinal). O sintetizador tenta determinar o tamanho (de acordo com os valores)

16 Tipos de dados de registro
Regra geral: reg usado geralmente para modelar registros de hardware como contadores, acumuladores, etc integer utilizado em situações como contadores de um ciclo

17 Exemplo module simple_counter (clk, rst, count); input clk, rst;
output count; reg [31:0] count; clk) begin if (rst) count = 32’b0; else count = count + 1; end endmodule Bloco do Always é chamado de procedimento Que vai ser executado sempre que acontecer um “evento” (entre parenteses) o evento no caso é a subida do clock posedge (positive edge = borda de subida) -> subida do clock 32’b0 -> Constante de 32 bits em binário com 0

18 Tipos de dados de registro
Quando se utiliza integer o sintetizador tipicamente determina o tamanho necessário Exemplo: wire [1:10] a, b; integer c; c = a + b; O tamanho de c pode ser determinado em tempo de compilação (11 bits; que seriam os 10 bits + bit de transporte)

19 Valores constantes Uma constante pode ser especificada com tamanho ou sem tamanho Sintaxe (com tamanho) <tamanho>’<base><numero> Exemplos: 8’b //Constante binária de 8 bits 12’hA2D //Constante hexadecimal //numero com sinal de 32 bits 1’b //constante binária de 1 bit 1’b //constante binária de 1 bit


Carregar ppt "VERILOG."

Apresentações semelhantes


Anúncios Google