`timescale 1ns/1ns
module data_sel(
input S0 ,
input S1 ,
input D0 ,
input D1 ,
input D2 ,
input D3 ,
output wire Y
);
assign Y = ~S1 & (~S0&D0 | S0&D1) | S1&(~S0&D2 | S0&D3);
endmodule
module sel_exp(
input A ,
input B ,
input C ,
output wire L
);
wire Y1,Y2,Y3;
data_sel uut1 (
.S0(B),
.S1(A),
.D0(0),
.D1(0),
.D2(0),
.D3(1),
.Y(Y1)
);
data_sel uut2 (
.S0(A),
.S1(C),
.D0(0),
.D1(1),
.D2(0),
.D3(0),
.Y(Y2)
);
data_sel uut3 (
.S0(C),
.S1(B),
.D0(0),
.D1(0),
.D2(0),
.D3(1),
.Y(Y3)
);
assign L=Y1|Y2|Y3;
endmodule