Changeset 10037 for firmware/FTU/clock


Ignore:
Timestamp:
10/25/10 15:29:13 (14 years ago)
Author:
weitzel
Message:
FTU counter changed from 16 to 30 bit
File:
1 edited

Legend:

Unmodified
Added
Removed
  • firmware/FTU/clock/FTU_clk_gen.vhd

    r9880 r10037  
    3434    rst    : IN  STD_LOGIC;
    3535    clk_50 : OUT STD_LOGIC;
     36    clk_1  : OUT STD_LOGIC;
    3637    ready  : OUT STD_LOGIC
    3738  );
     
    4849      LOCKED_OUT      : out   std_logic);
    4950  end component;
     51
     52  component Clock_Divider
     53    port(
     54      clock_in  : IN  STD_LOGIC;
     55      clock_out : OUT STD_LOGIC
     56    );
     57  end component;
     58
     59  signal clk_1M_sig  : std_logic;
     60  signal clk_50M_sig : std_logic;
    5061 
    5162begin
     
    5566      CLKIN_IN        => clk,
    5667      RST_IN          => rst,
    57       CLKFX_OUT       => clk_50,
     68      CLKFX_OUT       => clk_50M_sig,
    5869      CLKIN_IBUFG_OUT => open,
    5970      LOCKED_OUT      => ready
    6071    );
     72
     73  Inst_Clock_Divider : Clock_Divider
     74    port map (
     75      clock_in  => clk_50M_sig,
     76      clock_out => clk_1M_sig
     77    );
     78
     79  clk_50 <= clk_50M_sig;
     80  clk_1  <= clk_1M_sig;
    6181 
    6282end Behavioral;
     83
     84----------------------------------------------------------------------------------
     85
     86library IEEE;
     87use IEEE.STD_LOGIC_1164.ALL;
     88use IEEE.STD_LOGIC_ARITH.ALL;
     89use IEEE.STD_LOGIC_UNSIGNED.ALL;
     90
     91library ftu_definitions;
     92USE ftu_definitions.ftu_array_types.all;
     93USE ftu_definitions.ftu_constants.all;
     94
     95entity Clock_Divider is
     96  generic(
     97    divider : integer := INT_CLK_FREQUENCY / COUNTER_FREQUENCY
     98  );
     99  port(
     100    clock_in  : in  std_logic;
     101    clock_out : out std_logic := '0'
     102  );
     103end entity Clock_Divider;
     104
     105architecture RTL of Clock_Divider is
     106
     107begin
     108   
     109  process (clock_in)
     110    variable Z: integer range 0 to divider - 1;
     111  begin
     112    if rising_edge(clock_in) then
     113      if (Z < divider - 1) then
     114        Z := Z + 1;
     115      else
     116        Z := 0;
     117      end if;
     118      if (Z = 0) then
     119        clock_out <= '1';
     120      end if;
     121      if (Z = divider / 2) then
     122        clock_out <= '0';
     123      end if;
     124    end if;
     125  end process;
     126
     127end architecture RTL;
Note: See TracChangeset for help on using the changeset viewer.