--- /dev/null
+library ieee;\r
+use ieee.std_logic_1164.all;\r
+use work.math_pkg.all;\r
+\r
+package debounce_pkg is\r
+ component debounce_fsm is\r
+ generic\r
+ (\r
+ RESET_VALUE : std_logic;\r
+ CNT_MAX : integer range 2 to integer'high\r
+ );\r
+ port\r
+ (\r
+ sys_clk : in std_logic;\r
+ sys_res_n : in std_logic;\r
+ i : in std_logic;\r
+ cnt : in std_logic_vector(log2c(CNT_MAX) - 1 downto 0);\r
+ clear_cnt : out std_logic;\r
+ o : out std_logic\r
+ );\r
+ end component debounce_fsm;\r
+\r
+ component counter is\r
+ generic\r
+ (\r
+ CNT_MAX : integer range 2 to integer'high\r
+ );\r
+ port\r
+ (\r
+ sys_clk : in std_logic;\r
+ sys_res_n : in std_logic;\r
+ clear_cnt : in std_logic;\r
+ cnt : out std_logic_vector(log2c(CNT_MAX) - 1 downto 0)\r
+ );\r
+ end component counter;\r
+\r
+ component debounce is\r
+ generic\r
+ (\r
+ CLK_FREQ : integer;\r
+ TIMEOUT : time range 100 us to 100 ms := 1 ms;\r
+ RESET_VALUE : std_logic := '0';\r
+ SYNC_STAGES : integer range 2 to integer'high\r
+ );\r
+ port\r
+ (\r
+ sys_clk : in std_logic;\r
+ sys_res_n : in std_logic;\r
+\r
+ data_in : in std_logic;\r
+ data_out : out std_logic\r
+ );\r
+ end component debounce;\r
+end package debounce_pkg;\r