debouncing sys_res_n
[hwmod.git] / src / debouncing / debounce_struct.vhd
1 library ieee;\r
2 use ieee.std_logic_1164.all;\r
3 use work.sync_pkg.all;\r
4 use work.debounce_pkg.all;\r
5 use work.math_pkg.all;\r
6 \r
7 architecture struct of debounce is\r
8   constant CLK_PERIOD : time := 1E9 / CLK_FREQ * 1 ns;\r
9   constant CNT_MAX : integer := TIMEOUT / CLK_PERIOD;\r
10   signal data_sync : std_logic;\r
11   signal clear_cnt : std_logic;\r
12   signal cnt : std_logic_vector(log2c(CNT_MAX) - 1 downto 0);\r
13 begin\r
14   sync_inst : sync\r
15     generic map\r
16     (\r
17       SYNC_STAGES => SYNC_STAGES,\r
18       RESET_VALUE => RESET_VALUE\r
19     )\r
20     port map\r
21     (\r
22       sys_clk => sys_clk,\r
23       sys_res_n => sys_res_n,\r
24       data_in => data_in,\r
25       data_out => data_sync\r
26     );\r
27 \r
28   fsm_inst : debounce_fsm\r
29     generic map\r
30     (\r
31       RESET_VALUE => RESET_VALUE,\r
32       CNT_MAX => CNT_MAX\r
33     )\r
34     port map\r
35     (\r
36       sys_clk => sys_clk,\r
37       sys_res_n => sys_res_n,\r
38       i => data_sync,\r
39       o => data_out,\r
40       clear_cnt => clear_cnt,\r
41       cnt => cnt\r
42     );\r
43 \r
44   counter_inst : counter\r
45     generic map\r
46     (\r
47       CNT_MAX => CNT_MAX\r
48     )\r
49     port map\r
50     (\r
51       sys_clk => sys_clk,\r
52       sys_res_n => sys_res_n,\r
53       clear_cnt => clear_cnt,\r
54       cnt => cnt\r
55     );\r
56 end architecture struct;\r