牛客网Verilog刷题——VL18

牛客网Verilog刷题——VL18

题目

  根据下面的真值表实现74HC138译码器。

在这里插入图片描述

信号类型输入/输出位宽
E1_nwireIntput1
E2_nwireIntput1
E3wireIntput1
A2wireIntput1
A1wireIntput1
A0wireIntput1
Y0_nwireOutput1
Y1_nwireOutput1
Y2_nwireOutput1
Y3_nwireOutput1
Y4_nwireOutput1
Y5_nwireOutput1
Y6_nwireOutput1
Y7_nwireOutput1

答案

`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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值