题目
根据下面的真值表实现74HC138译码器。
信号 | 类型 | 输入/输出 | 位宽 |
---|---|---|---|
E1_n | wire | Intput | 1 |
E2_n | wire | Intput | 1 |
E3 | wire | Intput | 1 |
A2 | wire | Intput | 1 |
A1 | wire | Intput | 1 |
A0 | wire | Intput | 1 |
Y0_n | wire | Output | 1 |
Y1_n | wire | Output | 1 |
Y2_n | wire | Output | 1 |
Y3_n | wire | Output | 1 |
Y4_n | wire | Output | 1 |
Y5_n | wire | Output | 1 |
Y6_n | wire | Output | 1 |
Y7_n | wire | Output | 1 |
答案
`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 r_Y0_n,r_Y1_n,r_Y2_n,r_Y3_n,r_Y4_n,r_Y5_n,r_Y6_n,r_Y7_n;
always @(*) begin
if(E1_n || E2_n) begin
r_Y0_n = 1'b1;r_Y1_n = 1'b1;r_Y2_n = 1'b1;r_Y3_n = 1'b1;
r_Y4_n = 1'b1;r_Y5_n = 1'b1;r_Y6_n = 1'b1;r_Y7_n = 1'b1;
end
else if(E3 && (~E1_n) && (~E2_n)) begin
case({A2,A1,A0})
3'b000:
begin
r_Y0_n = 1'b0;r_Y1_n = 1'b1;r_Y2_n = 1'b1;r_Y3_n = 1'b1;
r_Y4_n = 1'b1;r_Y5_n = 1'b1;r_Y6_n = 1'b1;r_Y7_n = 1'b1;
end
3'b001:
begin
r_Y0_n = 1'b1;r_Y1_n = 1'b0;r_Y2_n = 1'b1;r_Y3_n = 1'b1;
r_Y4_n = 1'b1;r_Y5_n = 1'b1;r_Y6_n = 1'b1;r_Y7_n = 1'b1;
end
3'b010:
begin
r_Y0_n = 1'b1;r_Y1_n = 1'b1;r_Y2_n = 1'b0;r_Y3_n = 1'b1;
r_Y4_n = 1'b1;r_Y5_n = 1'b1;r_Y6_n = 1'b1;r_Y7_n = 1'b1;
end
3'b011:
begin
r_Y0_n = 1'b1;r_Y1_n = 1'b1;r_Y2_n = 1'b1;r_Y3_n = 1'b0;
r_Y4_n = 1'b1;r_Y5_n = 1'b1;r_Y6_n = 1'b1;r_Y7_n = 1'b1;
end
3'b100:
begin
r_Y0_n = 1'b1;r_Y1_n = 1'b1;r_Y2_n = 1'b1;r_Y3_n = 1'b1;
r_Y4_n = 1'b0;r_Y5_n = 1'b1;r_Y6_n = 1'b1;r_Y7_n = 1'b1;
end
3'b101:
begin
r_Y0_n = 1'b1;r_Y1_n = 1'b1;r_Y2_n = 1'b1;r_Y3_n = 1'b1;
r_Y4_n = 1'b1;r_Y5_n = 1'b0;r_Y6_n = 1'b1;r_Y7_n = 1'b1;
end
3'b110:
begin
r_Y0_n = 1'b1;r_Y1_n = 1'b1;r_Y2_n = 1'b1;r_Y3_n = 1'b1;
r_Y4_n = 1'b1;r_Y5_n = 1'b1;r_Y6_n = 1'b0;r_Y7_n = 1'b1;
end
3'b111:
begin
r_Y0_n = 1'b1;r_Y1_n = 1'b1;r_Y2_n = 1'b1;r_Y3_n = 1'b1;
r_Y4_n = 1'b1;r_Y5_n = 1'b1;r_Y6_n = 1'b1;r_Y7_n = 1'b0;
end
endcase
end
else begin
r_Y0_n = 1'b1;r_Y1_n = 1'b1;r_Y2_n = 1'b1;r_Y3_n = 1'b1;
r_Y4_n = 1'b1;r_Y5_n = 1'b1;r_Y6_n = 1'b1;r_Y7_n = 1'b1;
end
end
assign Y0_n = r_Y0_n;
assign Y1_n = r_Y1_n;
assign Y2_n = r_Y2_n;
assign Y3_n = r_Y3_n;
assign Y4_n = r_Y4_n;
assign Y5_n = r_Y5_n;
assign Y6_n = r_Y6_n;
assign Y7_n = r_Y7_n;
endmodule