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