题解 | #使用3-8译码器①实现逻辑函数#
使用3-8译码器①实现逻辑函数
http://www.nowcoder.com/practice/be81e76ebade445baca7257aa4eca8f2
`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 reg L ); wire [7:0] out; decoder_38 inst_decoder_38( .E1_n(1'b0), .E2_n(1'b0), .E3(1'b1), .A0(C), .A1(B), .A2(A), .Y0_n(out[0]), .Y1_n(out[1]), .Y2_n(out[2]), .Y3_n(out[3]), .Y4_n(out[4]), .Y5_n(out[5]), .Y6_n(out[6]), .Y7_n(out[7]) ); always @ (*) begin case(1'b0) out[0] : L = 1'b0; out[1] : L = 1'b1; out[2] : L = 1'b0; out[3] : L = 1'b1; out[4] : L = 1'b0; out[5] : L = 1'b0; out[6] : L = 1'b1; out[7] : L = 1'b1; default: L = 1'b0; endcase end endmodule 译码器重点是一一对应,所以将一一对应结果转化为输出即可。