Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Verilog

Verilog Essencial: Visão Geral Concisa

Todo código comportamental é escrito dentro de module e endmodule. Portanto, qualquer design digital que você pretenda criar, entrará dentro de um bloco module. Ele pode ou não ter portas definidas - permitindo que sinais entrem no bloco como input ou saiam do bloco como output.

Módulo

O módulo vazio no exemplo abaixo é chamado testbench. Você pode nomeá-lo como quiser, exceto que deve ser alfanumérico e pode conter '_'.


module testbench;
endmodule

Vamos olhar para outro módulo. Ele tem alguns sinais (d, clk, rstb) declarados como entradas e q declarado como uma saída.


module dff (input d, clk, rstb, output q);
endmodule

Tipos de Dados

Agora que vimos como um módulo se parece, vamos ver o que pode ser colocado dentro de um módulo, olhando para o módulo testbench mais uma vez. Existem principalmente dois tipos de tipos de dados em verilog:

Um tipo de dado reg é usado para reter valores como uma variável, enquanto um wire é apenas análogo a um fio elétrico, que tem que ser conduzido continuamente. Então tipicamente wire é usado para conectar entre múltiplos módulos e outros sinais.


module testbench;
    reg d;
    reg rst_b;
    reg clk;
    wire q;
endmodule

Atribuições

Verilog tem três blocos básicos:

always @ (condição) sempre executado quando a condição é satisfeita
initial será executado apenas uma vez, quando a simulação começa
assign [LHS] = [RHS] Valor de LHS será atualizado sempre que RHS mudar

Existem algumas regras para manter em mente ao escrever Verilog:


module testbench;
    reg d;
    reg rst_b;
    reg clk;
    wire q;

    initial begin
        d = 0;
        rst_b = 0;
        clk = 0;
        #100 $finish;
    end

    always begin
        #10 clk = ~clk;
    end
endmodule

Note o seguinte do exemplo mostrado acima:

Verilog

  1. Domine o Verilog: Tutorial Completo para Projeto de Circuitos Digitais
  2. Dominando Concatenação Verilog: Guia Prático
  3. Entendendo Atribuições em Verilog: Tipos, Sintaxe e Boas Práticas
  4. Verilog Blocking vs Non-Blocking: Diferenças Essenciais Explicadas
  5. Dominando Funções em Verilog para Design RTL Eficiente
  6. Entendendo Tasks em Verilog: Funções vs Tasks, Sintaxe e Uso
  7. Dominando Referência Hierárquica em Verilog: Evite Colisão de Nomes em Módulos e Blocos
  8. Gerador de Clock Verilog: Guia de Design e Implementação
  9. Dominando Funções Matemáticas do Verilog para Design de Hardware Eficiente
  10. Dominando $timeformat do Verilog: Precisão e Controle de Exibição