题解 | #用优先编码器①实现键盘编码电路#
用优先编码器①实现键盘编码电路
https://www.nowcoder.com/practice/03b8c5837d7f406797b4a57358057ef7
`timescale 1ns/1ns
module encoder_0(
input [9:0] I_n ,
output reg [3:0] Y_n
);
always @(*)begin
casex(I_n)
10'b0xxxxxxxxx : Y_n = 4'b0110;
10'b10xxxxxxxx : Y_n = 4'b0111;
10'b110xxxxxxx : Y_n = 4'b1000;
10'b1110xxxxxx : Y_n = 4'b1001;
10'b11110xxxxx : Y_n = 4'b1010;
10'b111110xxxx : Y_n = 4'b1011;
10'b1111110xxx : Y_n = 4'b1100;
10'b11111110xx : Y_n = 4'b1101;
10'b111111110x : Y_n = 4'b1110;
10'b1111111110 : Y_n = 4'b1111;
10'b1111111111 : Y_n = 4'b1111;
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_N;
encoder_0 MyEncoder(
.I_n(S_n),
.Y_n(L_N)
);
assign L = {!L_N[3], !L_N[2], !L_N[1], !L_N[0]};
assign GS = S_n != 10'b1111111111;
endmodule
