debouncing sys_res_n
[hwmod.git] / src / debouncing / counter_beh.vhd
1 library ieee;\r
2 use ieee.std_logic_1164.all;\r
3 use ieee.numeric_std.all;\r
4 use work.math_pkg.all;\r
5 \r
6 architecture beh of counter is\r
7   signal cnt_int, cnt_next : integer range 0 to CNT_MAX;\r
8 begin\r
9   cnt <= std_logic_vector(to_unsigned(cnt_int, log2c(CNT_MAX)));\r
10 \r
11   process(sys_clk, sys_res_n)\r
12   begin\r
13     if sys_res_n = '0' then\r
14       cnt_int <= 0;\r
15     elsif rising_edge(sys_clk) then\r
16       cnt_int <= cnt_next;\r
17     end if;\r
18   end process;\r
19 \r
20   process(cnt_int, clear_cnt)\r
21   begin\r
22     cnt_next <= cnt_int;\r
23 \r
24     if clear_cnt = '1' then\r
25       cnt_next <= 0;\r
26     elsif cnt_int < CNT_MAX then\r
27       cnt_next <= cnt_int + 1;\r
28     end if;\r
29   end process;\r
30 end architecture beh;\r