题解 | #使用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
完结撒花