X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=debouncing%2Fsrc%2Fevent_counter_beh.vhd;fp=debouncing%2Fsrc%2Fevent_counter_beh.vhd;h=9d7b8b8cd4a1769f3505a147c214ba027cc2a0e6;hb=ed91912ad97514ef90b8c86a79e53bf2b0640d4f;hp=0000000000000000000000000000000000000000;hpb=00b4c25bc4f96e2b99a1d8a7b845eced6dbe26cf;p=hwmod.git diff --git a/debouncing/src/event_counter_beh.vhd b/debouncing/src/event_counter_beh.vhd new file mode 100644 index 0000000..9d7b8b8 --- /dev/null +++ b/debouncing/src/event_counter_beh.vhd @@ -0,0 +1,31 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +architecture beh of event_counter is + signal sense_old, sense_old_next : std_logic; + signal cnt_int, cnt_next : std_logic_vector(CNT_WIDTH - 1 downto 0); +begin + cnt <= cnt_int; + + process(sys_clk, sys_res_n) + begin + if sys_res_n = '0' then + cnt_int <= (others => '0'); + sense_old <= RESET_VALUE; + elsif rising_edge(sys_clk) then + cnt_int <= cnt_next; + sense_old <= sense_old_next; + end if; + end process; + + process(cnt_int, sense, sense_old) + begin + sense_old_next <= sense; + cnt_next <= cnt_int; + + if sense_old /= sense and sense = '0' then + cnt_next <= std_logic_vector(unsigned(cnt_int) + 1); + end if; + end process; +end architecture beh;