source: firmware/FTM/FTM_top.vhd@ 10703

Last change on this file since 10703 was 10639, checked in by weitzel, 14 years ago
FTM: keep-alive of Wiznet actiated, clock conditioner interface updated, trigger ID sending updated
File size: 49.2 KB
Line 
1----------------------------------------------------------------------------------
2-- Company: ETH Zurich, Institute for Particle Physics
3-- Engineer: P. Vogler, Q. Weitzel
4--
5-- Create Date: 08 December 2010
6-- Design Name:
7-- Module Name: FTM_top - Behavioral
8-- Project Name:
9-- Target Devices:
10-- Tool versions:
11-- Description: Top level entity for FTM firmware
12--
13--
14-- Dependencies:
15--
16-- Revision:
17-- Revision 0.01 - File Created
18-- Additional Comments:
19--
20----------------------------------------------------------------------------------
21
22library IEEE;
23use IEEE.STD_LOGIC_1164.ALL;
24use IEEE.STD_LOGIC_ARITH.ALL;
25use IEEE.STD_LOGIC_UNSIGNED.ALL;
26
27library ftm_definitions;
28USE ftm_definitions.ftm_array_types.all;
29USE ftm_definitions.ftm_constants.all;
30
31---- Uncomment the following library declaration if instantiating
32---- any Xilinx primitives in this code.
33library UNISIM;
34use UNISIM.VComponents.all;
35
36
37entity FTM_top is
38 port(
39
40 -- Clock
41 clk : IN STD_LOGIC; -- external clock from oscillator U47
42
43 -- connection to the WIZnet W5300 ethernet controller
44 -- on IO-Bank 1
45 -------------------------------------------------------------------------------
46 -- W5300 data bus
47 W_D : inout STD_LOGIC_VECTOR(15 downto 0); -- 16-bit data bus to W5300
48
49 -- W5300 address bus
50 W_A : out STD_LOGIC_VECTOR(9 downto 0); -- there is no real net W_A0 because
51 -- the W5300 is operated in the
52 -- 16-bit mode
53 -- -> W_A<0> assigned to unconnected pin
54
55 -- W5300 control signals
56 -- the signals W_INT, W_RD, W_WR and W_RES also go to testpoints T17
57 -- W_CS is also routed to testpoint JP7
58 W_CS : out STD_LOGIC := '1'; -- W5300 chip select
59 W_INT : IN STD_LOGIC; -- interrupt
60 W_RD : out STD_LOGIC := '1'; -- read
61 W_WR : out STD_LOGIC := '1'; -- write
62 W_RES : out STD_LOGIC := '1'; -- reset W5300 chip
63
64 -- W5300 buffer ready indicator
65 -- W_BRDY : in STD_LOGIC_VECTOR(3 downto 0);
66
67 -- testpoints (T18) associated with the W5300 on IO-bank 1
68 -- W_T : inout STD_LOGIC_VECTOR(3 downto 0);
69
70
71 -- SPI Interface
72 -- connection to the EEPROM U36 (AL25L016M) and
73 -- temperature sensors U45, U46, U48 and U49 (all MAX6662)
74 -- on IO-Bank 1
75 -------------------------------------------------------------------------------
76 -- S_CLK : out STD_LOGIC; -- SPI clock
77
78 -- EEPROM
79 -- MOSI : out STD_LOGIC; -- master out slave in
80 -- MISO : in STD_LOGIC; -- master in slave out
81 -- EE_CS : out STD_LOGIC; -- EEPROM chip select
82
83 -- temperature sensors U45, U46, U48 and U49
84 -- SIO : inout STD_LOGIC; -- serial IO
85 -- TS_CS : out STD_LOGIC_VECTOR(3 downto 0); -- temperature sensors chip select
86
87
88 -- Trigger primitives inputs
89 -- on IO-Bank 2
90 -------------------------------------------------------------------------------
91 Trig_Prim_A : in STD_LOGIC_VECTOR(9 downto 0); -- crate 0
92 Trig_Prim_B : in STD_LOGIC_VECTOR(9 downto 0); -- crate 1
93 Trig_Prim_C : in STD_LOGIC_VECTOR(9 downto 0); -- crate 2
94 Trig_Prim_D : in STD_LOGIC_VECTOR(9 downto 0); -- crate 3
95
96
97 -- NIM inputs
98 ------------------------------------------------------------------------------
99 -- on IO-Bank 3
100 ext_Trig : in STD_LOGIC_VECTOR(2 downto 1); -- external trigger input
101 Veto : in STD_LOGIC; -- trigger veto input
102 -- NIM_In : in STD_LOGIC_VECTOR(2 downto 0); -- auxiliary inputs
103
104 -- on IO-Bank 0
105 -- alternative external clock input for FPGA
106 -- NIM_In3_GCLK : in STD_LOGIC; -- input with global clock buffer available
107
108
109 -- LEDs on IO-Banks 0 and 3
110 -------------------------------------------------------------------------------
111 LED_red : out STD_LOGIC_VECTOR(3 downto 0); -- red
112 LED_ye : out STD_LOGIC_VECTOR(1 downto 0); -- yellow
113 LED_gn : out STD_LOGIC_VECTOR(1 downto 0); -- green
114
115
116 -- Clock conditioner LMK03000
117 -- on IO-Bank 3
118 -------------------------------------------------------------------------------
119 CLK_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface serial clock
120 LE_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface latch enable
121 DATA_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface data
122
123 SYNC_Clk_Cond : out STD_LOGIC; -- global clock synchronization
124 LD_Clk_Cond : in STD_LOGIC; -- lock detect
125
126
127 -- various RS-485 Interfaces
128 -- on IO-Bank 3
129 -------------------------------------------------------------------------------
130 -- Bus 1: FTU slow control
131 Bus1_Tx_En : out STD_LOGIC; -- bus 1: transmitter enable
132 Bus1_Rx_En : out STD_LOGIC; -- bus 1: receiver enable
133
134 Bus1_RxD_0 : in STD_LOGIC; -- crate 0
135 Bus1_TxD_0 : out STD_LOGIC;
136
137 Bus1_RxD_1 : in STD_LOGIC; -- crate 1
138 Bus1_TxD_1 : out STD_LOGIC;
139
140 Bus1_RxD_2 : in STD_LOGIC; -- crate 2
141 Bus1_TxD_2 : out STD_LOGIC;
142
143 Bus1_RxD_3 : in STD_LOGIC; -- crate 3
144 Bus1_TxD_3 : out STD_LOGIC;
145
146
147 -- Bus 2: Trigger-ID to FAD boards
148 Bus2_Tx_En : out STD_LOGIC; -- bus 2: transmitter enable
149 Bus2_Rx_En : out STD_LOGIC; -- bus 2: receiver enable
150
151 Bus2_RxD_0 : in STD_LOGIC; -- crate 0
152 Bus2_TxD_0 : out STD_LOGIC;
153
154 Bus2_RxD_1 : in STD_LOGIC; -- crate 1
155 Bus2_TxD_1 : out STD_LOGIC;
156
157 Bus2_RxD_2 : in STD_LOGIC; -- crate 2
158 Bus2_TxD_2 : out STD_LOGIC;
159
160 Bus2_RxD_3 : in STD_LOGIC; -- crate 3
161 Bus2_TxD_3 : out STD_LOGIC;
162
163
164 -- auxiliary access
165 -- Aux_Rx_D : in STD_LOGIC;
166 -- Aux_Tx_D : out STD_LOGIC;
167 -- Aux_Rx_En : out STD_LOGIC; -- Rx- and Tx enable
168 -- Aux_Tx_En : out STD_LOGIC; -- also for auxiliary Trigger-ID
169
170
171 -- auxiliary Trigger-ID (i.e. to send the Trigger-ID to the counting hut/house/container)
172 -- TrID_Rx_D : in STD_LOGIC;
173 -- TrID_Tx_D : out STD_LOGIC;
174
175
176 -- Crate-Resets
177 -- on IO-Bank 3
178 -------------------------------------------------------------------------------
179 -- Crate_Res0 : out STD_LOGIC;
180 -- Crate_Res1 : out STD_LOGIC;
181 -- Crate_Res2 : out STD_LOGIC;
182 -- Crate_Res3 : out STD_LOGIC;
183
184
185 -- Busy signals from the FAD boards
186 -- on IO-Bank 3
187 -------------------------------------------------------------------------------
188 Busy0 : in STD_LOGIC;
189 Busy1 : in STD_LOGIC;
190 Busy2 : in STD_LOGIC;
191 Busy3 : in STD_LOGIC;
192
193
194 -- NIM outputs
195 -- on IO-Bank 0
196 -- LVDS output at the FPGA followed by LVDS to NIM conversion stage
197 -------------------------------------------------------------------------------
198 -- calibration
199 -- Cal_NIM1_p : out STD_LOGIC; -- Cal_NIM1+
200 -- Cal_NIM1_n : out STD_LOGIC; -- Cal_NIM1-
201 -- Cal_NIM2_p : out STD_LOGIC; -- Cal_NIM2+
202 -- Cal_NIM2_n : out STD_LOGIC; -- Cal_NIM2-
203
204 -- auxiliarry / spare NIM outputs
205 -- NIM_Out0_p : out STD_LOGIC; -- NIM_Out0+
206 -- NIM_Out0_n : out STD_LOGIC; -- NIM_Out0-
207 -- NIM_Out1_p : out STD_LOGIC; -- NIM_Out1+
208 -- NIM_Out1_n : out STD_LOGIC; -- NIM_Out1-
209
210
211 -- fast control signal outputs
212 -- LVDS output at the FPGA followed by LVDS to NIM conversion stage
213 -------------------------------------------------------------------------------
214 -- RES_p : out STD_LOGIC; -- RES+ Reset
215 -- RES_n : out STD_LOGIC; -- RES- IO-Bank 0
216
217 TRG_p : out STD_LOGIC; -- TRG+ Trigger
218 TRG_n : out STD_LOGIC; -- TRG- IO-Bank 0
219
220 TIM_Run_p : out STD_LOGIC; -- TIM_Run+ Time Marker
221 TIM_Run_n : out STD_LOGIC; -- TIM_Run- IO-Bank 2
222 TIM_Sel : out STD_LOGIC -- Time Marker selector on IO-Bank 2
223
224 -- CLD_FPGA : in STD_LOGIC; -- DRS-Clock feedback into FPGA
225
226
227 -- LVDS calibration outputs
228 -- on IO-Bank 0
229 -------------------------------------------------------------------------------
230 -- to connector J13
231 -- for light pulsar in the mirror dish
232 -- Cal_0_p : out STD_LOGIC;
233 -- Cal_0_n : out STD_LOGIC;
234 -- Cal_1_p : out STD_LOGIC;
235 -- Cal_1_n : out STD_LOGIC;
236 -- Cal_2_p : out STD_LOGIC;
237 -- Cal_2_n : out STD_LOGIC;
238 -- Cal_3_p : out STD_LOGIC;
239 -- Cal_3_n : out STD_LOGIC;
240
241 -- to connector J12
242 -- for light pulsar inside shutter
243 -- Cal_4_p : out STD_LOGIC;
244 -- Cal_4_n : out STD_LOGIC;
245 -- Cal_5_p : out STD_LOGIC;
246 -- Cal_5_n : out STD_LOGIC;
247 -- Cal_6_p : out STD_LOGIC;
248 -- Cal_6_n : out STD_LOGIC;
249 -- Cal_7_p : out STD_LOGIC;
250 -- Cal_7_n : out STD_LOGIC
251
252
253 -- Testpoints
254 -------------------------------------------------------------------------------
255 -- TP : inout STD_LOGIC_VECTOR(32 downto 0);
256 -- TP_in : in STD_LOGIC_VECTOR(34 downto 33); -- input only
257
258 -- Board ID - inputs
259 -- local board-ID "solder programmable"
260 -- all on 'input only' pins
261 -------------------------------------------------------------------------------
262 -- brd_id : in STD_LOGIC_VECTOR(7 downto 0) -- input only
263
264 );
265end FTM_top;
266
267architecture Behavioral of FTM_top is
268
269 signal cc_R0_sig : std_logic_vector(31 DOWNTO 0);
270 signal cc_R1_sig : std_logic_vector(31 DOWNTO 0);
271 signal cc_R11_sig : std_logic_vector(31 DOWNTO 0);
272 signal cc_R13_sig : std_logic_vector(31 DOWNTO 0);
273 signal cc_R14_sig : std_logic_vector(31 DOWNTO 0);
274 signal cc_R15_sig : std_logic_vector(31 DOWNTO 0);
275 signal cc_R8_sig : std_logic_vector(31 DOWNTO 0);
276 signal cc_R9_sig : std_logic_vector(31 DOWNTO 0);
277 signal coin_n_c_sig : std_logic_vector(15 DOWNTO 0);
278 signal coin_n_p_sig : std_logic_vector(15 DOWNTO 0);
279 signal dead_time_sig : std_logic_vector(15 DOWNTO 0);
280 signal ftu_active_cr0_sig : std_logic_vector(15 DOWNTO 0);
281 signal ftu_active_cr1_sig : std_logic_vector(15 DOWNTO 0);
282 signal ftu_active_cr2_sig : std_logic_vector(15 DOWNTO 0);
283 signal ftu_active_cr3_sig : std_logic_vector(15 DOWNTO 0);
284 signal general_settings_sig : std_logic_vector(15 DOWNTO 0);
285 signal lp1_amplitude_sig : std_logic_vector(15 DOWNTO 0);
286 signal lp1_delay_sig : std_logic_vector(15 DOWNTO 0);
287 signal lp2_amplitude_sig : std_logic_vector(15 DOWNTO 0);
288 signal lp2_delay_sig : std_logic_vector(15 DOWNTO 0);
289 signal lp_pt_freq_sig : std_logic_vector(15 DOWNTO 0);
290 signal lp_pt_ratio_sig : std_logic_vector(15 DOWNTO 0);
291 signal timemarker_delay_sig : std_logic_vector(15 DOWNTO 0);
292 signal trigger_delay_sig : std_logic_vector(15 DOWNTO 0);
293 signal sd_addr_ftu_sig : std_logic_vector(11 DOWNTO 0);
294 signal sd_busy_sig : std_logic;
295 signal sd_data_out_ftu_sig : std_logic_vector(15 DOWNTO 0) := (others => '0');
296 signal sd_read_ftu_sig : std_logic;
297 signal sd_ready_sig : std_logic;
298 signal sd_started_ftu_sig : std_logic := '0';
299 signal new_config_sig : std_logic := '0';
300 signal config_started_sig : std_logic := '0';
301 signal config_start_eth_sig : std_logic := '0';
302 signal config_started_eth_sig : std_logic := '0';
303 signal config_ready_eth_sig : std_logic := '0';
304 signal config_started_ack_sig : std_logic := '0';
305 signal ping_ftu_start_sig : std_logic := '0';
306 signal ping_ftu_started_sig : std_logic := '0';
307 signal ping_ftu_ready_sig : std_logic := '0';
308 signal config_start_ftu_sig : std_logic := '0';
309 signal config_started_ftu_sig : std_logic := '0';
310 signal config_ready_ftu_sig : std_logic := '0';
311 signal rates_ftu_start_sig : std_logic := '0';
312 signal rates_ftu_started_sig : std_logic := '0';
313 signal rates_ftu_ready_sig : std_logic := '0';
314 signal fl_busy_sig : std_logic;
315 signal fl_ready_sig : std_logic;
316 signal fl_write_sig : std_logic := '0';
317 signal fl_started_ftu_sig : std_logic := '0';
318 signal fl_addr_sig : std_logic_vector(11 DOWNTO 0) := (others => '0');
319 signal fl_data_sig : std_logic_vector(15 DOWNTO 0) := (others => '0');
320 signal ping_ftu_start_ftu_sig : std_logic := '0';
321 signal ping_ftu_started1_sig : std_logic := '0';
322 signal ping_ftu_ready1_sig : std_logic := '0';
323 signal coin_win_c_sig : std_logic_vector(15 DOWNTO 0) := (others => '0');
324 signal coin_win_p_sig : std_logic_vector(15 DOWNTO 0) := (others => '0');
325 --new or changed stuff
326 signal dd_data_sig : std_logic_vector(15 DOWNTO 0) := (others => '0');
327 signal dd_addr_sig : std_logic_vector(11 DOWNTO 0) := (others => '0');
328 signal dd_block_start_ftu_sig : std_logic := '0';
329 signal dd_block_start_ack_ftu_sig : std_logic := '0';
330 signal dd_block_ready_ftu_sig : std_logic := '0';
331 signal dd_busy_sig : std_logic;
332 signal dd_write_sig : std_logic := '0';
333 signal dd_started_ftu_sig : std_logic := '0';
334 signal dd_ready_sig : std_logic;
335 signal dd_send_sig : std_logic := '1';
336 signal dd_send_ack_sig : std_logic := '1';
337 signal dd_send_ready_sig : std_logic := '1';
338 --very new stuff
339 SIGNAL ftu_error_send_ack_sig : std_logic := '1';
340 SIGNAL ftu_error_send_ready_sig : std_logic := '1';
341 SIGNAL ftu_error_calls_sig : std_logic_vector(15 DOWNTO 0) := X"0000";
342 SIGNAL ftu_error_data_sig : std_logic_vector(223 DOWNTO 0) := (others => '0');
343 SIGNAL ftu_error_send_sig : std_logic := '0';
344 signal prescaling_FTU01_sig : std_logic_vector (15 DOWNTO 0);
345 signal trigger_counter_sig : std_logic_vector (31 DOWNTO 0);
346 signal trigger_counter_read_sig : std_logic;
347 signal trigger_counter_valid_sig : std_logic;
348
349 signal config_start_cc_sig : std_logic := '0';
350 signal config_started_cc_sig : std_logic := '0';
351 signal config_ready_cc_sig : std_logic := '0';
352
353 signal config_trigger_sig : std_logic;
354 signal config_trigger_done_sig : std_logic;
355
356 signal clk_buf_sig : std_logic;
357 signal clk_1M_sig : STD_LOGIC; -- generated from 50M clock by divider
358 signal clk_50M_sig : STD_LOGIC; -- generated by internal DCM
359 signal clk_250M_sig : STD_LOGIC; -- generated by internal DCM
360 signal clk_250M_ps_sig : STD_LOGIC; -- generated by internal DCM
361 signal clk_ready_sig : STD_LOGIC := '0'; -- set high by FTM_clk_gen when DCMs have locked
362
363 signal trigger_ID_ready_sig : std_logic; -- initialized in trigger manager
364 signal trigger_ID_sig : std_logic_vector(55 downto 0); -- initialized in trigger manager
365 signal trigger_ID_read_sig : std_logic; -- initialized in FTM_fad_broadcast
366
367 signal reset_sig : STD_LOGIC := '0'; -- initialize to 0 on power-up
368
369 signal trigger_signal_sig : std_logic := '0';
370 signal TIM_signal_sig : std_logic := '0';
371
372 --signals for FPGA DNA identifier
373 signal dna_sig : STD_LOGIC_VECTOR(63 downto 0); -- initialized in FTM_dna_gen
374 signal dna_start_sig : STD_LOGIC; -- initialized in FTM_central_control
375 signal dna_ready_sig : STD_LOGIC; -- initialized in FTM_dna_gen
376
377 signal led_sig : std_logic_vector(7 downto 0) := (others => '0');
378
379 signal get_ot_counter_sig : std_logic;
380 signal get_ot_counter_started_sig : std_logic;
381 signal get_ot_counter_ready_sig : std_logic;
382 signal on_time_counter_sig : std_logic_vector(47 downto 0);
383
384 signal get_ts_counter_sig : std_logic;
385 signal get_ts_counter_started_sig : std_logic;
386 signal get_ts_counter_ready_sig : std_logic;
387 signal timestamp_counter_sig : std_logic_vector(47 downto 0);
388
389 signal crate_reset_sig : std_logic;
390 signal crate_reset_ack_sig : std_logic;
391 signal crate_reset_param_sig : std_logic_vector (15 DOWNTO 0);
392 signal start_run_sig : std_logic;
393 signal start_run_ack_sig : std_logic;
394 signal stop_run_sig : std_logic;
395 signal stop_run_ack_sig : std_logic;
396 signal current_cc_state_sig : std_logic_vector (15 DOWNTO 0);
397 signal start_run_param_sig : std_logic_vector (15 DOWNTO 0);
398 signal start_run_num_events_sig : std_logic_vector (31 DOWNTO 0);
399
400 signal trigger_start_sig : std_logic;
401 signal trigger_stop_sig : std_logic;
402
403 signal enable_ID_sending_sig : std_logic;
404
405-- component FTM_clk_gen
406-- port(
407-- clk : IN STD_LOGIC;
408-- rst : IN STD_LOGIC;
409-- clk_1 : OUT STD_LOGIC;
410-- clk_50 : OUT STD_LOGIC;
411-- clk_250 : OUT STD_LOGIC;
412-- clk_250_ps : OUT STD_LOGIC;
413-- ready : OUT STD_LOGIC
414-- );
415-- end component;
416
417 component FTM_clk_gen_2
418 port(
419 clk : IN STD_LOGIC;
420 rst : IN STD_LOGIC;
421 clk_1 : OUT STD_LOGIC;
422 clk_50 : OUT STD_LOGIC;
423 clk_250 : OUT STD_LOGIC;
424 clk_250_ps : OUT STD_LOGIC;
425 ready : OUT STD_LOGIC
426 );
427 end component;
428
429 component FTM_dna_gen
430 port(
431 clk : IN STD_LOGIC;
432 start : IN STD_LOGIC;
433 dna : OUT STD_LOGIC_VECTOR(63 downto 0);
434 ready : OUT STD_LOGIC
435 );
436 end component;
437
438 component trigger_manager
439 port(
440 --clocks
441 clk_50MHz : in std_logic;
442 clk_250MHz : in std_logic;
443 clk_250MHz_180 : in std_logic;
444 --trigger primitives from FTUs
445 trig_prim_0 : in std_logic_vector(9 downto 0); --crate 0
446 trig_prim_1 : in std_logic_vector(9 downto 0); --crate 1
447 trig_prim_2 : in std_logic_vector(9 downto 0); --crate 2
448 trig_prim_3 : in std_logic_vector(9 downto 0); --crate 3
449 --external signals
450 ext_trig_1 : in std_logic;
451 ext_trig_2 : in std_logic;
452 ext_veto : in std_logic;
453 FAD_busy_0 : in std_logic; --crate 0
454 FAD_busy_1 : in std_logic; --crate 1
455 FAD_busy_2 : in std_logic; --crate 2
456 FAD_busy_3 : in std_logic; --crate 3
457 --control signals from e.g. main control
458 start_run : in std_logic; --enable trigger output
459 stop_run : in std_logic; --disable trigger output
460 new_config : in std_logic;
461 --settings register (see FTM Firmware Specifications)
462 general_settings : in std_logic_vector(15 downto 0);
463 LP_and_PED_freq : in std_logic_vector(15 downto 0);
464 LP1_LP2_PED_ratio : in std_logic_vector(15 downto 0);
465 maj_coinc_n_phys : in std_logic_vector(15 downto 0);
466 maj_coinc_n_calib : in std_logic_vector(15 downto 0);
467 trigger_delay : in std_logic_vector(15 downto 0);
468 TIM_delay : in std_logic_vector(15 downto 0);
469 dead_time : in std_logic_vector(15 downto 0);
470 coinc_window_phys : in std_logic_vector(15 downto 0);
471 coinc_window_calib : in std_logic_vector(15 downto 0);
472 active_FTU_list_0 : in std_logic_vector(15 downto 0);
473 active_FTU_list_1 : in std_logic_vector(15 downto 0);
474 active_FTU_list_2 : in std_logic_vector(15 downto 0);
475 active_FTU_list_3 : in std_logic_vector(15 downto 0);
476 --control signals or information for other entities
477 trigger_ID_read : in std_logic;
478 trig_cnt_copy_read : in std_logic;
479 trigger_ID_ready : out std_logic;
480 trigger_ID : out std_logic_vector(55 downto 0);
481 trig_cnt_copy : out std_logic_vector(31 downto 0); --counter reading
482 trig_cnt_copy_valid : out std_logic; --trigger counter reading is valid
483 trigger_active : out std_logic; --phys triggers are enabled/active
484 config_done : out std_logic;
485 LP1_pulse : out std_logic; --send start signal to light pulser 1
486 LP2_pulse : out std_logic; --send start signal to light pulser 2
487 --trigger and time marker output signals to FADs
488 trigger_signal : out std_logic;
489 TIM_signal : out std_logic
490 );
491 end component;
492
493 component Clock_cond_interface is
494 port(
495 clk : IN STD_LOGIC;
496 CLK_Clk_Cond : out STD_LOGIC;
497 LE_Clk_Cond : out STD_LOGIC;
498 DATA_Clk_Cond : out STD_LOGIC;
499 SYNC_Clk_Cond : out STD_LOGIC;
500 LD_Clk_Cond : in STD_LOGIC;
501 TIM_Sel : out STD_LOGIC;
502 cc_R0 : in std_logic_vector (31 downto 0) := (others => '0');
503 cc_R1 : in std_logic_vector (31 downto 0) := (others => '0');
504 cc_R8 : in std_logic_vector (31 downto 0) := (others => '0');
505 cc_R9 : in std_logic_vector (31 downto 0) := (others => '0');
506 cc_R11 : in std_logic_vector (31 downto 0) := (others => '0');
507 cc_R13 : in std_logic_vector (31 downto 0) := (others => '0');
508 cc_R14 : in std_logic_vector (31 downto 0) := (others => '0');
509 cc_R15 : in std_logic_vector (31 downto 0) := (others => '0');
510 start_config : in STD_LOGIC;
511 config_started : out STD_LOGIC;
512 config_done : out STD_LOGIC;
513 timemarker_select: in STD_LOGIC
514 );
515 end component;
516
517 component FTM_central_control
518 port(
519 clk : IN std_logic;
520 clk_ready : in std_logic;
521 clk_scaler : IN std_logic;
522 new_config : IN std_logic;
523 config_started : OUT std_logic := '0';
524 config_started_ack : IN std_logic;
525 config_start_eth : OUT std_logic := '0';
526 config_started_eth : IN std_logic;
527 config_ready_eth : IN std_logic;
528 config_start_ftu : OUT std_logic := '0';
529 config_started_ftu : IN std_logic;
530 config_ready_ftu : IN std_logic;
531 ping_ftu_start : IN std_logic;
532 ping_ftu_started : OUT std_logic := '0';
533 ping_ftu_ready : OUT std_logic := '0';
534 ping_ftu_start_ftu : OUT std_logic := '0';
535 ping_ftu_started_ftu : IN std_logic;
536 ping_ftu_ready_ftu : IN std_logic;
537 rates_ftu : OUT std_logic := '0';
538 rates_started_ftu : IN std_logic;
539 rates_ready_ftu : IN std_logic;
540 prescaling_FTU01 : IN std_logic_vector(7 downto 0);
541 dd_send : OUT std_logic := '0';
542 dd_send_ack : IN std_logic;
543 dd_send_ready : IN std_logic;
544 dd_block_ready_ftu : out std_logic := '0';
545 dd_block_start_ack_ftu : in std_logic;
546 dd_block_start_ftu : out std_logic := '0';
547 config_start_cc : out std_logic := '0';
548 config_started_cc : in std_logic;
549 config_ready_cc : in std_logic;
550 config_trigger : out std_logic;
551 config_trigger_done : in std_logic;
552 dna_start : out std_logic;
553 dna_ready : in std_logic;
554 crate_reset : IN std_logic;
555 crate_reset_ack : OUT std_logic;
556 crate_reset_param : IN std_logic_vector (15 DOWNTO 0);
557 start_run : IN std_logic;
558 start_run_ack : OUT std_logic;
559 stop_run : IN std_logic;
560 stop_run_ack : OUT std_logic;
561 current_cc_state : OUT std_logic_vector (15 DOWNTO 0);
562 start_run_param : IN std_logic_vector (15 DOWNTO 0);
563 start_run_num_events : IN std_logic_vector (31 DOWNTO 0);
564 trigger_start : out std_logic;
565 trigger_stop : out std_logic;
566 enable_ID_sending : out std_logic
567 );
568 end component;
569
570 component FTM_ftu_control
571 port(
572 clk_50MHz : in std_logic;
573 rx_en : out STD_LOGIC;
574 tx_en : out STD_LOGIC;
575 rx_d_0 : in STD_LOGIC;
576 tx_d_0 : out STD_LOGIC;
577 rx_d_1 : in STD_LOGIC;
578 tx_d_1 : out STD_LOGIC;
579 rx_d_2 : in STD_LOGIC;
580 tx_d_2 : out STD_LOGIC;
581 rx_d_3 : in STD_LOGIC;
582 tx_d_3 : out STD_LOGIC;
583 new_config : in std_logic;
584 ping_all : in std_logic;
585 read_rates : in std_logic;
586 read_rates_started : out std_logic := '0';
587 read_rates_done : out std_logic := '0';
588 new_config_started : out std_logic := '0';
589 new_config_done : out std_logic := '0';
590 ping_all_started : out std_logic := '0';
591 ping_all_done : out std_logic := '0';
592 ftu_active_cr0 : in std_logic_vector (15 downto 0);
593 ftu_active_cr1 : in std_logic_vector (15 downto 0);
594 ftu_active_cr2 : in std_logic_vector (15 downto 0);
595 ftu_active_cr3 : in std_logic_vector (15 downto 0);
596 ftu_error_calls : out std_logic_vector (15 DOWNTO 0) := (others => '0');
597 ftu_error_data : out std_logic_vector ((FTU_RS485_BLOCK_WIDTH - 1) downto 0) := (others => '0');
598 ftu_error_send : out std_logic := '0';
599 ftu_error_send_ack : in std_logic;
600 ftu_error_send_ready : in std_logic;
601 static_RAM_busy : in std_logic;
602 static_RAM_started : in std_logic;
603 static_RAM_ready : in std_logic;
604 data_static_RAM : in std_logic_vector(15 downto 0) := (others => '0');
605 read_static_RAM : out std_logic := '0';
606 addr_static_RAM : out std_logic_vector(11 downto 0) := (others => '0');
607 dynamic_RAM_busy : in std_logic;
608 dynamic_RAM_started : in std_logic;
609 dynamic_RAM_ready : in std_logic;
610 data_dynamic_RAM : out std_logic_vector(15 downto 0) := (others => '0');
611 write_dynamic_RAM : out std_logic := '0';
612 addr_dynamic_RAM : out std_logic_vector(11 downto 0) := (others => '0');
613 FTUlist_RAM_busy : in std_logic;
614 FTUlist_RAM_started : in std_logic;
615 FTUlist_RAM_ready : in std_logic;
616 data_FTUlist_RAM : out std_logic_vector(15 downto 0) := (others => '0');
617 write_FTUlist_RAM : out std_logic := '0';
618 addr_FTUlist_RAM : out std_logic_vector(11 downto 0) := (others => '0')
619 );
620 end component;
621
622 component FTM_fad_broadcast
623 port(
624 clk_50MHz : in std_logic;
625 rx_en : out STD_LOGIC;
626 tx_en : out STD_LOGIC;
627 rx_d_0 : in STD_LOGIC;
628 tx_d_0 : out STD_LOGIC;
629 rx_d_1 : in STD_LOGIC;
630 tx_d_1 : out STD_LOGIC;
631 rx_d_2 : in STD_LOGIC;
632 tx_d_2 : out STD_LOGIC;
633 rx_d_3 : in STD_LOGIC;
634 tx_d_3 : out STD_LOGIC;
635 enable_ID_sending : in std_logic;
636 TIM_source : in std_logic;
637 LP_settings : in std_logic_vector(3 downto 0);
638 trigger_ID_ready : in std_logic;
639 trigger_ID : in std_logic_vector(FAD_RS485_BLOCK_WIDTH - 1 downto 0);
640 trigger_ID_read : out std_logic
641 );
642 end component;
643
644 component ethernet_modul
645 port(
646 wiz_reset : OUT std_logic := '1';
647 wiz_addr : OUT std_logic_vector (9 DOWNTO 0);
648 wiz_data : INOUT std_logic_vector (15 DOWNTO 0);
649 wiz_cs : OUT std_logic := '1';
650 wiz_wr : OUT std_logic := '1';
651 wiz_rd : OUT std_logic := '1';
652 wiz_int : IN std_logic ;
653 clk : IN std_logic ;
654 sd_ready : OUT std_logic ;
655 sd_busy : OUT std_logic ;
656 led : OUT std_logic_vector (7 DOWNTO 0);
657 sd_read_ftu : IN std_logic ;
658 sd_started_ftu : OUT std_logic := '0';
659 cc_R0 : OUT std_logic_vector (31 DOWNTO 0);
660 cc_R1 : OUT std_logic_vector (31 DOWNTO 0);
661 cc_R11 : OUT std_logic_vector (31 DOWNTO 0);
662 cc_R13 : OUT std_logic_vector (31 DOWNTO 0);
663 cc_R14 : OUT std_logic_vector (31 DOWNTO 0);
664 cc_R15 : OUT std_logic_vector (31 DOWNTO 0);
665 cc_R8 : OUT std_logic_vector (31 DOWNTO 0);
666 cc_R9 : OUT std_logic_vector (31 DOWNTO 0);
667 coin_n_c : OUT std_logic_vector (15 DOWNTO 0);
668 coin_n_p : OUT std_logic_vector (15 DOWNTO 0);
669 dead_time : OUT std_logic_vector (15 DOWNTO 0);
670 general_settings : OUT std_logic_vector (15 DOWNTO 0);
671 lp1_amplitude : OUT std_logic_vector (15 DOWNTO 0);
672 lp1_delay : OUT std_logic_vector (15 DOWNTO 0);
673 lp2_amplitude : OUT std_logic_vector (15 DOWNTO 0);
674 lp2_delay : OUT std_logic_vector (15 DOWNTO 0);
675 lp_pt_freq : OUT std_logic_vector (15 DOWNTO 0);
676 lp_pt_ratio : OUT std_logic_vector (15 DOWNTO 0);
677 timemarker_delay : OUT std_logic_vector (15 DOWNTO 0);
678 trigger_delay : OUT std_logic_vector (15 DOWNTO 0);
679 sd_addr_ftu : IN std_logic_vector (11 DOWNTO 0);
680 sd_data_out_ftu : OUT std_logic_vector (15 DOWNTO 0) := (others => '0');
681 ftu_active_cr0 : OUT std_logic_vector (15 DOWNTO 0);
682 ftu_active_cr1 : OUT std_logic_vector (15 DOWNTO 0);
683 ftu_active_cr2 : OUT std_logic_vector (15 DOWNTO 0);
684 ftu_active_cr3 : OUT std_logic_vector (15 DOWNTO 0);
685 new_config : OUT std_logic := '0';
686 config_started : IN std_logic ;
687 config_start_eth : IN std_logic ;
688 config_started_eth : OUT std_logic := '0';
689 config_ready_eth : OUT std_logic := '0';
690 config_started_ack : OUT std_logic := '0';
691 fl_busy : OUT std_logic ;
692 fl_ready : OUT std_logic ;
693 fl_write_ftu : IN std_logic ;
694 fl_started_ftu : OUT std_logic := '0';
695 fl_addr_ftu : IN std_logic_vector (11 DOWNTO 0);
696 fl_data_in_ftu : IN std_logic_vector (15 DOWNTO 0) := (others => '0');
697 ping_ftu_start : OUT std_logic := '0';
698 ping_ftu_started : IN std_logic ;
699 ping_ftu_ready : IN std_logic ;
700 dd_write_ftu : IN std_logic ;
701 dd_started_ftu : OUT std_logic := '0';
702 dd_data_in_ftu : IN std_logic_vector (15 DOWNTO 0);
703 dd_addr_ftu : IN std_logic_vector (11 DOWNTO 0);
704 dd_busy : OUT std_logic ;
705 dd_ready : OUT std_logic ;
706 coin_win_c : OUT std_logic_vector (15 DOWNTO 0) := (others => '0');
707 coin_win_p : OUT std_logic_vector (15 DOWNTO 0) := (others => '0');
708 --new stuff
709 dd_block_ready_ftu : IN std_logic;
710 dd_block_start_ack_ftu : OUT std_logic := '0';
711 dd_block_start_ftu : IN std_logic;
712 dd_send : IN std_logic;
713 dd_send_ack : OUT std_logic := '1';
714 dd_send_ready : OUT std_logic := '1';
715 --very new stuff
716 ftu_error_calls : IN std_logic_vector (15 DOWNTO 0);
717 ftu_error_data : IN std_logic_vector (223 DOWNTO 0); -- (28 * 8) - 1
718 ftu_error_send : IN std_logic;
719 ftu_error_send_ack : OUT std_logic := '1';
720 ftu_error_send_ready : OUT std_logic := '1';
721 prescaling_FTU01 : OUT std_logic_vector (15 DOWNTO 0) := (others => '0');
722 trigger_counter : IN std_logic_vector (31 DOWNTO 0) := (others => '0');
723 trigger_counter_read : OUT std_logic := '0';
724 trigger_counter_valid : IN std_logic;
725 --newest stuff
726 board_id : IN std_logic_vector (63 DOWNTO 0);
727 get_ts_counter : OUT std_logic := '0';
728 get_ts_counter_ready : IN std_logic;
729 get_ts_counter_started : IN std_logic;
730 timestamp_counter : IN std_logic_vector (47 DOWNTO 0);
731 get_ot_counter : OUT std_logic := '0';
732 get_ot_counter_ready : IN std_logic;
733 get_ot_counter_started : IN std_logic;
734 on_time_counter : IN std_logic_vector (47 DOWNTO 0);
735 temp_sensor_array : IN sensor_array_type;
736 temp_sensor_ready : IN std_logic;
737 crate_reset : OUT std_logic := '0';
738 crate_reset_ack : IN std_logic;
739 crate_reset_param : OUT std_logic_vector (15 DOWNTO 0) := (others => '0');
740 start_run : OUT std_logic := '0';
741 start_run_ack : IN std_logic;
742 stop_run : OUT std_logic := '0';
743 stop_run_ack : IN std_logic;
744 current_cc_state : IN std_logic_vector (15 DOWNTO 0);
745 start_run_param : OUT std_logic_vector (15 DOWNTO 0) := (others => '0');
746 start_run_num_events : OUT std_logic_vector (31 DOWNTO 0) := (others => '0')
747 );
748 end component;
749
750 component counter_dummy IS
751 PORT(
752 clk : IN std_logic;
753 get_counter : IN std_logic;
754 get_counter_started : OUT std_logic := '0';
755 get_counter_ready : OUT std_logic := '0';
756 counter : OUT std_logic_vector (47 DOWNTO 0) := (others => '0')
757 );
758 end component;
759
760begin
761
762-- -- IBUFG: Single-ended global clock input buffer
763-- -- Spartan-3A
764-- -- Xilinx HDL Language Template, version 11.4
765
766-- IBUFG_inst : IBUFG
767-- generic map (
768-- IBUF_DELAY_VALUE => "0", -- Specify the amount of added input delay for buffer,
769-- -- "0"-"16"
770-- IOSTANDARD => "DEFAULT")
771-- port map (
772-- O => clk_buf_sig, -- Clock buffer output
773-- I => clk -- Clock buffer input (connect directly to top-level port)
774-- );
775
776-- Inst_FTM_clk_gen : FTM_clk_gen
777-- port map(
778-- clk => clk_buf_sig,
779-- rst => reset_sig,
780-- clk_1 => clk_1M_sig,
781-- clk_50 => clk_50M_sig,
782-- clk_250 => clk_250M_sig,
783-- clk_250_ps => clk_250M_ps_sig,
784-- ready => clk_ready_sig
785-- );
786
787 Inst_FTM_clk_gen_2 : FTM_clk_gen_2
788 port map(
789 clk => clk,
790 rst => reset_sig,
791 clk_1 => clk_1M_sig,
792 clk_50 => clk_50M_sig,
793 clk_250 => clk_250M_sig,
794 clk_250_ps => clk_250M_ps_sig,
795 ready => clk_ready_sig
796 );
797
798 Inst_FTM_dna_gen : FTM_dna_gen
799 port map(
800 clk => clk_50M_sig,
801 start => dna_start_sig,
802 dna => dna_sig,
803 ready => dna_ready_sig
804 );
805
806 --differential output buffer for trigger signal
807 OBUFDS_LVDS_33_TRG : OBUFDS_LVDS_33
808 port map(
809 O => TRG_p,
810 OB => TRG_n,
811 I => trigger_signal_sig
812 );
813
814 --differential output buffer for trigger signal
815 OBUFDS_LVDS_33_TIM : OBUFDS_LVDS_33
816 port map(
817 O => TIM_Run_p,
818 OB => TIM_Run_n,
819 I => TIM_signal_sig
820 );
821
822 Inst_trigger_manager : trigger_manager
823 port map(
824 --clocks
825 clk_50MHz => clk_50M_sig,
826 clk_250MHz => clk_250M_sig,
827 clk_250MHz_180 => clk_250M_ps_sig,
828 --trigger primitives from FTUs
829 trig_prim_0 => Trig_Prim_A, --crate 0
830 trig_prim_1 => Trig_Prim_B, --crate 1
831 trig_prim_2 => Trig_Prim_C, --crate 2
832 trig_prim_3 => Trig_Prim_D, --crate 3
833 --external signals
834 ext_trig_1 => ext_Trig(1),
835 ext_trig_2 => ext_Trig(2),
836 ext_veto => Veto,
837 FAD_busy_0 => Busy0, --crate 0
838 FAD_busy_1 => Busy1, --crate 1
839 FAD_busy_2 => Busy2, --crate 2
840 FAD_busy_3 => Busy3, --crate 3
841 --control signals from e.g. main control
842 start_run => trigger_start_sig, --enable trigger output
843 stop_run => trigger_stop_sig, --disable trigger output
844 new_config => config_trigger_sig,
845 --settings register (see FTM Firmware Specifications)
846 general_settings => general_settings_sig,
847 LP_and_PED_freq => lp_pt_freq_sig,
848 LP1_LP2_PED_ratio => lp_pt_ratio_sig,
849 maj_coinc_n_phys => coin_n_p_sig,
850 maj_coinc_n_calib => coin_n_c_sig,
851 trigger_delay => trigger_delay_sig,
852 TIM_delay => timemarker_delay_sig,
853 dead_time => dead_time_sig,
854 coinc_window_phys => coin_win_p_sig,
855 coinc_window_calib => coin_win_c_sig,
856 active_FTU_list_0 => ftu_active_cr0_sig,
857 active_FTU_list_1 => ftu_active_cr1_sig,
858 active_FTU_list_2 => ftu_active_cr2_sig,
859 active_FTU_list_3 => ftu_active_cr3_sig,
860 --control signals or information for other entities
861 trigger_ID_read => trigger_ID_read_sig,
862 trig_cnt_copy_read => trigger_counter_read_sig,
863 trigger_ID_ready => trigger_ID_ready_sig,
864 trigger_ID => trigger_ID_sig,
865 trig_cnt_copy => trigger_counter_sig, --counter reading
866 trig_cnt_copy_valid => trigger_counter_valid_sig, --trigger counter reading is valid
867 trigger_active => open, --phys triggers are enabled/active
868 config_done => config_trigger_done_sig,
869 LP1_pulse => open, --send start signal to light pulser 1
870 LP2_pulse => open, --send start signal to light pulser 2
871 --trigger and time marker output signals to FADs
872 trigger_signal => trigger_signal_sig,
873 TIM_signal => TIM_signal_sig
874 );
875
876 Inst_Clock_cond_interface : Clock_cond_interface
877 port map(
878 clk => clk_50M_sig,
879 CLK_Clk_Cond => CLK_Clk_Cond,
880 LE_Clk_Cond => LE_Clk_Cond,
881 DATA_Clk_Cond => DATA_Clk_Cond,
882 SYNC_Clk_Cond => SYNC_Clk_Cond,
883 LD_Clk_Cond => LD_Clk_Cond,
884 TIM_Sel => TIM_Sel,
885 cc_R0 => cc_R0_sig,
886 cc_R1 => cc_R1_sig,
887 cc_R8 => cc_R8_sig,
888 cc_R9 => cc_R9_sig,
889 cc_R11 => cc_R11_sig,
890 cc_R13 => cc_R13_sig,
891 cc_R14 => cc_R14_sig,
892 cc_R15 => cc_R15_sig,
893 start_config => config_start_cc_sig,
894 config_started => config_started_cc_sig,
895 config_done => config_ready_cc_sig,
896 timemarker_select => general_settings_sig(0)
897 );
898
899 Inst_FTM_central_control : FTM_central_control
900 port map(
901 clk => clk_50M_sig,
902 clk_ready => clk_ready_sig,
903 clk_scaler => clk_1M_sig,
904 new_config => new_config_sig,
905 config_started => config_started_sig,
906 config_started_ack => config_started_ack_sig,
907 config_start_eth => config_start_eth_sig,
908 config_started_eth => config_started_eth_sig,
909 config_ready_eth => config_ready_eth_sig,
910 config_start_ftu => config_start_ftu_sig,
911 config_started_ftu => config_started_ftu_sig,
912 config_ready_ftu => config_ready_ftu_sig,
913 ping_ftu_start => ping_ftu_start_sig,
914 ping_ftu_started => ping_ftu_started_sig,
915 ping_ftu_ready => ping_ftu_ready_sig,
916 ping_ftu_start_ftu => ping_ftu_start_ftu_sig,
917 ping_ftu_started_ftu => ping_ftu_started1_sig,
918 ping_ftu_ready_ftu => ping_ftu_ready1_sig,
919 rates_ftu => rates_ftu_start_sig,
920 rates_started_ftu => rates_ftu_started_sig,
921 rates_ready_ftu => rates_ftu_ready_sig,
922 prescaling_FTU01 => prescaling_FTU01_sig(7 downto 0),
923 dd_send => dd_send_sig,
924 dd_send_ack => dd_send_ack_sig,
925 dd_send_ready => dd_send_ready_sig,
926 dd_block_ready_ftu => dd_block_ready_ftu_sig,
927 dd_block_start_ack_ftu => dd_block_start_ack_ftu_sig,
928 dd_block_start_ftu => dd_block_start_ftu_sig,
929 config_start_cc => config_start_cc_sig,
930 config_started_cc => config_started_cc_sig,
931 config_ready_cc => config_ready_cc_sig,
932 config_trigger => config_trigger_sig,
933 config_trigger_done => config_trigger_done_sig,
934 dna_start => dna_start_sig,
935 dna_ready => dna_ready_sig,
936 crate_reset => crate_reset_sig,
937 crate_reset_ack => crate_reset_ack_sig,
938 crate_reset_param => crate_reset_param_sig,
939 start_run => start_run_sig,
940 start_run_ack => start_run_ack_sig,
941 stop_run => stop_run_sig,
942 stop_run_ack => stop_run_ack_sig,
943 current_cc_state => current_cc_state_sig,
944 start_run_param => start_run_param_sig,
945 start_run_num_events => start_run_num_events_sig,
946 trigger_start => trigger_start_sig,
947 trigger_stop => trigger_stop_sig,
948 enable_ID_sending => enable_ID_sending_sig
949 );
950
951 Inst_FTM_ftu_control : FTM_ftu_control
952 port map(
953 clk_50MHz => clk_50M_sig,
954 rx_en => Bus1_Rx_En,
955 tx_en => Bus1_Tx_En,
956 rx_d_0 => Bus1_RxD_0,
957 tx_d_0 => Bus1_TxD_0,
958 rx_d_1 => Bus1_RxD_1,
959 tx_d_1 => Bus1_TxD_1,
960 rx_d_2 => Bus1_RxD_2,
961 tx_d_2 => Bus1_TxD_2,
962 rx_d_3 => Bus1_RxD_3,
963 tx_d_3 => Bus1_TxD_3,
964 new_config => config_start_ftu_sig,
965 ping_all => ping_ftu_start_ftu_sig,
966 read_rates => rates_ftu_start_sig,
967 read_rates_started => rates_ftu_started_sig,
968 read_rates_done => rates_ftu_ready_sig,
969 new_config_started => config_started_ftu_sig,
970 new_config_done => config_ready_ftu_sig,
971 ping_all_started => ping_ftu_started1_sig,
972 ping_all_done => ping_ftu_ready1_sig,
973 ftu_active_cr0 => ftu_active_cr0_sig,
974 ftu_active_cr1 => ftu_active_cr1_sig,
975 ftu_active_cr2 => ftu_active_cr2_sig,
976 ftu_active_cr3 => ftu_active_cr3_sig,
977 ftu_error_calls => ftu_error_calls_sig,
978 ftu_error_data => ftu_error_data_sig,
979 ftu_error_send => ftu_error_send_sig,
980 ftu_error_send_ack => ftu_error_send_ack_sig,
981 ftu_error_send_ready=> ftu_error_send_ready_sig,
982 static_RAM_busy => sd_busy_sig,
983 static_RAM_started => sd_started_ftu_sig,
984 static_RAM_ready => sd_ready_sig,
985 data_static_RAM => sd_data_out_ftu_sig,
986 read_static_RAM => sd_read_ftu_sig,
987 addr_static_RAM => sd_addr_ftu_sig,
988 dynamic_RAM_busy => dd_busy_sig,
989 dynamic_RAM_started => dd_started_ftu_sig,
990 dynamic_RAM_ready => dd_ready_sig,
991 data_dynamic_RAM => dd_data_sig,
992 write_dynamic_RAM => dd_write_sig,
993 addr_dynamic_RAM => dd_addr_sig,
994 FTUlist_RAM_busy => fl_busy_sig,
995 FTUlist_RAM_started => fl_started_ftu_sig,
996 FTUlist_RAM_ready => fl_ready_sig,
997 data_FTUlist_RAM => fl_data_sig,
998 write_FTUlist_RAM => fl_write_sig,
999 addr_FTUlist_RAM => fl_addr_sig
1000 );
1001
1002 Inst_FTM_fad_broadcast : FTM_fad_broadcast
1003 port map(
1004 clk_50MHz => clk_50M_sig,
1005 rx_en => Bus2_Rx_En,
1006 tx_en => Bus2_Tx_En,
1007 rx_d_0 => Bus2_RxD_0,
1008 tx_d_0 => Bus2_TxD_0,
1009 rx_d_1 => Bus2_RxD_1,
1010 tx_d_1 => Bus2_TxD_1,
1011 rx_d_2 => Bus2_RxD_2,
1012 tx_d_2 => Bus2_TxD_2,
1013 rx_d_3 => Bus2_RxD_3,
1014 tx_d_3 => Bus2_TxD_3,
1015 --enable_ID_sending => trigger_start_sig,
1016 enable_ID_sending => enable_ID_sending_sig,
1017 --enable_ID_sending => '1',
1018 TIM_source => general_settings_sig(0),
1019 LP_settings => "0000",
1020 trigger_ID_ready => trigger_ID_ready_sig,
1021 trigger_ID => trigger_ID_sig,
1022 trigger_ID_read => trigger_ID_read_sig
1023 );
1024
1025 Inst_ethernet_modul : ethernet_modul
1026 port map(
1027 wiz_reset => W_RES,
1028 wiz_addr => W_A,
1029 wiz_data => W_D,
1030 wiz_cs => W_CS,
1031 wiz_wr => W_WR,
1032 wiz_rd => W_RD,
1033 wiz_int => W_INT,
1034 clk => clk_50M_sig,
1035 sd_ready => sd_ready_sig,
1036 sd_busy => sd_busy_sig,
1037 led => led_sig,
1038 sd_read_ftu => sd_read_ftu_sig,
1039 sd_started_ftu => sd_started_ftu_sig,
1040 cc_R0 => cc_R0_sig,
1041 cc_R1 => cc_R1_sig,
1042 cc_R11 => cc_R11_sig,
1043 cc_R13 => cc_R13_sig,
1044 cc_R14 => cc_R14_sig,
1045 cc_R15 => cc_R15_sig,
1046 cc_R8 => cc_R8_sig,
1047 cc_R9 => cc_R9_sig,
1048 coin_n_c => coin_n_c_sig,
1049 coin_n_p => coin_n_p_sig,
1050 dead_time => dead_time_sig,
1051 general_settings => general_settings_sig,
1052 lp1_amplitude => lp1_amplitude_sig,
1053 lp1_delay => lp1_delay_sig,
1054 lp2_amplitude => lp2_amplitude_sig,
1055 lp2_delay => lp2_delay_sig,
1056 lp_pt_freq => lp_pt_freq_sig,
1057 lp_pt_ratio => lp_pt_ratio_sig,
1058 timemarker_delay => timemarker_delay_sig,
1059 trigger_delay => trigger_delay_sig,
1060 sd_addr_ftu => sd_addr_ftu_sig,
1061 sd_data_out_ftu => sd_data_out_ftu_sig,
1062 ftu_active_cr0 => ftu_active_cr0_sig,
1063 ftu_active_cr1 => ftu_active_cr1_sig,
1064 ftu_active_cr2 => ftu_active_cr2_sig,
1065 ftu_active_cr3 => ftu_active_cr3_sig,
1066 new_config => new_config_sig,
1067 config_started => config_started_sig,
1068 config_start_eth => config_start_eth_sig,
1069 config_started_eth => config_started_eth_sig,
1070 config_ready_eth => config_ready_eth_sig,
1071 config_started_ack => config_started_ack_sig,
1072 fl_busy => fl_busy_sig,
1073 fl_ready => fl_ready_sig,
1074 fl_write_ftu => fl_write_sig,
1075 fl_started_ftu => fl_started_ftu_sig,
1076 fl_addr_ftu => fl_addr_sig,
1077 fl_data_in_ftu => fl_data_sig,
1078 ping_ftu_start => ping_ftu_start_sig,
1079 ping_ftu_started => ping_ftu_started_sig,
1080 ping_ftu_ready => ping_ftu_ready_sig,
1081 dd_write_ftu => dd_write_sig,
1082 dd_started_ftu => dd_started_ftu_sig,
1083 dd_data_in_ftu => dd_data_sig,
1084 dd_addr_ftu => dd_addr_sig,
1085 dd_busy => dd_busy_sig,
1086 dd_ready => dd_ready_sig,
1087 coin_win_c => coin_win_c_sig,
1088 coin_win_p => coin_win_p_sig,
1089 --new stuff
1090 dd_block_ready_ftu => dd_block_ready_ftu_sig,
1091 dd_block_start_ack_ftu => dd_block_start_ack_ftu_sig,
1092 dd_block_start_ftu => dd_block_start_ftu_sig,
1093 dd_send => dd_send_sig,
1094 dd_send_ack => dd_send_ack_sig,
1095 dd_send_ready => dd_send_ready_sig,
1096 --very new stuff
1097 ftu_error_calls => ftu_error_calls_sig,
1098 ftu_error_data => ftu_error_data_sig,
1099 ftu_error_send => ftu_error_send_sig,
1100 ftu_error_send_ack => ftu_error_send_ack_sig,
1101 ftu_error_send_ready => ftu_error_send_ready_sig,
1102 prescaling_FTU01 => prescaling_FTU01_sig,
1103 trigger_counter => trigger_counter_sig,
1104 trigger_counter_read => trigger_counter_read_sig,
1105 trigger_counter_valid => trigger_counter_valid_sig,
1106 --newest stuff
1107 board_id => dna_sig,
1108 get_ts_counter => get_ts_counter_sig,
1109 get_ts_counter_ready => get_ts_counter_ready_sig,
1110 get_ts_counter_started => get_ts_counter_started_sig,
1111 timestamp_counter => timestamp_counter_sig,
1112 get_ot_counter => get_ot_counter_sig,
1113 get_ot_counter_ready => get_ot_counter_ready_sig,
1114 get_ot_counter_started => get_ot_counter_started_sig,
1115 on_time_counter => on_time_counter_sig,
1116 temp_sensor_array => (35, 45, 55, 65),
1117 temp_sensor_ready => '1',
1118 crate_reset => crate_reset_sig,
1119 crate_reset_ack => crate_reset_ack_sig,
1120 crate_reset_param => crate_reset_param_sig,
1121 start_run => start_run_sig,
1122 start_run_ack => start_run_ack_sig,
1123 stop_run => stop_run_sig,
1124 stop_run_ack => stop_run_ack_sig,
1125 current_cc_state => current_cc_state_sig,
1126 start_run_param => start_run_param_sig,
1127 start_run_num_events => start_run_num_events_sig
1128 );
1129
1130 Inst_counter_dummy_ts : counter_dummy
1131 port map(
1132 clk => clk_50M_sig,
1133 get_counter => get_ts_counter_sig,
1134 get_counter_started => get_ts_counter_started_sig,
1135 get_counter_ready => get_ts_counter_ready_sig,
1136 counter => timestamp_counter_sig
1137 );
1138
1139 Inst_counter_dummy_ot : counter_dummy
1140 port map(
1141 clk => clk_50M_sig,
1142 get_counter => get_ot_counter_sig,
1143 get_counter_started => get_ot_counter_started_sig,
1144 get_counter_ready => get_ot_counter_ready_sig,
1145 counter => on_time_counter_sig
1146 );
1147
1148 LED_red <= led_sig(3 downto 0);
1149 LED_ye <= led_sig(5 downto 4);
1150 LED_gn <= led_sig(7 downto 6);
1151
1152end Behavioral;
1153
1154
Note: See TracBrowser for help on using the repository browser.