--- /dev/null
+library ieee;\r
+use ieee.std_logic_1164.all;\r
+use ieee.numeric_std.all;\r
+\r
+architecture beh of event_counter is\r
+ signal sense_old, sense_old_next : std_logic;\r
+ signal cnt_int, cnt_next : std_logic_vector(CNT_WIDTH - 1 downto 0);\r
+begin\r
+ cnt <= cnt_int;\r
+\r
+ process(sys_clk, sys_res_n)\r
+ begin\r
+ if sys_res_n = '0' then\r
+ cnt_int <= (others => '0');\r
+ sense_old <= RESET_VALUE;\r
+ elsif rising_edge(sys_clk) then\r
+ cnt_int <= cnt_next;\r
+ sense_old <= sense_old_next;\r
+ end if;\r
+ end process;\r
+ \r
+ process(cnt_int, sense, sense_old)\r
+ begin\r
+ sense_old_next <= sense;\r
+ cnt_next <= cnt_int;\r
+\r
+ if sense_old /= sense and sense = '0' then\r
+ cnt_next <= std_logic_vector(unsigned(cnt_int) + 1);\r
+ end if;\r
+ end process;\r
+end architecture beh;\r