1 ----------------------------------------------------------------------------------
9 ----------------------------------------------------------------------------------
11 use IEEE.STD_LOGIC_1164.
ALL;
17 -- Uncomment the following library declaration if using
18 -- arithmetic functions with Signed or Unsigned values
19 --use IEEE.NUMERIC_STD.ALL;
21 -- Uncomment the following library declaration if instantiating
22 -- any Xilinx primitives in this code.
30 I_DS1 : in ;
-- inputs from the top level pins
52 end CMX_clock_manager;
57 -- pin pair, drives the MMCM
65 --clock for use in the pll status reg
73 ---- component IBUFGDS
75 ---- I : in std_logic;
76 ---- IB : in std_logic;
77 ---- O : out std_logic);
142 DIFF_TERM => TRUE,
-- Differential Termination
143 IBUF_LOW_PWR => TRUE,
-- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards
144 IOSTANDARD =>
"LVDS_25")
152 DIFF_TERM => TRUE,
-- Differential Termination
153 IBUF_LOW_PWR => TRUE,
-- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards
154 IOSTANDARD =>
"LVDS_25")
160 --the MMCM for the global reference for iodelay
163 BANDWIDTH =>
"OPTIMIZED",
-- Jitter programming ("HIGH","LOW","OPTIMIZED")
164 CLKFBOUT_MULT_F =>
32.0,
-- Multiply value for all CLKOUT (5.0-64.0).
165 -- F_VCO = 32*40 MHz =1280 MHz
166 CLKFBOUT_PHASE =>
0.0,
-- Phase offset in degrees of CLKFB (0.00-360.00).
167 CLKIN1_PERIOD =>
24.95,
-- Input clock period in ns to ps resolution (i.e. 33.333 is 30
168 -- MHz) WTF: 25ns = 40MHz, 24.95=40.08 MHz - actual LHC BC
169 CLKOUT0_DIVIDE_F =>
6.4,
-- Divide amount for CLKOUT0 (1.000-128.000).
171 -- CLKOUT0_DUTY_CYCLE - CLKOUT6_DUTY_CYCLE: Duty cycle for each CLKOUT (0.01-0.99).
172 CLKOUT0_DUTY_CYCLE =>
0.5,
173 CLKOUT1_DUTY_CYCLE =>
0.5,
174 CLKOUT2_DUTY_CYCLE =>
0.5,
175 CLKOUT3_DUTY_CYCLE =>
0.5,
176 CLKOUT4_DUTY_CYCLE =>
0.5,
177 CLKOUT5_DUTY_CYCLE =>
0.5,
178 CLKOUT6_DUTY_CYCLE =>
0.5,
179 -- CLKOUT0_PHASE - CLKOUT6_PHASE: Phase offset for each CLKOUT (-360.000-360.000).
180 CLKOUT0_PHASE =>
0.0,
181 CLKOUT1_PHASE =>
0.0,
182 CLKOUT2_PHASE =>
0.0,
-- -45.0,
183 CLKOUT3_PHASE =>
0.0,
184 CLKOUT4_PHASE =>
90.0,
185 CLKOUT5_PHASE =>
0.0,
186 CLKOUT6_PHASE => -
90.
0,
187 -- CLKOUT1_DIVIDE - CLKOUT6_DIVIDE: Divide amount for each CLKOUT (1-128)
188 CLKOUT1_DIVIDE =>
32,
--40 MHz
189 CLKOUT2_DIVIDE =>
4,
--320 MHz
190 CLKOUT3_DIVIDE =>
8,
--160 MHz
191 CLKOUT4_DIVIDE =>
32,
192 CLKOUT5_DIVIDE =>
32,
193 CLKOUT6_DIVIDE =>
32,
194 CLKOUT4_CASCADE => FALSE,
-- Cascase CLKOUT4 counter with CLKOUT6 (TRUE/FALSE)
195 CLOCK_HOLD => FALSE,
-- Hold VCO Frequency (TRUE/FALSE)
196 DIVCLK_DIVIDE =>
1,
-- Master division value (1-80)
197 REF_JITTER1 =>
0.0,
-- Reference input jitter in UI (0.000-0.999).
198 STARTUP_WAIT => FALSE
-- Not supported. Must be set to FALSE.
201 -- Clock Outputs: 1-bit (each) output: User configurable clock outputs
202 CLKOUT0 =>
clk200,
-- 1-bit output: CLKOUT0 output
203 CLKOUT0B =>
open,
-- 1-bit output: Inverted CLKOUT0 output
204 CLKOUT1 =>
clk40,
-- 1-bit output: CLKOUT1 output
205 CLKOUT1B =>
clk40_m180o,
-- 1-bit output: Inverted CLKOUT1 output
206 CLKOUT2 =>
clk320,
-- 1-bit output: CLKOUT2 output
207 CLKOUT2B =>
open,
-- 1-bit output: Inverted CLKOUT2 output
208 CLKOUT3 =>
clk160,
-- 1-bit output: CLKOUT3 output
209 CLKOUT3B =>
open,
-- 1-bit output: Inverted CLKOUT3 output
210 CLKOUT4 =>
clk40_90o,
-- 1-bit output: CLKOUT4 output
211 CLKOUT5 =>
open,
-- 1-bit output: CLKOUT5 output
212 CLKOUT6 =>
clk40_m90o,
-- 1-bit output: CLKOUT6 output
213 -- Feedback Clocks: 1-bit (each) output: Clock feedback ports
215 CLKFBOUTB =>
open,
-- 1-bit output: Inverted CLKFBOUT output
216 -- Status Port: 1-bit (each) output: MMCM status ports
218 -- Clock Input: 1-bit (each) input: Clock input
220 -- Control Ports: 1-bit (each) input: MMCM control ports
221 PWRDWN => '0',
-- 1-bit input: Power-down input
223 -- Feedback Clocks: 1-bit (each) input: Clock feedback ports
232 ia_vme => ADDR_REG_RW_CLOCK_MANAGER_RESET ,
250 I =>
clk40 -- Buffer input
276 I =>
clk200 -- Buffer input
282 I =>
clk160 -- Buffer input
288 I =>
clk320 -- Buffer input
293 --the MMCM for the ds2 clock
296 BANDWIDTH =>
"OPTIMIZED",
-- Jitter programming ("HIGH","LOW","OPTIMIZED")
297 CLKFBOUT_MULT_F =>
32.0,
-- Multiply value for all CLKOUT (5.0-64.0).
298 -- F_VCO = 32*40 MHz =1280 MHz
299 CLKFBOUT_PHASE =>
0.0,
-- Phase offset in degrees of CLKFB (0.00-360.00).
300 CLKIN1_PERIOD =>
24.95,
-- Input clock period in ns to ps resolution (i.e. 33.333 is 30
301 -- MHz) WTF: 25ns = 40MHz, 24.95=40.08 MHz - actual LHC BC
302 CLKOUT0_DIVIDE_F =>
32.0,
-- Divide amount for CLKOUT0 (1.000-128.000).
304 -- CLKOUT0_DUTY_CYCLE - CLKOUT6_DUTY_CYCLE: Duty cycle for each CLKOUT (0.01-0.99).
305 CLKOUT0_DUTY_CYCLE =>
0.5,
306 CLKOUT1_DUTY_CYCLE =>
0.5,
307 CLKOUT2_DUTY_CYCLE =>
0.5,
308 CLKOUT3_DUTY_CYCLE =>
0.5,
309 CLKOUT4_DUTY_CYCLE =>
0.5,
310 CLKOUT5_DUTY_CYCLE =>
0.5,
311 CLKOUT6_DUTY_CYCLE =>
0.5,
312 -- CLKOUT0_PHASE - CLKOUT6_PHASE: Phase offset for each CLKOUT (-360.000-360.000).
313 CLKOUT0_PHASE =>
0.0,
314 CLKOUT1_PHASE =>
0.0,
315 CLKOUT2_PHASE =>
0.0,
-- -45.0,
316 CLKOUT3_PHASE =>
0.0,
317 CLKOUT4_PHASE =>
90.0,
318 CLKOUT5_PHASE =>
0.0,
319 CLKOUT6_PHASE =>
0.0,
320 -- CLKOUT1_DIVIDE - CLKOUT6_DIVIDE: Divide amount for each CLKOUT (1-128)
321 CLKOUT1_DIVIDE =>
32,
--40 MHz
322 CLKOUT2_DIVIDE =>
4,
--320 MHz
323 CLKOUT3_DIVIDE =>
8,
--160 MHz
324 CLKOUT4_DIVIDE =>
32,
327 CLKOUT4_CASCADE => FALSE,
-- Cascase CLKOUT4 counter with CLKOUT6 (TRUE/FALSE)
328 CLOCK_HOLD => FALSE,
-- Hold VCO Frequency (TRUE/FALSE)
329 DIVCLK_DIVIDE =>
1,
-- Master division value (1-80)
330 REF_JITTER1 =>
0.0,
-- Reference input jitter in UI (0.000-0.999).
331 STARTUP_WAIT => FALSE
-- Not supported. Must be set to FALSE.
334 -- Clock Outputs: 1-bit (each) output: User configurable clock outputs
335 CLKOUT0 =>
clk40_ds2,
-- 1-bit output: CLKOUT0 output
336 CLKOUT0B =>
open,
-- 1-bit output: Inverted CLKOUT0 output
337 CLKOUT1 =>
open,
-- 1-bit output: CLKOUT1 output
338 CLKOUT1B =>
open,
-- 1-bit output: Inverted CLKOUT1 output
339 CLKOUT2 =>
open,
-- 1-bit output: CLKOUT2 output
340 CLKOUT2B =>
open,
-- 1-bit output: Inverted CLKOUT2 output
341 CLKOUT3 =>
open,
-- 1-bit output: CLKOUT3 output
342 CLKOUT3B =>
open,
-- 1-bit output: Inverted CLKOUT3 output
343 CLKOUT4 =>
open,
-- 1-bit output: CLKOUT4 output
344 CLKOUT5 =>
open,
-- 1-bit output: CLKOUT5 output
345 CLKOUT6 =>
open,
-- 1-bit output: CLKOUT6 output
346 -- Feedback Clocks: 1-bit (each) output: Clock feedback ports
348 CLKFBOUTB =>
open,
-- 1-bit output: Inverted CLKFBOUT output
349 -- Status Port: 1-bit (each) output: MMCM status ports
351 -- Clock Input: 1-bit (each) input: Clock input
353 -- Control Ports: 1-bit (each) input: MMCM control ports
354 PWRDWN => '0',
-- 1-bit input: Power-down input
356 -- Feedback Clocks: 1-bit (each) input: Clock feedback ports
376 ia_vme => ADDR_REG_RO_CLOCK_MANAGER_STATUS ,
in addr_vmestd_logic_vector (15 downto 0)
mmcm_base mmcm_base_inst_ds2mmcm_base_inst_ds2
out data_vmestd_logic_vector (15 downto 0)
bufg bufg_40_ds2bufg_40_ds2
std_logic FEEDBACK_CLK_DS2
std_logic_vector (15 downto 0) data_to_vme_REG_RW_CLOCK_MANAGER_RESET
std_logic_vector (15 downto 0) data_to_vme_REG_RO_CLOCK_MANAGER_STATUS
mmcm_base mmcm_base_inst_ds1mmcm_base_inst_ds1
out data_from_vmestd_logic_vector (width - 1 downto 0)
std_logic pll_locked_ds2_sig
std_logic_vector (15 downto 0) data_from_vme_REG_RW_CLOCK_MANAGER_RESET
in data_vme_from_belowarr_16
--! inputs from local registers and from
in data_vme_instd_logic_vector (15 downto 0)
out buf_clk40_m180ostd_logic
in data_vme_instd_logic_vector (15 downto 0)
std_logic pll_locked_ds1_sig
out data_vme_outstd_logic_vector (15 downto 0)
std_logic_vector (1 downto 0) bus_drive_local
in data_to_vmestd_logic_vector (width - 1 downto 0)
std_logic FEEDBACK_CLK_DS1
out data_vme_upstd_logic_vector (15 downto 0)
--! connect this to
in addr_vmestd_logic_vector (15 downto 0)
in addr_vmestd_logic_vector (15 downto 0)
out bus_drive_upstd_logic
or of all bus drive requests from below
bufg bufg_40_90obufg_40_90o
out buf_clk40_m90ostd_logic
arr_16 (1 downto 0) data_vme_out_local
vme_inreg_notri_async vme_inreg_notri_async_instvme_inreg_notri_async_inst
bufg bufg_40_m90obufg_40_m90o
ibufgds ibufgds_inst_ds1ibufgds_inst_ds1
out data_vme_outstd_logic_vector (15 downto 0)
out pll_locked_ds2std_logic
bufg bufg_40_m180obufg_40_m180o
ibufgds ibufgds_inst_ds2ibufgds_inst_ds2
out buf_clk40_90ostd_logic
in data_to_vmestd_logic_vector (width - 1 downto 0)
out buf_clk40_ds2std_logic
in bus_drive_from_belowstd_logic_vector