请使用3-8译码器①和必要的逻辑门实现函数L=(~A)C+A B
可在本题答案中添加并例化3-8译码器①代码,3-8译码器①代码如下:
基于真值表,逻辑表达式写出38译码器。
input E1_n ,
input E2_n ,
input E3 ,
input A0 ,
input A1 ,
input A2 ,
output wire Y0_n ,
output wire Y1_n ,
output wire Y2_n ,
output wire Y3_n ,
output wire Y4_n ,
output wire Y5_n ,
output wire Y6_n ,
output wire Y7_n
);
wire E ;
assign E = E3 & ~E2_n & ~E1_n;
assign Y0_n = ~(E & ~A2 & ~A1 & ~A0);
assign Y1_n = ~(E & ~A2 & ~A1 & A0);
assign Y2_n = ~(E & ~A2 & A1 & ~A0);
assign Y3_n = ~(E & ~A2 & A1 & A0);
assign Y4_n = ~(E & A2 & ~A1 & ~A0);
assign Y5_n = ~(E & A2 & ~A1 & A0);
assign Y6_n = ~(E & A2 & A1 & ~A0);
assign Y7_n = ~(E & A2 & A1 & A0);
endmodule
实现函数L=(~A)C+A B:
38译码器的输出实际上包含了输入A2 A1 A0组成的所有最小项,而该逻辑表达式作为组合电路,其输出最终可化简为最小项的形式。
化简: ABC ------A2 A1 A0
L=(~A)C+A B = (~A)C(B+~B)+A* B(C+~C)
=~( Y1_n + Y3_n + Y7_n + Y6_n)
module decoder_38(
input E1_n ,
input E2_n ,
input E3 ,
input A0 ,
input A1 ,
input A2 ,
output wire Y0_n ,
output wire Y1_n ,
output wire Y2_n ,
output wire Y3_n ,
output wire Y4_n ,
output wire Y5_n ,
output wire Y6_n ,
output wire Y7_n
);
wire E ;
assign E = E3 & ~E2_n & ~E1_n;
assign Y0_n = ~(E & ~A2 & ~A1 & ~A0);
assign Y1_n = ~(E & ~A2 & ~A1 & A0);
assign Y2_n = ~(E & ~A2 & A1 & ~A0);
assign Y3_n = ~(E & ~A2 & A1 & A0);
assign Y4_n = ~(E & A2 & ~A1 & ~A0);
assign Y5_n = ~(E & A2 & ~A1 & A0);
assign Y6_n = ~(E & A2 & A1 & ~A0);
assign Y7_n = ~(E & A2 & A1 & A0);
endmodule
module decoder0(
input A ,
input B ,
input C ,
output wire L
);
wire [7:0] Y;
assign L = ~Y[1] + ~Y[3] + ~Y[6] + ~Y[7];
//assign L = ~Y[1] + ~Y[3] + ~Y[6] + ~Y[7];
decoder_38 decoder_38_inst(
.E1_n (1'b0) ,
.E2_n (1'b0) ,
.E3 (1'b1) ,
.A0 (C) ,
.A1 (B) ,
.A2 (A) ,
.Y0_n (Y[0]) ,
.Y1_n (Y[1]) ,
.Y2_n (Y[2]) ,
.Y3_n (Y[3]) ,
.Y4_n (Y[4]) ,
.Y5_n (Y[5]) ,
.Y6_n (Y[6]) ,
.Y7_n (Y[7])
);
endmodule
数据选择器实现逻辑电路
请使用此4选1数据选择器和必要的逻辑门实现下列表达式。
L=A∙B+A∙~C+B∙C
Y =~S1&(~S0&D0 | S0&D1)|S1&(~S0&D2 | S0&D3) = S1S0D0+S1S0D1+S1S0D2+S1S0D3
建立两个输出之间的关系,用数据选择器的输出表示逻辑表达式输出。
化简逻辑表达式: A+A = A
ABC+ AB~C = AB 令D3=1;得到. 最后让D0=0.
L=A∙B+A∙~C+B∙C =
ABC+ ABC + AB~C + ~ABC
= ~S1 S0D1+ ~S1 S0 D2
A看作S0 B看作S1 C看作D
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_inst(
.S0( A ) ,
.S1( B ) ,
.D0( 0) ,
.D1( ~C ) ,
.D2( C ) ,
.D3( 1 ) ,
.Y(L)
);
endmodule
四选一选择器
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 mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
assign mux_out = sel[0]?(sel[1]?d0:d2):(sel[1]?d1:d3);
//*************code***********//
endmodule