`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] L_temp; encoder_0 encoder_0( .I_n ( S_n[9:1] ) , .Y_n (L_temp) ); assign L=~L_temp; assign GS = ~(S_n[0] & L_temp[0] & L_temp[1] & L_temp[2] & L_temp[3]); endmodule
这个网站的题总是这么模糊不清,你想独立做出来要么出错要么连题干是什么都看不懂。
做这个题的前提:
- 1111_1111_11 你现在看到的是键盘上的数字键 最右边表示0
- 按下上面的键盘 会变成低电平 你按下0 会变成 1111_1111_10
- 你按下数字1会变成1111_1110_01
- 键盘是10位的 优先编码器是9位的所以 数字0单独编码