题解 | #使用3-8译码器①实现逻辑函数#
使用3-8译码器①实现逻辑函数
https://www.nowcoder.com/practice/be81e76ebade445baca7257aa4eca8f2
用3-8译码器,4-16译码器等实现逻辑函数L的步骤:
- 观察L变量的个数,根据变量的个数决定用什么译码器
- 把L改成最小项之和L',方法是某一项乘以(X+~X),其中X是这一项没有出现的变量
- L'的每一项就代表译码器的一个输出
- 把所有的输出相与,得到最终的表达式
下面我们依次来完成每一步:
(1)观察L变量的个数,根据变量的个数决定用什么译码器
L=(~A)·C+A·B,有三个变量A,B,C。而题目给我们提供了3-8译码器,所以我们用3-8译码器实现。
(2)把L改成最小项之和L',方法是某一项乘以(X+~X),其中X是这一项没有出现的变量
(3)L'的每一项就代表译码器的一个输出;把所有的输出相与,得到最终的表达式
74HC138大概长这样:
给每个端口添加信号后,就是下面这样:
OK,讲解结束,“Talk is cheap, show me the code”!
`timescale 1ns/1ns
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
);
//在一个module里面调用另一个module,input是reg,output是wire
wire Y0_n,Y1_n ,Y2_n ,Y3_n , Y4_n ,Y5_n ,Y6_n ,Y7_n;
decoder_38 decoder0(
.E1_n(1'b0),
.E2_n(1'b0),
.E3(1'b1),
.A0(A),
.A1(B),
.A2 (C),
.Y0_n(Y0_n) ,
.Y1_n (Y1_n) ,
.Y2_n (Y2_n) ,
.Y3_n (Y3_n) ,
.Y4_n (Y4_n) ,
.Y5_n (Y5_n) ,
.Y6_n (Y6_n) ,
.Y7_n (Y7_n));
assign L=Y1_n+Y3_n+Y6_n+Y7_n;
endmodule
完结撒花
查看9道真题和解析