题解 | #实现3-8译码器①#
实现3-8译码器①
https://www.nowcoder.com/practice/89659f98cb124362b1c816f06d5235d0
`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
);
reg [7:0] y;
always@(*) begin
if({E3,E2_n,E1_n} == 3'b100) begin
case({A2,A1,A0})
3'b000: y = (8'd1);
3'b001: y = (8'd2);
3'b010: y = (8'd4);
3'b011: y = (8'd8);
3'b100: y = (8'd16);
3'b101: y = (8'd32);
3'b110: y = (8'd64);
3'b111: y = (8'd128);
endcase
end else y = 8'd0;
end
assign Y0_n = !y[0];
assign Y1_n = !y[1];
assign Y2_n = !y[2];
assign Y3_n = !y[3];
assign Y4_n = !y[4];
assign Y5_n = !y[5];
assign Y6_n = !y[6];
assign Y7_n = !y[7];
endmodule
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
);
reg [7:0] y;
always@(*) begin
if({E3,E2_n,E1_n} == 3'b100) begin
case({A2,A1,A0})
3'b000: y = (8'd1);
3'b001: y = (8'd2);
3'b010: y = (8'd4);
3'b011: y = (8'd8);
3'b100: y = (8'd16);
3'b101: y = (8'd32);
3'b110: y = (8'd64);
3'b111: y = (8'd128);
endcase
end else y = 8'd0;
end
assign Y0_n = !y[0];
assign Y1_n = !y[1];
assign Y2_n = !y[2];
assign Y3_n = !y[3];
assign Y4_n = !y[4];
assign Y5_n = !y[5];
assign Y6_n = !y[6];
assign Y7_n = !y[7];
endmodule