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

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

http://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 wire              GS
);
    reg [3:0] L_d;
    reg GS_d;
always @(*)begin
    casex(S_n)
      10'b1111111111 : begin L_d = 4'b0000; GS_d = 0; end
      10'b0xxxxxxxxx : begin L_d = 4'b1001; GS_d = 1; end
      10'b10xxxxxxxx : begin L_d = 4'b1000; GS_d = 1; end
      10'b110xxxxxxx : begin L_d = 4'b0111; GS_d = 1; end
      10'b1110xxxxxx : begin L_d = 4'b0110; GS_d = 1; end
      10'b11110xxxxx : begin L_d = 4'b0101; GS_d = 1; end
      10'b111110xxxx : begin L_d = 4'b0100; GS_d = 1; end
      10'b1111110xxx : begin L_d = 4'b0011; GS_d = 1; end
      10'b11111110xx : begin L_d = 4'b0010; GS_d = 1; end
      10'b111111110x : begin L_d = 4'b0001; GS_d = 1; end
      10'b1111111110 : begin L_d = 4'b0000; GS_d = 1; end
      default        : begin L_d = 4'b0000; GS_d = 0; end
   endcase
end 
    assign L = L_d;
    assign GS = GS_d;
endmodule
全部评论

相关推荐

11-27 17:35
已编辑
蚌埠坦克学院 C++
深信服 后台开发 n×12
点赞 评论 收藏
分享
评论
11
收藏
分享
牛客网
牛客企业服务