Verilog Prioriteitsencoder: Betrouwbare 4-Input 8-bit Selector
Ontwerp
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
Hardware Schema
Schema van de prioriteitsencoder/multiplexer
Testbench
module tb_4to1_mux;
reg [7:0] a, b, c, 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
- Verilog beheersen: Complete tutorial voor digitale schakelingontwerp
- Verilog concatenatie beheersen: Een praktische gids
- Verilog-toewijzingen begrijpen: types, syntax en best practices
- Verilog Blocking vs. Non-Blocking: belangrijkste verschillen uitgelegd
- Verilog-functies beheersen voor efficiënt RTL-ontwerp
- Verilog Tasks begrijpen: Functions vs Tasks, Syntax en Gebruik
- Verilog Clock Generator: Ontwerp & Implementatie Gids
- Verilog Math Functions beheersen voor efficiënt Hardware-ontwerp
- Verilog $timeformat beheersen: Precisie en Weergave-controle
- Verilog Timescales begrijpen en printen in elke Scope
- Verilog File I/O onder de knie: Openen, Lezen, Schrijven en Sluiten