Codificador de Prioridade em Verilog: Seletor Confiável de 4 Entradas e 8 Bits
Projeto
module pr_en (
input [7:0] a,
input [7:0] b,
input [7:0] c,
input [7:0] d,
input [1:0] sel,
output reg [7:0] out
);
always @ (a or b or c or d or sel) begin
if (sel == 2'b00) out <= a;
else if (sel == 2'b01) out <= b;
else if (sel == 2'b10) out <= c;
else out <= d;
end
endmodule
Esquemático de Hardware
Testbench
module tb_4to1_mux;
reg [7:0] a;
reg [7:0] b;
reg [7:0] c;
reg [7:0] d;
wire [7:0] out;
reg [1:0] sel;
integer i;
pr_en pr_en0 (
.a(a),
.b(b),
.c(c),
.d(d),
.sel(sel),
.out(out)
);
initial begin
sel <= 0;
a <= $random;
b <= $random;
c <= $random;
d <= $random;
for (i = 1; i < 4; i = i + 1) begin
#5 sel <= i;
end
#5 $finish;
end
endmodule
Verilog
- Domine o Verilog: Tutorial Completo para Projeto de Circuitos Digitais
- Dominando Concatenação Verilog: Guia Prático
- Entendendo Atribuições em Verilog: Tipos, Sintaxe e Boas Práticas
- Verilog Blocking vs Non-Blocking: Diferenças Essenciais Explicadas
- Dominando Funções em Verilog para Design RTL Eficiente
- Entendendo Tasks em Verilog: Funções vs Tasks, Sintaxe e Uso
- Gerador de Clock Verilog: Guia de Design e Implementação
- Dominando Funções Matemáticas do Verilog para Design de Hardware Eficiente
- Dominando $timeformat do Verilog: Precisão e Controle de Exibição
- Entendendo e Imprimindo Timescales do Verilog em Qualquer Escopo