debouncing sys_res_n
[hwmod.git] / src / debouncing / debounce_pkg.vhd
diff --git a/src/debouncing/debounce_pkg.vhd b/src/debouncing/debounce_pkg.vhd
new file mode 100644 (file)
index 0000000..1368846
--- /dev/null
@@ -0,0 +1,54 @@
+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