eFEX firmware  1.7.3
ATLAS l1-calo - electron and tau feature extraction firmware for eFEX boards

Back to eFEX documentation
clk_resources.vhd
Go to the documentation of this file.
1 
17 
18 
19 library IEEE;
20 use IEEE.STD_LOGIC_1164.all;
21 use ieee.numeric_std.all;
22 library ipbus_lib;
23 use ipbus_lib.ipbus.all;
25 entity clk_resources is
26  port (
28  gt_clk_p : in std_logic;
30  gt_clk_n : in std_logic;
32  TTC_clk_p : in std_logic;
34  TTC_clk_n : in std_logic;
36  reset_clk125 : in std_logic;
38  clk40_rdout : out std_logic;
40  clk200 : out std_logic;
42  clk40 : out std_logic;
44  clk280 : out std_logic;
46  rst_macclk : out std_logic;
48  onehz : out std_logic; -- this goes to the led_clk of the configure block
50  reset : in std_logic; -- to reset the mmcm of the 280M fabric clock
52  rst_ipb : out std_logic;
54  load : out std_logic; -- goes to the top level of the algo block
56  mac_clk : out std_logic;
58  locked_40m : out std_logic; -- use this as this gets its clock from 40Mz signal
60  ipb_clk : out std_logic;
62  clk200_iodelay : out std_logic
63  );
64 end clk_resources;
65 
67 architecture Behavioral of clk_resources is
68 
69  component clk_wiz_1
70  port
71  (clk40 : in std_logic;
72  clk40_rdout : out std_logic;
73  reset : in std_logic;
74  locked : out std_logic
75  );
76  end component;
77 
78 
79  component ClockWizard
80  port
81  (clk200 : out std_logic;
82  load : out std_logic;
83  reset : in std_logic;
84  clk40 : out std_logic;
85  clk280 : out std_logic;
86  locked : out std_logic;
87  clk_in1_p : in std_logic;
88  clk_in1_n : in std_logic
89  );
90  end component;
91 
92  component clocks_7s_extphy
93  port(
94  sysclk_p: in std_logic;
95  sysclk_n: in std_logic;
96  clko_125: out std_logic;
97  clko_200: out std_logic;
98  clko_ipb: out std_logic;
99  locked: out std_logic;
100  nuke: in std_logic := '0';
101  soft_rst: in std_logic := '0';
102  rsto_125: out std_logic;
103  rsto_ipb: out std_logic;
104  rsto_ipb_ctrl: out std_logic;
105  onehz: out std_logic
106  );
107  end component;
108 
109  signal clk40_int, mac_clk_int : std_logic;
110  signal rsto_eth : std_logic := '1';
111  signal locked : std_logic := '0';
112 
113 begin
114 
115  mac_clk <= mac_clk_int;
116 
117  Inputclk40M : ClockWizard
118  port map (
119 
120  -- Clock in ports
121  clk_in1_p => TTC_clk_p,
122  clk_in1_n => TTC_clk_n,
123  -- Clock out ports
124  clk200 => clk200,
125  clk40 => clk40_int,
126  clk280 => clk280,
127  reset => reset,
128  load => load,
129  -- Status and control signals
130  locked => locked_40m
131  );
132 
133  clk40_gen : clk_wiz_1
134  port map (
135 
136  -- Clock out ports
137  clk40_rdout => clk40_rdout,
138  -- Status and control signals
139  reset => '0',
140  locked => open,
141  -- Clock in ports
142  clk40 => clk40_int
143  );
144 
145  clk40 <= clk40_int;
146 
147  -- DCM clock generation for internal bus, ethernet
148  clocks : clocks_7s_extphy
149  port map(
150  sysclk_p => gt_clk_p,
151  sysclk_n => gt_clk_n,
152  clko_125 => mac_clk_int,
153  clko_200 => clk200_iodelay,
154  clko_ipb => ipb_clk,
155  locked => locked,
156  soft_rst => reset_clk125, --soft_rst now for ethernet clock
157  rsto_125 => rsto_eth,
158  rsto_ipb => rst_ipb,
159  rsto_ipb_ctrl => open,
160  onehz => onehz
161  );
162 
163  process(mac_clk_int)
164  begin
165  if rising_edge(mac_clk_int) then
166  rst_macclk <= rsto_eth;
167  end if;
168  end process;
169 
170 end Behavioral;
Clock generating module.
Clock generating module.
in TTC_clk_p std_logic
TTC clock input 40MHz.
out rst_ipb std_logic
Reset output synchronised to ipbus clock.
out clk280 std_logic
280MHz clock output
in reset std_logic
Reset output generated from TTC clock MMCM.
in reset_clk125 std_logic
External reset signal for 125 MHz clock domain from Control FPGA.
out ipb_clk std_logic
31.25MHz clock output used for ipbus communication and accessing registers
out load std_logic
40MHz clock output with 12% duty cycle used in ALGO Block
out clk40_rdout std_logic
40MHz clock output dedicated to Readout Logic
in TTC_clk_n std_logic
TTC clock input 40MHz.
in gt_clk_p std_logic
Crystal clock input 125MHz.
out mac_clk std_logic
125MHz clock output for ipbus communication between FPGAs
out onehz std_logic
One Hz clock output.
out locked_40m std_logic
40MHz clock Locked output
out clk200 std_logic
200MHz clock output (TTC)
out clk200_iodelay std_logic
Pure 200MHz clock output.
out rst_macclk std_logic
Reset output synchronised to mac clock.
out clk40 std_logic
40MHz clock output
in gt_clk_n std_logic
Crystal clock input 125MHz.