2 -- * Counter - divider *
4 -- part of LXPWR motion control board (c) PiKRON Ltd
5 -- idea by Pavel Pisa PiKRON Ltd <ppisa@pikron.com>
11 use ieee.std_logic_1164.all;
12 use ieee.numeric_std.all;
16 cnt_width_g : natural := 8
22 reset_i : in std_logic;
23 ratio_i : in std_logic_vector(cnt_width_g-1 downto 0);
24 q_out_o : out std_logic
28 architecture behavioral of cnt_div is
29 signal cnt_val_s : natural range 0 to (2**cnt_width_g - 1);
30 signal cnt_val_r : natural range 0 to (2**cnt_width_g - 1);
33 comb: process (reset_i, en_i, ratio_i, cnt_val_r)
36 cnt_val_s <= to_integer(unsigned(ratio_i));
40 cnt_val_s <= cnt_val_r;
43 if cnt_val_r <= 1 then
44 cnt_val_s <= to_integer(unsigned(ratio_i));
47 cnt_val_s <= cnt_val_r - 1;
56 wait until clk_i'event and clk_i = '1';
57 cnt_val_r <= cnt_val_s;