50 lines
1.2 KiB
Verilog
50 lines
1.2 KiB
Verilog
module mux #( parameter
|
|
DATA_WIDTH = 12,
|
|
SELECT_WIDTH = 4
|
|
)(
|
|
input [SELECT_WIDTH - 1 :0] select,
|
|
input [DATA_WIDTH - 1 :0] d0,
|
|
input [DATA_WIDTH - 1 :0] d1,
|
|
input [DATA_WIDTH - 1 :0] d2,
|
|
input [DATA_WIDTH - 1 :0] d3,
|
|
input [DATA_WIDTH - 1 :0] d4,
|
|
input [DATA_WIDTH - 1 :0] d5,
|
|
input [DATA_WIDTH - 1 :0] d6,
|
|
input [DATA_WIDTH - 1 :0] d7,
|
|
input [DATA_WIDTH - 1 :0] d8,
|
|
input [DATA_WIDTH - 1 :0] d9,
|
|
input [DATA_WIDTH - 1 :0] d10,
|
|
input [DATA_WIDTH - 1 :0] d11,
|
|
input [DATA_WIDTH - 1 :0] d12,
|
|
input [DATA_WIDTH - 1 :0] d13,
|
|
input [DATA_WIDTH - 1 :0] d14,
|
|
output[DATA_WIDTH - 1 :0] o_q
|
|
);
|
|
|
|
reg [DATA_WIDTH - 1 :0] q ;
|
|
|
|
always @*
|
|
begin
|
|
case( select )
|
|
'd0 : q <= d0;
|
|
'd1 : q <= d1;
|
|
'd2 : q <= d2;
|
|
'd3 : q <= d3;
|
|
'd4 : q <= d4;
|
|
'd5 : q <= d5;
|
|
'd6 : q <= d6;
|
|
'd7 : q <= d7;
|
|
'd8 : q <= d8;
|
|
'd9 : q <= d9;
|
|
'd10 : q <= d10;
|
|
'd11 : q <= d11;
|
|
'd12 : q <= d12;
|
|
'd13 : q <= d13;
|
|
'd14 : q <= d14;
|
|
default : q <= 12'd0;
|
|
endcase
|
|
end
|
|
|
|
assign o_q = q;
|
|
|
|
endmodule |