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

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

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 wire              GS
);
wire[3:0]temp;
reg [3:0]out;
reg g;
encoder_0 u0(.I_n(S_n[9:1]),.Y_n(temp));
always @(*)begin
   case(temp)
4'b1111: begin g= 1'b0;
if(S_n[0])
begin
g= 1'b0;
out= 0; 
end
else
begin
 g= 1'b1 ;
 out= 0; 
end
end
4'b0110: begin  out= 9; g= 1'B1; end
4'b0111: begin  out= 8; g= 1'B1; end
4'b1000: begin  out= 7; g= 1'B1; end
4'b1001: begin  out= 6; g= 1'B1 ;end
4'b1010: begin  out= 5; g= 1'B1 ;end
4'b1011: begin  out= 4; g= 1'B1 ;end
4'b1100: begin  out= 3; g= 1'B1 ;end
4'b1101: begin  out= 2; g= 1'B1 ;end
4'b1110: begin  out= 1; g= 1'B1 ;end
   endcase    
  
end 
assign GS=g;
assign L=out;


endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 15:41
已编辑
淘天 算法工程师 31.0k*16.0
点赞 评论 收藏
分享
offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
M_bao:换个排版吧哥们,看着费劲
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务