Codificador de Prioridad en Verilog: Selector Confiable de 4 Entradas a 8 Bits
Diseño
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
Esquema 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
- Dominar Verilog: Tutorial completo para diseño de circuitos digitales
- Dominar la concatenación en Verilog: Guía práctica
- Comprender las asignaciones en Verilog: tipos, sintaxis y mejores prácticas
- Bloqueante vs. No bloqueante en Verilog: Diferencias clave explicadas
- Dominar las funciones en Verilog para diseño RTL eficiente
- Comprender las Tasks en Verilog: Funciones vs Tasks, sintaxis y uso
- Generador de reloj en Verilog: Guía de diseño e implementación
- Dominar las funciones matemáticas en Verilog para diseño de hardware eficiente
- Dominar $timeformat en Verilog: Control de precisión y visualización
- Comprender e imprimir timescales de Verilog en cualquier alcance
- Dominando la E/S de Archivos en Verilog: Abrir, Leer, Escribir y Cerrar