Advertisement
Guest User

Clock Divider

a guest
Jul 10th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 0.81 KB | None | 0 0
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3.  
  4. entity ClockDivider is
  5.     Port ( CLK_IN : in  STD_LOGIC;
  6.            RESET : in  STD_LOGIC;
  7.            CLK_OUT : out  STD_LOGIC);
  8. end ClockDivider;
  9.  
  10. architecture Behavioral of ClockDivider is
  11.  
  12. begin
  13.  
  14.     ClockDividerProcess:process(CLK_IN, RESET)
  15.         variable counter : integer range 0 to 50000000 := 0;
  16.         variable clk_out_var : std_logic := '0';
  17.     begina
  18.         if(RESET = '1') then
  19.             counter := 0;
  20.             clk_out_var := '0';
  21.         elsif(CLK_IN' event and CLK_IN = '0') then
  22.             counter := counter + 1;
  23.             if(counter = 25000000) then -- toggle each 25M clocks, divides by 50M (becomes 1 Hz)
  24.                 counter := 0;
  25.                 clk_out_var := not clk_out_var;
  26.             else
  27.                 clk_out_var := clk_out_var;
  28.             end if;
  29.         end if;
  30.         CLK_OUT <= clk_out_var;
  31.     end process;
  32.    
  33. end Behavioral;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement