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

Implementando Lógica Combinacional Usando Bloco always do Verilog

O bloco always do Verilog pode ser usado tanto para lógica sequencial quanto combinacional. Alguns exemplos de projeto foram mostrados usando um statement assign em um artigo anterior. O mesmo conjunto de projetos será explorado a seguir usando um bloco always.

Exemplo #1: Lógica Combinacional Simples

O código mostrado abaixo implementa uma lógica combinacional digital simples que tem um sinal de saída chamado z do tipo reg que é atualizado sempre que um dos sinais na lista de sensibilidade muda seu valor. A lista de sensibilidade é declarada dentro de parênteses após o operador @.

module combo (input a, b, c, d, e, output reg z);
always @ (a or b or c or d or e) begin
    z = ((a & b) | (c ^ d) & ~e);
end
endmodule
Use atribuições bloqueantes quando modelar lógica combinacional com bloco always

Exemplo #2: Half Adder

module ha (input a, b, output sum, cout);
always @ (a or b) begin
    {cout, sum} = a + b;
end
endmodule

Exemplo #3: Full Adder

module fa (input a, b, cin, output reg sum, cout);
always @ (a or b or cin) begin
    {cout, sum} = a + b + cin;
end
endmodule

Exemplo #4: Multiplexador 2x1

module mux_2x1 (input a, b, sel, output reg c);
always @ (a or b or sel) begin
    c = sel ? a : b;
end
endmodule

Exemplo #5: Demultiplexador 1x4

module demux_1x4 (input f, input [1:0] sel, output reg a, b, c, d);
always @ (f or sel) begin
    a = f & ~sel[1] & ~sel[0];
    b = f & sel[1] & ~sel[0];
    c = f & ~sel[1] & sel[0];
    d = f & sel[1] & sel[0];
end
endmodule

Exemplo #6: Decodificador 4x16

module dec_3x8 (input en, input [3:0] in, output reg [15:0] out);
always @ (en or in) begin
    out = en ? 1 << in: 0;
end
endmodule

Note que ambos os métodos, assign e always, são implementados na mesma lógica de hardware.

Verilog

  1. Dominando VHDL & Verilog: Escrevendo Lógica Combinacional e Sequencial Limpa
  2. Circuito com Chave: Guia Prático para Circuitos Elétricos Básicos
  3. Circuitos Integrados: Fundamentos de Portas Lógicas Digitais
  4. Entendendo Álgebra Booleana: Dos Fundamentos Lógicos a Circuitos Digitais
  5. Dominando Multiplicação e Divisão com Notação Científica
  6. Indústria 4.0: Perguntas e Respostas com Verena Majuntke da Bosch.IO sobre IoT, Automação e a Fábrica do Futuro
  7. Monitoramento Preciso de Temperatura em Closet de Servidores com Raspberry Pi
  8. Design Prático em Nível de Porta Verilog: Portas AND, OR, NOT e Multiplexador 2x1
  9. Dominando $timeformat do Verilog: Precisão e Controle de Exibição
  10. Obtenha Acabamentos Perfeitos com as Retificadoras de Precisão Okamoto