题解 | #数据选择器实现逻辑电路#
https://www.nowcoder.com/practice/00b0d01b71234d0b97dd4ab64f522ed9
`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
);
//将Y的表达式展开,可以得到Y=s0's1‘D0+s0s1'D1+s0's1D2+s0s1D3,目标式L=ab+ac'+bc,用a/b/c+a'/b'/c'=1可以扩展得到L=ab+ab'c'+a'bc,比较可知s0=a,s1=b,D0=0 D1=c' D2=c D3=1
data_sel sel0(
.S0(A),
.S1(B),
.D0(0),
.D1(~C),
.D2(C),
.D3(1),
.Y(L)
);
endmodule