Verilog Priority Encoder: 4-Eingang 8-Bit Selektor
Design
Das Modul pr_en wirkt wie ein 4-zu-1-Multiplexer mit 8-Bit-Dateneingängen. Der 2-Bit-Selektor sel bestimmt, welcher Eingang (a, b, c oder d) auf den Ausgang out durchgereicht wird. Die Sensitivitätsliste enthält alle Eingänge, was eine kombinatorische Logik impliziert.
module pr_en (
input logic [7:0] a,
input logic [7:0] b,
input logic [7:0] c,
input logic [7:0] d,
input logic [1:0] sel,
output logic [7:0] out
);
always_comb begin
unique case (sel)
2'b00: out = a;
2'b01: out = b;
2'b10: out = c;
default: out = d;
endcase
end
endmodule
Hardware-Schema

Testbench
Der Test legt zufällige 8-Bit-Werte auf die vier Eingänge an und schaltet den Selektor nacheinander durch alle vier Positionen.
module tb_4to1_mux;
logic [7:0] a, b, c, d;
logic [7:0] out;
logic [1:0] sel;
int i;
pr_en u0 (
.a (a),
.b (b),
.c (c),
.d (d),
.sel (sel),
.out (out)
);
initial begin
sel = 0;
a = $urandom;
b = $urandom;
c = $urandom;
d = $urandom;
for (i = 1; i < 4; i++) begin
#5 sel = i;
end
#5 $finish;
end
endmodule
Verilog
- Verilog meistern: Komplettes Tutorial für digitales Schaltungsdesign
- Verilog Concatenation meistern: Praktischer Leitfaden
- Verilog Assignments verstehen: Typen, Syntax und Best Practices
- Verilog Blocking vs. Non-Blocking: Wichtige Unterschiede erklärt
- Verilog Functions meistern für effizientes RTL-Design
- Verilog Tasks verstehen: Functions vs. Tasks, Syntax und Verwendung
- Verilog Clock Generator: Design & Implementierungsleitfaden
- Verilog Math Functions meistern für effizientes Hardware-Design
- Verilog $timeformat meistern: Präzision und Anzeigesteuerung
- Verilog Timescales an jedem Scope verstehen und ausgeben