题解 | #用优先编码器①实现键盘编码电路#

用优先编码器①实现键盘编码电路

https://www.nowcoder.com/practice/03b8c5837d7f406797b4a57358057ef7

一直报错,最后发现是符号的问题,用~就对了,!就错,问题在于~是按位取反,而!是逻辑非
`timescale 1ns/1ns
module encoder_0(
   input      [8:0]         I_n   ,
   
   output reg [3:0]         Y_n   
);

always @(*)begin
   casex(I_n)
      9'b111111111 : Y_n = 4'b1111;
      9'b0xxxxxxxx : Y_n = 4'b0110;
      9'b10xxxxxxx : Y_n = 4'b0111;
      9'b110xxxxxx : Y_n = 4'b1000;
      9'b1110xxxxx : Y_n = 4'b1001;
      9'b11110xxxx : Y_n = 4'b1010;
      9'b111110xxx : Y_n = 4'b1011;
      9'b1111110xx : Y_n = 4'b1100;
      9'b11111110x : Y_n = 4'b1101;
      9'b111111110 : Y_n = 4'b1110;
      default      : Y_n = 4'b1111;
   endcase    
end 
     
endmodule

module key_encoder(
      input      [9:0]         S_n   ,         
 
      output wire[3:0]         L     ,
      output reg              GS
);
    wire [3:0]L_temp;
    assign L = ~L_temp;
    always@(*)begin
        if(S_n[0] == 0)
            GS = 1;
        else if(!(&S_n[9:1]))
            GS = 1;
        else
            GS = 0;
    end
    encoder_0 encoder (S_n[9:1], L_temp);

endmodule  


全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务