题解 | #数据选择器实现逻辑电路#
数据选择器实现逻辑电路
https://www.nowcoder.com/practice/00b0d01b71234d0b97dd4ab64f522ed9
本题和之前的38译码器的题类型,主要区别在于输入项不同了,需要我们进行筛选,和之前的题一样,首先列出真值表,比较发现,S0和S1与AB完美契合,只需对C与D0-D3进行适配,观察真值表发现,D0需为0,D1为~C,D2为C,D3为1,当然如果调换AB的顺序,中间D1和D2需要进行更换 `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 u_data_sel( .S0 (A), //本题和之前的38译码器的题类似,都是通过某一个芯片器件实现某一个定向的功能 .S1 (B), //但是与之前的不同,之前的输入项都是对应的,题目直接就是给好的,而此处的题看似选择器的输入要比表达式的要多 .D0 (1'b0), //实际需要通过两者的真值表去对比发现,这一个类型的题都是这样,包括38译码器的题,都是需要写出两个真值表 .D1 (~C), //然后根据真值表的值进行求解,可以发现本题的S0和S1是两个输入变量,而D0-D3都是输入和输出项 .D2 (C), //故C可以为D0-D4的项,同时看真值表可以发现,因为S0和S1都是0时,输出的都是0,而选择器输出D0,所以输入项D0必须要为0, .D3 (1'b1), //同理01和C相同,则D1就需为C,10与C相反,则D2为~C,11输出全是1,则D3为1 .Y (L) ); endmodule