VerilogCPU/mux4.sv

28 lines
524 B
Systemverilog

/**
* A four-input multiplexer.
*/
module mux4 #(width=32)
(input logic [width-1:0] first, second, third, fourth,
input logic [1:0] select,
output logic [width-1:0] out);
logic [width-1:0] lower, upper;
mux2 lower_mux(
.left(first),
.right(second),
.select(select[0]),
.out(lower));
mux2 upper_mux(
.left(third),
.right(fourth),
.select(select[0]),
.out(upper));
mux2 final_mux(
.left(lower),
.right(upper),
.select(select[1]),
.out(out));
endmodule