summaryrefslogtreecommitdiffstats
path: root/counter.vhd
diff options
context:
space:
mode:
Diffstat (limited to 'counter.vhd')
-rw-r--r--counter.vhd45
1 files changed, 45 insertions, 0 deletions
diff --git a/counter.vhd b/counter.vhd
new file mode 100644
index 0000000..4ae6a2a
--- /dev/null
+++ b/counter.vhd
@@ -0,0 +1,45 @@
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.std_logic_unsigned.all;
+use IEEE.numeric_std.all;
+
+entity counter is
+ port
+ (
+ divisor : in std_logic_vector(15 downto 0) := (others => '0');
+ clk : in std_logic;
+ n_reset : in std_logic;
+ clk_out : out std_logic
+ );
+end counter;
+
+
+architecture rtl of counter is
+
+ signal d :
+ std_logic_vector (15 downto 0);
+ signal q :
+ std_logic;
+begin
+
+ clk_out <= q;
+ process (clk, d, q, divisor, n_reset)
+ begin
+ if n_reset = '0' then
+ d <= (others => '0');
+ q <= '0';
+ elsif RISING_EDGE(clk) then
+
+ if d < divisor then
+ d <= d + 1;
+ else
+ d <= (others => '0');
+ q <= not q;
+ end if;
+ end if;
+ end process;
+
+end rtl;
+