题解 | #数据选择器实现逻辑电路#(真值表)
数据选择器实现逻辑电路
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 ); data_sel data_sel( .S0 (B) , .S1 (A) , .D0 (1'b0) , .D1 (C) , .D2 (~C) , .D3 (1'b1) , .Y (L) ); endmodule
首先 需要将逻辑函数 化成最小项形式 通过真值表 或者 定理:A+~A = 1;
所画函数为L = (~A & B & C) | (A &~B &~C) | (A & B &~C)| (A & B &C)
令S1 = A S0 = B 则
~A & B & C 变为 ~S1 & S0 & D1 所以 D1 取 C
A &~B &~C 变为 S1 & ~S0 & D2 所以 D2 取 ~C
因为 A & B 变为 S1 & S0 D3 取 1 就可以直接满足
因为没有 用到 ~S1 & ~S0 所以 D0 取 0