2024-04-14 03:18:43 +00:00
|
|
|
module keypad(
|
|
|
|
input clk_in,
|
|
|
|
input wire [3:0] row,
|
|
|
|
output logic [3:0] col,
|
2024-04-15 14:32:48 +00:00
|
|
|
output logic [15:0] keymap_out
|
2024-04-14 03:18:43 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
logic [1:0] col_idx;
|
|
|
|
logic [15:0] keymap;
|
2024-04-15 14:32:48 +00:00
|
|
|
logic [15:0] keymap_db;
|
|
|
|
logic [15:0] keymap_db2;
|
|
|
|
/* old
|
|
|
|
assign keymap_out[0] = keymap[13];
|
|
|
|
assign keymap_out[1] = keymap[0];
|
|
|
|
assign keymap_out[2] = keymap[1];
|
|
|
|
assign keymap_out[3] = keymap[2];
|
|
|
|
assign keymap_out[4] = keymap[4];
|
|
|
|
assign keymap_out[5] = keymap[5];
|
|
|
|
assign keymap_out[6] = keymap[6];
|
|
|
|
assign keymap_out[7] = keymap[8];
|
|
|
|
assign keymap_out[8] = keymap[9];
|
|
|
|
assign keymap_out[9] = keymap[10];
|
2024-04-14 03:18:43 +00:00
|
|
|
|
2024-04-15 14:32:48 +00:00
|
|
|
assign keymap_out[10] = keymap[3];
|
|
|
|
assign keymap_out[11] = keymap[7];
|
|
|
|
assign keymap_out[12] = keymap[11];
|
|
|
|
assign keymap_out[13] = keymap[15];
|
|
|
|
assign keymap_out[14] = keymap[12];
|
|
|
|
assign keymap_out[15] = keymap[14];
|
|
|
|
*/
|
|
|
|
//assign keymap_out = keymap;
|
|
|
|
|
|
|
|
|
|
|
|
assign keymap_out[1] = !keymap[1];
|
|
|
|
assign keymap_out[2] = !keymap[0];
|
|
|
|
assign keymap_out[3] = !keymap[2];
|
|
|
|
assign keymap_out[12] =!keymap[3];
|
|
|
|
|
|
|
|
|
|
|
|
assign keymap_out[4] = !keymap[5];
|
|
|
|
assign keymap_out[5] = !keymap[4];
|
|
|
|
assign keymap_out[6] = !keymap[6];
|
|
|
|
assign keymap_out[13] =!keymap[7]; //E
|
|
|
|
|
|
|
|
assign keymap_out[7] = !keymap[9];
|
|
|
|
assign keymap_out[8] = !keymap[8];
|
|
|
|
assign keymap_out[9] = !keymap[10];
|
|
|
|
assign keymap_out[14] =!keymap[11]; //F
|
|
|
|
|
|
|
|
assign keymap_out[10] =!keymap[13];
|
|
|
|
assign keymap_out[0] = !keymap[12]; //0
|
|
|
|
assign keymap_out[11] =!keymap[14];
|
|
|
|
assign keymap_out[15] =!keymap[15];// D
|
2024-04-14 03:18:43 +00:00
|
|
|
|
|
|
|
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
|
2024-04-15 14:32:48 +00:00
|
|
|
keymap_db[(i*4)+col_idx] <= row[i[1:0]];
|
2024-04-14 03:18:43 +00:00
|
|
|
end
|
2024-04-15 14:32:48 +00:00
|
|
|
keymap_db2 <= keymap_db;
|
|
|
|
keymap <= keymap_db2;
|
2024-04-14 03:18:43 +00:00
|
|
|
|
|
|
|
col[col_idx] <= 1;
|
2024-04-15 14:32:48 +00:00
|
|
|
col[col_idx == 3 ? 0 : col_idx +1] <= 0;
|
|
|
|
col_idx <= col_idx == 3 ? 0 : col_idx + 1;
|
2024-04-14 03:18:43 +00:00
|
|
|
end
|
|
|
|
endmodule
|