简析
先对四选一MUX的表达式化简:
Y=S1(S0D0+S0D1)+S1(S0D2+S0D3)=S1 S0D0+S1 S0D1+S1S0D2+S1S0D3
然后将题目要求实现的表达式化为标准形式:
L=AB+AC+BC=ABC+ABC+AB C+ABC
将两个式子对应起来,比如用A对应S0,B对应S1,C对应D。这样AB C对应S1 S0D1,ABC对应S1S0D2。而ABC+ABC=AB,所以可以令D3=1得到。最后令D0=0去掉Y中剩下的项S1 S0D0。
代码
按照上述分析将对应的线连接起来即可。
`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
);
data_sel mySel(.S0(A), .S1(B), .D0(0), .D1(~C), .D2(C), .D3(1), .Y(L));
endmodule
用MUX实现门电路
整理了一些相关资料。
非门NOT
Y=S
与门AND
Y=AB
或门OR
Y=A+B
异或门XOR
Y=A⊕B=AB+AB
同或门XNOR
Y=A⊙B=AB+A B