source: firmware/FTM/Clock_cond_interface/Clock_cond_interface.vhd @ 10250

Last change on this file since 10250 was 10250, checked in by vogler, 9 years ago
Clock_cond_interface updated: PLL lock disconnected
File size: 7.3 KB
Line 
1----------------------------------------------------------------------------------
2-- Company:        ETH Zurich, Institute for Particle Physics
3-- Engineer:       Patrick Vogler
4--
5-- Create Date:    14 February 2010
6-- Design Name:   
7-- Module Name:    FTM Clock conditioner Interface
8-- Project Name:
9-- Target Devices:
10-- Tool versions:
11-- Description:    Interface to the LMK03000 Clock conditioner
12--
13-- Dependencies:
14--
15-- Revision:
16-- Revision 0.01 - File Created
17-- Additional Comments:
18--
19--
20-- modifications:  February 21  2011 by Patrick Vogler
21--                 March    23  2011 by Patrick Vogler
22----------------------------------------------------------------------------------
23
24library IEEE;
25use IEEE.STD_LOGIC_1164.ALL;
26use IEEE.STD_LOGIC_ARITH.ALL;
27use IEEE.STD_LOGIC_UNSIGNED.ALL;
28
29---- Uncomment the following library declaration if instantiating
30---- any Xilinx primitives in this code.
31--library UNISIM;
32--use UNISIM.VComponents.all;
33
34library ftm_definitions;
35USE ftm_definitions.ftm_array_types.all;
36USE ftm_definitions.ftm_constants.all;
37
38
39
40entity Clock_cond_interface is
41  port(
42
43   
44-- Clock
45-------------------------------------------------------------------------------
46   clk   : IN  STD_LOGIC;               -- 50 MHz system clock
47
48   
49-- Clock conditioner LMK03000
50-------------------------------------------------------------------------------
51   CLK_Clk_Cond  : out STD_LOGIC;  -- clock conditioner MICROWIRE interface clock
52   LE_Clk_Cond   : out STD_LOGIC;  -- clock conditioner MICROWIRE interface latch enable   
53   DATA_Clk_Cond : out STD_LOGIC;  -- clock conditioner MICROWIRE interface data
54   
55   SYNC_Clk_Cond : out STD_LOGIC;  -- clock conditioner global clock synchronization
56   LD_Clk_Cond   : in STD_LOGIC;   -- clock conditioner lock detect                 
57
58   
59-- Time Marker
60-------------------------------------------------------------------------------
61   TIM_Sel    : out STD_LOGIC;   -- Time Marker selector
62                                 -- 1 = time marker from Clock conditioner
63                                 --     for DRS timing calibration
64                                 --
65                                 -- 0 = time marker from FPGA for normal
66                                 --     operation / physics run
67
68   
69   
70-- FPGA intern clock conditioner configuration data
71-------------------------------------------------------------------------------
72   cc_R0             : in std_logic_vector (31 downto 0) := (others => '0');
73   cc_R1             : in std_logic_vector (31 downto 0) := (others => '0');
74   cc_R8             : in std_logic_vector (31 downto 0) := (others => '0');
75   cc_R9             : in std_logic_vector (31 downto 0) := (others => '0');
76   cc_R11            : in std_logic_vector (31 downto 0) := (others => '0');
77   cc_R13            : in std_logic_vector (31 downto 0) := (others => '0');
78   cc_R14            : in std_logic_vector (31 downto 0) := (others => '0');
79   cc_R15            : in std_logic_vector (31 downto 0) := (others => '0');
80
81 
82 
83   
84-- FPGA intern control signals
85-------------------------------------------------------------------------------
86   start_config : in STD_LOGIC;        -- load new configuration into the clock
87                                       -- conditioner
88   
89   config_started : out STD_LOGIC;     -- indicates that the new configuration
90                                       -- is currently loaded into the clock conditioner
91
92   config_done : out STD_LOGIC;        -- indicates that the configuration has
93                                       -- been loaded and the clock conditioners
94                                       -- PLL is locked
95
96   timemarker_select: in STD_LOGIC     -- selects time marker source
97                                       --
98                                       -- 1 = time marker from Clock conditioner
99                                       --     for DRS timing calibration
100                                       --
101                                       -- 0 = time marker from FPGA for normal
102                                       --     operation / physics run
103   
104  );
105end Clock_cond_interface;
106
107
108
109
110architecture Behavioral of Clock_cond_interface is
111 
112 
113component microwire_interface IS
114   PORT(
115      clk               : IN     std_logic;
116      clk_uwire         : OUT    std_logic;  --- IN or OUT ?         
117      data_uwire        : OUT    std_logic;       
118      le_uwire          : OUT    std_logic;
119      clk_cond_array    : IN     clk_cond_array_type;   
120      config_start      : IN     std_logic;
121      config_ready      : OUT    std_logic; 
122      config_started    : OUT    std_logic     
123   );
124end component;
125
126
127
128 
129  signal clk_50M_sig : STD_LOGIC;       -- system clock
130--  signal start_config_sig : STD_LOGIC; 
131
132  signal config_ready_sig : STD_LOGIC;
133  signal clk_uwire_sig : STD_LOGIC;
134
135  signal config_started_sig : STD_LOGIC;
136 
137  signal clk_cond_array_sig : clk_cond_array_type; 
138
139  signal cc_R0_sig             : std_logic_vector (31 downto 0); 
140  signal cc_R1_sig             : std_logic_vector (31 downto 0); 
141  signal cc_R8_sig             : std_logic_vector (31 downto 0); 
142  signal cc_R9_sig             : std_logic_vector (31 downto 0); 
143  signal cc_R11_sig            : std_logic_vector (31 downto 0); 
144  signal cc_R13_sig            : std_logic_vector (31 downto 0); 
145  signal cc_R14_sig            : std_logic_vector (31 downto 0); 
146  signal cc_R15_sig            : std_logic_vector (31 downto 0); 
147 
148begin
149 
150  Inst_microwire_interface:microwire_interface
151    port map (
152        clk                 => clk_50M_sig,         
153        clk_uwire           => clk_uwire_sig, 
154        data_uwire          => DATA_Clk_Cond,
155        le_uwire            => LE_Clk_Cond,       
156        clk_cond_array      => clk_cond_array_sig, 
157        config_start        => start_config,
158       
159   --   config_start        => start_config_sig, 
160   --   config_start        <= start_config_sig,
161       
162        config_ready        => config_ready_sig,
163        config_started      => config_started_sig
164       );
165
166 
167       
168  config_done <= config_ready_sig;  -- indicates that the configuration
169                                    -- has been loaded
170
171
172 
173 --  config_done <= (config_ready_sig AND LD_Clk_Cond);  -- indicates that the configuration
174                                                      -- has been loaded and
175                                                      -- the PLL is locked again
176
177
178 
179  TIM_Sel <= timemarker_select;                                   
180  CLK_Clk_Cond <= clk_uwire_sig;
181
182  clk_50M_sig <= clk;
183 -- start_config_sig <= start_config;
184
185 --  start_config <= start_config_sig;     
186
187
188  config_started <= config_started_sig;
189
190  cc_R0_sig  <= cc_R0;             
191  cc_R1_sig  <= cc_R1;                 
192  cc_R8_sig  <= cc_R8;       
193  cc_R9_sig  <= cc_R9;     
194  cc_R11_sig <= cc_R11;       
195  cc_R13_sig <= cc_R13;         
196  cc_R14_sig <= cc_R14;           
197  cc_R15_sig <= cc_R15;
198
199  clk_cond_array_sig(0) <= LMK03000_Reset;      -- reset LKM03000 by setting
200                                                -- bit 31 of register 0
201  clk_cond_array_sig(1) <= cc_R0_sig;
202  clk_cond_array_sig(2) <= cc_R1_sig; 
203  clk_cond_array_sig(3) <= cc_R8_sig; 
204  clk_cond_array_sig(4) <= cc_R9_sig; 
205  clk_cond_array_sig(5) <= cc_R11_sig;
206  clk_cond_array_sig(6) <= cc_R13_sig;
207  clk_cond_array_sig(7) <= cc_R14_sig;
208  clk_cond_array_sig(8) <= cc_R15_sig;
209
210
211end Behavioral;
212
213
Note: See TracBrowser for help on using the repository browser.