yayacemu/keypad.sv
2024-04-13 22:18:43 -05:00

30 lines
566 B
Systemverilog

module keypad(
input clk_in,
input wire [3:0] row,
output logic [3:0] col,
output [5:0] cur_press
);
logic [1:0] col_idx;
logic [15:0] keymap;
assign cur_press = {clk_in, 1'b0, keymap[3:0]};
initial begin
col_idx = 0;
col = 0;
keymap = 0;
end
always_ff @(posedge clk_in) begin
for(logic [2:0] i = 0; i < 4; i++) begin
keymap[(i*4)+col_idx] <= row[i[1:0]];
end
col[col_idx] <= 1;
col[col_idx+1] <= 0;
col_idx <= col_idx + 1;
end
endmodule