129 use ieee.std_logic_1164.
all;
130 use ieee.numeric_std.
all;
133 use ipbus_lib.ipbus.
all;
136 use UNISIM.vcomponents.
all;
139 use UNIMACRO.vcomponents.
all;
141 library TOB_rdout_lib;
286 signal RST_i : STD_LOGIC;
287 signal TOB_FIFO_sw_rst_i : STD_LOGIC ;
288 signal clk_in_280M_i : STD_LOGIC;
289 signal rdout_T_TOB_209b_i : STD_LOGIC_VECTOR (208 downto 0);
291 signal T_TOB_full_i : STD_LOGIC;
292 signal T_TOB_empty_i : STD_LOGIC;
293 signal T_TOB_valid_i : STD_LOGIC;
294 signal T_TOB_prog_full_i : STD_LOGIC;
295 signal T_TOB_FIFO_data_count_i : STD_LOGIC_VECTOR (8 downto 0);
296 signal XTOB_eg_FIFO_rd_data_count_i : STD_LOGIC_VECTOR (8 downto 0);
297 signal tob_data_mgt_fsm_i, tob_data_mux_fsm_i, tob_data_dpram_fsm_i : STD_LOGIC_VECTOR (7 downto 0);
298 signal xtob_eg_data_dpram_fsm_i, xtob_tau_data_dpram_fsm_i : STD_LOGIC_VECTOR (7 downto 0);
300 signal DPR_XTOBs_eg_in_i : array_8_of_252b;
301 signal DPR_XTOBs_eg_out_i : array_8_of_252b;
303 signal DPR_XTOBs_tau_in_i : array_8_of_252b;
304 signal DPR_XTOBs_tau_out_i : array_8_of_252b;
308 signal L1A_rd_en_i : std_logic ;
310 signal pre_ld_wr_addr_TOB_i : STD_LOGIC_VECTOR (8 downto 0);
311 signal DPR_locations_to_rd_i : STD_LOGIC_VECTOR (2 downto 0);
313 signal FIFO_rd_en_i : std_logic := '0' ;
314 signal rdout_XTOB_eg_i : array_8_of_252b;
315 signal rdout_XTOB_tau_i : array_8_of_252b;
316 signal valid_XTOBs_eg_i : STD_LOGIC;
317 signal valid_XTOBs_tau_i : STD_LOGIC;
318 signal frame_cntr_en_i : std_logic;
319 signal frame_cntr_en_ii : std_logic;
320 signal pre_ld_wr_addr_XTOB_eg_i : STD_LOGIC_VECTOR (8 downto 0);
321 signal pre_ld_wr_addr_XTOB_tau_i : STD_LOGIC_VECTOR (8 downto 0);
323 signal XTOB_eg_full_i : std_logic;
324 signal XTOB_eg_empty_i : std_logic;
325 signal XTOB_eg_prog_full_i : std_logic;
327 signal XTOB_tau_full_i : std_logic;
328 signal XTOB_tau_empty_i : std_logic;
329 signal XTOB_tau_prog_full_i : std_logic;
331 signal TOB_empty_flag_i : std_logic;
332 signal TOB_pfull_flag_i : std_logic;
333 signal TOB_out_valid_i : STD_LOGIC;
334 signal TOB_out_is_char_i : STD_LOGIC;
335 signal TOBs_out_i : STD_LOGIC_VECTOR (31 downto 0);
336 signal FIFO_TOBs_in_i : STD_LOGIC_VECTOR (32 downto 0);
337 signal Link_output_FIFO_TOBs_out_i : STD_LOGIC_VECTOR (32 downto 0);
338 signal TOB_out_to_MGT_i : STD_LOGIC_VECTOR (31 downto 0);
339 signal TOB_out_to_MGT_1dly : STD_LOGIC_VECTOR (31 downto 0);
340 signal TOB_data_out_MGT_i : STD_LOGIC_VECTOR (31 downto 0);
341 signal Link_output_FIFO_rd_en_i, TOB_out_to_MGT_is_char_i,TOB_out_to_MGT_is_char_1dly : STD_LOGIC;
342 signal Link_output_FIFO_TOB_valid_i : STD_LOGIC;
343 signal T_TOB_out_valid_i : STD_LOGIC;
344 signal T_TOB_out_valid_1dly : STD_LOGIC;
345 signal TOB_out_char_MGT_i : STD_LOGIC;
347 signal Link_output_FIFO_full : std_logic;
348 signal Link_output_FIFO_empty : std_logic;
349 signal Link_output_FIFO_prog_full : std_logic;
350 signal Link_output_FIFO_prog_empty : std_logic;
352 signal TOB_data_FIFO_flags_i : STD_LOGIC_VECTOR (31 downto 0);
354 signal reg1, reg2 : std_logic := '0' ;
355 signal frame_cntr_dec_en_i : std_logic;
356 signal frame_counter_dec_en_i : std_logic := '0' ;
357 signal frame_count_i : STD_LOGIC_VECTOR (11 downto 0);
359 signal TOB_safe_mode_i : std_logic;
360 signal tob_busy_assert_i : std_logic;
362 signal SPY_TOB_mem_wr_addr_i : STD_LOGIC_VECTOR (10 downto 0) ;
363 signal SPY_TOB_mem_wr_addr_en_i : STD_LOGIC ;
364 signal SPY_FIFO_TOB_in_i : STD_LOGIC_VECTOR (35 downto 0) ;
365 signal SPY_TOB_mem_rd_data_i : STD_LOGIC_VECTOR (35 downto 0) ;
366 signal enable_tob_spy_mem_wr : std_logic ;
367 signal tst_fsm_cntr_i, q1_int : STD_LOGIC_VECTOR (31 downto 0) ;
369 signal BCN_FIFO_rd_en_i : std_logic ;
370 signal BCN_FIFO_full_i : std_logic ;
371 signal BCN_FIFO_empty_i : std_logic ;
372 signal BCN_FIFO_valid_i : std_logic ;
373 signal BCN_FIFO_prog_full_i : std_logic ;
374 signal BCN_FIFO_Data_in_i : STD_LOGIC_VECTOR(46 downto 0) ;
375 signal BCN_FIFO_Data_in_1dly : STD_LOGIC_VECTOR(46 downto 0) ;
376 signal BCN_FIFO_Data_out_i : STD_LOGIC_VECTOR(46 downto 0) ;
378 signal FIFO_BCN_in_i : STD_LOGIC_VECTOR(11 downto 0) ;
379 signal FIFO_L1A_ID_i : STD_LOGIC_VECTOR(23 downto 0) ;
380 signal FIFO_L1A_ID_EXT_i : STD_LOGIC_VECTOR(7 downto 0) ;
381 signal LO_FIFO_rd_data_count_i : STD_LOGIC_VECTOR(12 downto 0) ;
382 signal LO_FIFO_wr_data_count_i : STD_LOGIC_VECTOR(12 downto 0) ;
383 signal busy_tob_i : std_logic;
384 signal L1A_in_1dly, L1A_in_2dly, L1A_in_3dly : std_logic;
385 signal read_on_err_i : std_logic;
386 signal sync_280m_i : std_logic;
387 signal SPY_mem_wr_addr_tc_i : std_logic;
392 attribute TIG : string ;
393 attribute TIG of L1A_in_1dly : signal is "true" ;
394 attribute TIG of TOB_FIFO_sw_rst_i : signal is "true" ;
396 attribute keep : string ;
397 attribute max_fanout : integer;
398 attribute keep of TOB_FIFO_sw_rst_i : signal is "true" ;
399 attribute max_fanout of TOB_FIFO_sw_rst_i : signal is 40;
400 attribute keep of FIFO_rd_en_i : signal is "true" ;
401 attribute max_fanout of FIFO_rd_en_i : signal is 40;
402 attribute keep of BCN_FIFO_empty_i : signal is "true" ;
403 attribute max_fanout of BCN_FIFO_empty_i : signal is 25;
404 attribute keep of BCN_FIFO_prog_full_i : signal is "true" ;
405 attribute max_fanout of BCN_FIFO_prog_full_i : signal is 25;
406 attribute keep of BCN_FIFO_full_i : signal is "true" ;
407 attribute max_fanout of BCN_FIFO_full_i : signal is 25;
429 TOB_data_FIFO_flags_i(0) <= T_TOB_empty_i ;
430 TOB_data_FIFO_flags_i(1) <= T_TOB_prog_full_i ;
431 TOB_data_FIFO_flags_i(2) <= T_TOB_full_i ;
433 TOB_data_FIFO_flags_i(3) <= XTOB_eg_empty_i ;
434 TOB_data_FIFO_flags_i(4) <= XTOB_eg_prog_full_i ;
435 TOB_data_FIFO_flags_i(5) <= XTOB_eg_full_i ;
437 TOB_data_FIFO_flags_i(6) <= XTOB_tau_empty_i ;
438 TOB_data_FIFO_flags_i(7) <= XTOB_tau_prog_full_i ;
439 TOB_data_FIFO_flags_i(8) <= XTOB_tau_full_i ;
441 TOB_data_FIFO_flags_i(9) <= Link_output_FIFO_empty ;
442 TOB_data_FIFO_flags_i(10) <= Link_output_FIFO_prog_full ;
443 TOB_data_FIFO_flags_i(11) <= Link_output_FIFO_full ;
445 TOB_data_FIFO_flags_i(12) <= BCN_FIFO_empty_i ;
446 TOB_data_FIFO_flags_i(13) <= BCN_FIFO_prog_full_i ;
447 TOB_data_FIFO_flags_i(14) <= BCN_FIFO_full_i ;
449 TOB_data_FIFO_flags_i(15) <= TOB_safe_mode_i ;
451 TOB_data_FIFO_flags_i(17) <= busy_tob_i ;
452 TOB_data_FIFO_flags_i(31 downto 18) <= (others => '0');
466 tob_fsm_monitor <= tob_data_mgt_fsm_i & tob_data_mux_fsm_i & xtob_tau_data_dpram_fsm_i & xtob_eg_data_dpram_fsm_i & tob_data_dpram_fsm_i ;
497 clk => clk_in_280M_i,
498 rst => TOB_FIFO_sw_rst_i,
501 fifo_data_count => XTOB_eg_FIFO_rd_data_count_i,
502 busy_flag => busy_tob_i
532 U0_FIFO_BCN_L1A : FIFO_47b_512 -- the flags from this FIFO
is used
534 rst => TOB_FIFO_sw_rst_i,
536 rd_clk => clk_in_280M_i,
537 din => BCN_FIFO_Data_in_i ,
539 rd_en => BCN_FIFO_rd_en_i,
540 dout => BCN_FIFO_Data_out_i,
541 valid => BCN_FIFO_valid_i ,
545 prog_full => BCN_FIFO_prog_full_i,
546 full => BCN_FIFO_full_i,
547 empty => BCN_FIFO_empty_i
550 FIFO_L1A_ID_i <= BCN_FIFO_Data_out_i(23 downto 0) ;
551 FIFO_L1A_ID_EXT_i <= BCN_FIFO_Data_out_i(31 downto 24) ;
552 FIFO_BCN_in_i <= BCN_FIFO_Data_out_i(43 downto 32) ;
553 read_on_err_i <= BCN_FIFO_Data_out_i(44);
596 rdout_T_TOB_209b_i <= (others => '0');
597 T_TOB_FIFO_data_count_i <= (others => '0') ;
599 T_TOB_empty_i <= '1';
600 T_TOB_valid_i <= '0';
601 T_TOB_prog_full_i <= '0';
602 tob_data_dpram_fsm_i <= (others => '0');
603 end generate U1_TOB_sorting_gen;
674 TOB_empty_flag_i <= XTOB_eg_empty_i OR XTOB_tau_empty_i OR BCN_FIFO_empty_i ;
675 TOB_pfull_flag_i <= XTOB_eg_prog_full_i OR XTOB_tau_prog_full_i ;
719 FIFO_TOBs_in_i <= TOB_out_is_char_i & TOBs_out_i;
732 U7_Link_output_FIFO : FIFO_33b_8192
734 wr_rst => TOB_FIFO_sw_rst_i,
735 wr_clk => clk_in_280M_i,
736 din => FIFO_TOBs_in_i,
737 wr_en => TOB_out_valid_i,
738 rd_rst => TOB_FIFO_sw_rst_i,
740 rd_en => Link_output_FIFO_rd_en_i,
741 dout => Link_output_FIFO_TOBs_out_i,
742 full => Link_output_FIFO_full,
743 empty => Link_output_FIFO_empty,
744 prog_full => Link_output_FIFO_prog_full,
745 valid => Link_output_FIFO_TOB_valid_i,
748 wr_data_count => LO_FIFO_wr_data_count_i ,
749 rd_data_count => LO_FIFO_rd_data_count_i
783 clk_src => clk_in_280M_i ,
784 rst_src => TOB_FIFO_sw_rst_i ,
785 pulse_src => frame_cntr_en_i,
787 pulse_dest => frame_cntr_en_ii
802 RST => TOB_FIFO_sw_rst_i ,
803 UP => frame_cntr_en_ii ,
804 DOWN => frame_cntr_dec_en_i ,
812 TOB_out_to_MGT_1dly <= TOB_out_to_MGT_i;
813 TOB_data_out_MGT_i <= TOB_out_to_MGT_1dly;
814 TOB_out_to_MGT_is_char_1dly <= TOB_out_to_MGT_is_char_i;
815 TOB_out_char_MGT_i <= TOB_out_to_MGT_is_char_1dly;
816 T_TOB_out_valid_1dly <= T_TOB_out_valid_i;
820 SPY_TOB_mem_wr_addr_en_i <= (T_TOB_out_valid_1dly AND enable_tob_spy_mem_wr);
828 U12_TOB_SPY_mem :
entity ipbus_lib.ipbus_dpram
834 rst => RST_spy_mem_wr_addr
OR RST_i ,
838 we => SPY_TOB_mem_wr_addr_en_i ,
839 d => TOB_out_to_MGT_1dly ,
841 addr => SPY_TOB_mem_wr_addr_i
855 CE => SPY_TOB_mem_wr_addr_en_i ,
857 RST => RST_spy_mem_wr_addr
OR RST_i ,
858 Q => SPY_TOB_mem_wr_addr_i
867 enable_tob_spy_mem_wr <= '1';
869 if SPY_TOB_mem_wr_addr_i = "11111111111" then
870 enable_tob_spy_mem_wr <= '0';
874 end process U14_stop_tob_wr;
External data-types and functions.
( OUTPUT_TOBS- 1 downto 0) AlgoXTriggerObject AlgoXOutput
Algorithm XOUTPUT port.
FSM to read TOB/XTOB data from Link Output FIFO for process FPGA.
out tob_data_mgt_fsm STD_LOGIC_VECTOR( 7 downto 0)
Monitor state machine status register.
in frame_counter STD_LOGIC_VECTOR( 11 downto 0)
Frame counter register.
in FIFO_MGT_TOBs STD_LOGIC_VECTOR( 32 downto 0)
TOB/XTOBs from Link Output FIFO.
out FIFO_MGT_rd_en STD_LOGIC
Read enalbe singal to Link Output FIFO.
out T_TOB_out_valid STD_LOGIC
TOB/XTOB is valid signal to wr to SPY memory.
out T_TOBs_out STD_LOGIC_VECTOR( 31 downto 0)
32b TOB/XTOB to connect to output MGT to control FPGA
in ctrl_TOB_ready_in std_logic
Ready signal from control FPGA to receive data from process FPGA.
out frame_counter_dec_en STD_LOGIC
Decrement Frame Counter.
out T_TOB_is_char STD_LOGIC
TOB/XTOB is CHAR to connect to output MGT to control FPGA.
in MGT_FIFO_empty std_logic
Link Output FIFO Empty Flag.
in TOB_FIFO_sw_rst std_logic
TOB Readout FIFO reset Pulse by software command.
in FIFO_MGT_TOB_valid STD_LOGIC
TOB/XTOBs from Link Output FIFO valid signal.
Merged Sorted TOB and Local XTOB Readout Logic for process FPGA.
std_logic TOB_ready_i
Control FPGA Ready signal internal.
Merged Sorted TOB and Local XTOB Readout Logic for process FPGA.
out T_TOB_FIFO_data_count STD_LOGIC_VECTOR( 8 downto 0)
sorted TOBs FIFO occupancy data count
in TOBs_sync_in STD_LOGIC
sorted TOB start signal
in Link_output_FIFO_pFULL_THRESH_negate STD_LOGIC_VECTOR( 12 downto 0)
Link output FIFO (before MGT) partial full flag negate threshold.
in TOB_type_in STD_LOGIC
TOB Type 0 = e/g for pFPGA U1, TOB Type U1 = tau for pFPGA 2, also Zero for U3 & U4.
out tob_double_word_en STD_LOGIC
TOB double word enable to increments double word counter,.
in T_TOBs_FIFO_pFULL_THRESH_assert STD_LOGIC_VECTOR( 8 downto 0)
sorted TOBs FIFO prog FULL threshold assert
out Link_output_FIFO_rd_data_count STD_LOGIC_VECTOR( 12 downto 0)
Link output FIFO (before MGT) occupancy read data count.
out SPY_TOB_mem_wr_addr STD_LOGIC_VECTOR( 10 downto 0)
TOB/XTOB Readout SPY Memory register (read only)
in trigger_slice_in STD_LOGIC_VECTOR( 3 downto 0)
Trigger slice number - on L1A.
in tob_busy_thresh_assert STD_LOGIC_VECTOR( 8 downto 0)
sorted TOB BUSY flag threshold assert
in pre_ld_TOB_wr_addr STD_LOGIC_VECTOR( 8 downto 0)
latency pre load for TOB DRP wr address
in TOB_TXOUTCLK STD_LOGIC
280Mhz clk to read data into MGT
in DPR_locations_to_rd STD_LOGIC_VECTOR( 2 downto 0)
number of slices (DRP locations) to read 1 or 2 or 3
in RST_spy_mem_wr_addr std_logic
spy memory write address counter reset Pulse by software command
in TOBs_32b_in STD_LOGIC_VECTOR( 31 downto 0)
Sorted TOB data 32b * 7 in series, F1 reads e/g TOBs and F2 reads tau TOBs. Same firmware in both FPG...
in tob_busy_thresh_negate STD_LOGIC_VECTOR( 8 downto 0)
sorted TOB BUSY flag threshold de-assert
in TOBs_valid_flg_in STD_LOGIC
sorted TOB write signal
in XTOB_eg_FIFO_pFULL_THRESH_assert STD_LOGIC_VECTOR( 8 downto 0)
e/g XTOB FIFO prog FULL threshold assert
in cntr_load_en STD_LOGIC
latency pre-load enable for DRPAM write address
in XTOB_eg_FIFO_pFULL_THRESH_negate STD_LOGIC_VECTOR( 8 downto 0)
e/g XTOB FIFO prog FULL threshold de-assert
in ipbus_in_tob_dpram ipb_wbus
IPBus signal going to RAW SPY DPRAM.
in TOB_ready_in std_logic
Ready signal from control FPGA to receive TOBs data.
out tob_fsm_monitor std_logic_vector( 39 downto 0)
Monitor TOB Readout state machines.
in XTOB_tau_Valid_flg_in STD_LOGIC_VECTOR( 7 downto 0)
8b XTOB tau has valid data
out busy_tob std_logic
tob data busy out to control FPGA
in XTOB_eg_512b_in AlgoXOutput
array 8 x 64b words XTOB e/g
in XTOB_eg_Valid_flg_in STD_LOGIC_VECTOR( 7 downto 0)
8b XTOB e/g has valid data
in XTOB_tau_sync_in STD_LOGIC
XTOB tau sync signal.
out TOB_out_to_MGT STD_LOGIC_VECTOR( 31 downto 0)
Event TOBs 32b out to MGT.
in L1A_in STD_LOGIC
L1A signal input.
in XTOB_tau_FIFO_pFULL_THRESH_assert STD_LOGIC_VECTOR( 8 downto 0)
tau XTOB FIFO prog FULL threshold assert
in OUT_TOB_BCN std_logic_vector( 6 downto 0)
sorted TOB BCN with delay through ALGO/sorting block
out sync_280m_out STD_LOGIC
280MHz synch signal output
in shelf_number STD_LOGIC_VECTOR( 3 downto 0)
shelf number input
out ipbus_out_tob_dpram ipb_rbus
IPBus signal coming from RAW SPY DPRAM to IPBus.
out TOB_data_FIFO_flags STD_LOGIC_VECTOR( 31 downto 0)
TOB data block FIFO flags.
out TOB_out_to_MGT_is_char STD_LOGIC
data is char to MGT
in efex_slot_num STD_LOGIC_VECTOR( 3 downto 0)
eFEX slot number input
in ipb_clk std_logic
ipb_clk signal is input from master to slaves
in BCN_FIFO_pFULL_THRESH_negate std_logic_vector( 8 downto 0)
BCN FIFO partial full flag negate threshold.
out XTOB_eg_FIFO_rd_data_count STD_LOGIC_VECTOR( 8 downto 0)
occupancy counter of e/g XTOB FIFO - read clock
in T_TOBs_FIFO_pFULL_THRESH_negate STD_LOGIC_VECTOR( 8 downto 0)
sorted TOBs FIFO prog FULL threshold de-assert
in clk_200M_in STD_LOGIC
200Mhz input signal
in XTOB_tau_FIFO_pFULL_THRESH_negate STD_LOGIC_VECTOR( 8 downto 0)
tau XTOB FIFO prog FULL threshold de-assert
in BCN_ID_in STD_LOGIC_VECTOR( 11 downto 0)
BC Counter.
in OUT_XTOB_BCN std_logic_vector( 6 downto 0)
XTOB BCN with delay through ALGO/sorting block.
FPGA_NUMBER integer := 1
Integer used to distinguish different FPGAs having a slightly different firmware.
in L1A_ID_in STD_LOGIC_VECTOR( 31 downto 0)
8b Extended L1A ID & 24b LIA_ID of the L1A Counter
out L1A_ID_Event_out STD_LOGIC_VECTOR( 31 downto 0)
8b Ext L1A ID from TTC input + 24b L1A ID of counter from TTC FIFO - inserted in the event header
in clk_40M_in STD_LOGIC
40MHz clock input signal
in pre_ld_tau_XTOB_wr_addr STD_LOGIC_VECTOR( 8 downto 0)
latency pre load for tau XTOB DRP wr address
out BCN_FIFO_TOB_rd_data_count STD_LOGIC_VECTOR( 8 downto 0)
BCN & L1A FIFO occupancy for TOB Readout.
in Link_output_FIFO_pFULL_THRESH_assert STD_LOGIC_VECTOR( 12 downto 0)
Link output FIFO (before MGT) partial full flag assert threshold.
in hw_addr STD_LOGIC_VECTOR( 1 downto 0)
FPGA Hardware Address.
in pre_ld_eg_XTOB_wr_addr STD_LOGIC_VECTOR( 8 downto 0)
latency pre load for e/g XTOB DRP wr address
in BCN_FIFO_pFULL_THRESH_assert std_logic_vector( 8 downto 0)
BCN FIFO partial full flag assert threshold.
in TOB_FIFO_sw_rst std_logic
TOB Readout FIFO reset Pulse by software command.
in XTOB_eg_sync_in STD_LOGIC
XTOB e/g sync signal.
in read_on_err_in STD_LOGIC
Read RAW data on error flag.
in clk_280M_in STD_LOGIC
280MHz clock input signal
in XTOB_tau_512b_in AlgoXOutput
array 8 x 64b words XTOB tau
out XTOB_tau_FIFO_rd_data_count STD_LOGIC_VECTOR( 8 downto 0)
tau XTOBs FIFO occupancy data count - read clock
Top of Sorting_TOBs module for process FPGA.
in TOBs_sync_in STD_LOGIC
Sorted TOB synch signal - indicating the start of the 7 TOB data words.
in pre_ld_wr_addr_TOB STD_LOGIC_VECTOR( 8 downto 0)
Latency pre-load for TOB Circular DRPAM write address.
out TOBs_data_prog_full STD_LOGIC
Sorted TOBs FIFO prog full flag.
in trigger_slice_in STD_LOGIC_VECTOR( 3 downto 0)
Trigger slice number - on L1A.
in DPR_locations_to_rd STD_LOGIC_VECTOR( 2 downto 0)
Number of multi-slice locations to read from DPRAM.
in TOBs_32b_in STD_LOGIC_VECTOR( 31 downto 0)
Sorted TOBs 32b * 7 in series.
in TOBs_valid_flg_in STD_LOGIC
Sorted TOB valid signal - used to write TOBs into de-randomisation TOB FIFO.
in L1A_in STD_LOGIC
L1A signal input.
out rdout_T_TOB_209b STD_LOGIC_VECTOR( 208 downto 0)
Sorted TOBs output of fifo 209b = 7b TOB_BCN +4b error+6b valid +192b TOB data.
out TOBs_data_valid STD_LOGIC
Sorted TOBs FIFO data valid signal.
in FIFO_rd_en STD_LOGIC
Read sorted TOB data from de-randomisation TOB FIFO into TOB Link Output FIFO.
out TOBs_FIFO_data_count STD_LOGIC_VECTOR( 8 downto 0)
Sorted TOBs FIFO occupancy count.
FPGA_NUMBER integer := 1
Integer used to distinguish different FPGAs having a slightly different firmware.
out TOBs_data_full STD_LOGIC
Sorted TOBs FIFO full flag.
in TOB_FIFO_sw_rst std_logic
TOB Readout FIFO reset Pulsed by software command.
out tob_data_dpram_fsm STD_LOGIC_VECTOR( 7 downto 0)
Monitor state machine status register.
out TOBs_data_empty STD_LOGIC
Sorted TOBs FIFO empty flag.
in clk_280M_in STD_LOGIC
280Mhz input signal
in ALGO_TOB_BCN_in std_logic_vector( 6 downto 0)
Sorted TOB BCN with delay through ALGO/sorting block.
in TOBs_FIFO_pFULL_THRESH_negate STD_LOGIC_VECTOR( 8 DOWNTO 0)
Threshold to de-assert FIFO prog full flag.
in TOBs_FIFO_pFULL_THRESH_assert STD_LOGIC_VECTOR( 8 DOWNTO 0)
Threshold to assert FIFO prog full flag.
Top of Sorting XTOBs module for process FPGA.
in XTOB_sync_in STD_LOGIC
XTOB sync signal.
out FIFO_XTOB_data_out array_8_of_252b
XTOBs output of fifo {array 8 of [(5*48b) + 5b valid] + 7b BCN}.
out XTOB_FIFO_empty STD_LOGIC
XTOBs FIFO empty flag.
in trigger_slice_in STD_LOGIC_VECTOR( 3 downto 0)
Trigger slice number - on L1A.
in DPR_locations_to_rd STD_LOGIC_VECTOR( 2 downto 0)
number of multi-slice locations to read from DPRAM
out XTOB_FIFO_prog_full STD_LOGIC
XTOBs FIFO prog full flag.
out XTOB_FIFO_valid STD_LOGIC
XTOBs FIFO data valid signal.
in XTOB_FIFO_pFULL_THRESH_negate STD_LOGIC_VECTOR( 8 downto 0)
Threshold to negate XTOB FIFO prog full flag.
out XTOB_FIFO_rd_data_count STD_LOGIC_VECTOR( 8 downto 0)
occupancy of XTOB derandomisation FIFO - read count
in XTOB_FIFO_sw_rst std_logic
TOB Readout FIFO reset Pulse by software command OR SYS_RST.
in L1A_in STD_LOGIC
L1A signal input.
in XTOB_512b_in AlgoXOutput
array 8 x 64b words XTOBs
in ALGO_XTOB_BCN_in std_logic_vector( 6 downto 0)
sorted XTOB BCN with delay through ALGO/sorting block
in FIFO_rd_en STD_LOGIC
read XTOB data into Shift Registers
in XTOB_FIFO_pFULL_THRESH_assert STD_LOGIC_VECTOR( 8 downto 0)
Threshold to assert XTOB FIFO prog full flag.
in clk_200M_in STD_LOGIC
200Mhz input signal
FPGA_NUMBER integer := 1
Integer used to distinguish different FPGAs having a slightly different firmware.
out XTOB_FIFO_full STD_LOGIC
XTOBs FIFO full flag.
in XTOB_Valid_flg_in STD_LOGIC_VECTOR( 7 downto 0)
8b XTOB has valid data
in pre_ld_wr_addr_XTOB STD_LOGIC_VECTOR( 8 downto 0)
latency pre-load for XTOB DRPAM write address
out xtob_data_dpram_fsm STD_LOGIC_VECTOR( 7 downto 0)
Monitor state machine status register.
in clk_280M_in STD_LOGIC
280Mhz input signal
Generic Counter for process FPGA.
in CLK STD_LOGIC
Clock signal input.
in CE STD_LOGIC
Enable signal input.
out Q STD_LOGIC_VECTOR( width- 1 downto 0)
Counter Output signal.
in RST STD_LOGIC
Reset signal input.
in CLK STD_LOGIC
Clock signal input.
in DOWN STD_LOGIC
Count DOWN signal input.
in CE STD_LOGIC
Enable signal input.
out Q STD_LOGIC_VECTOR( width- 1 downto 0)
Counter Output signal.
in RST STD_LOGIC
Reset signal input.
in UP STD_LOGIC
Count UP signal input.
FSM to write Merged TOBs and Local XTOBs (tau & e/g) data to Link Output FIFO for process FPGA 1 and ...
in valid_XTOBs_eg_in STD_LOGIC
XTOBs e/g valid signal.
in TOB_type_in STD_LOGIC
Sorted TOB data readout 32b * 7 in series, only 6 is used - F1 reads e/g TOBs and F2 reads tau TOBs.
in trigger_slice_in STD_LOGIC_VECTOR( 3 downto 0)
Trigger slice number - on L1A.
in DPR_locations_to_rd STD_LOGIC_VECTOR( 2 downto 0)
number of DRPAM locations to read for multi-slice (1 to 5)
in TOB_prog_full_flag_in std_logic
Input prog Full flag of all TOB FIFOs TTC, TOB & XTOB FIFOs.
in BCN_FIFO_prog_full_in STD_LOGIC
BCN & L1A FIFO prog full flag.
out tob_data_mux_fsm STD_LOGIC_VECTOR( 7 downto 0)
Monitor state machine status register.
in rdout_T_TOB_209b_in STD_LOGIC_VECTOR( 208 downto 0)
sorted TOBs 209b = 7b+4b+6b+192b TOB_BCN+ERR+valid+TOBs
in FIFO_L1A_ID_EXT STD_LOGIC_VECTOR( 7 downto 0)
Extended L1A ID from TTC input.
in XTOBs_eg_in array_8_of_252b
XTOBs e/g {array 8 of [(5*64b) + 5b valid]}.
in LO_FIFO_data_count_in STD_LOGIC_VECTOR( 12 downto 0)
Link Output FIFO data count.
in TOB_FIFO_empty_in std_logic
Input empty flag of all TOB FIFOs TTC, TOB & XTOB FIFOs.
out BCN_FIFO_rd_en_out STD_LOGIC
read enable signal to BCN & L1A_ID FIFOs
in shelf_number STD_LOGIC_VECTOR( 3 downto 0)
shelf number input
in efex_slot_num STD_LOGIC_VECTOR( 3 downto 0)
eFEX slot number input
in FIFO_BCN_in STD_LOGIC_VECTOR( 11 downto 0)
Bunch Crossing ID from BCN counter.
out TOB_rdout_fifo_rd_en_out STD_LOGIC
read enable signal to all TOB/XTOB FIFOs
out TOB_out_valid STD_LOGIC
sorted TOBsXTOBs data valid signal to Link_outpout_FIFO
in FIFO_L1A_ID STD_LOGIC_VECTOR( 23 downto 0)
L1A ID from TTC input.
FPGA_NUMBER integer := 1
Integer used to distinguish different FPGAs having a slightly different firmware.
in BCN_FIFO_valid_in STD_LOGIC
Data from TTC FIFO is valid.
in hw_addr STD_LOGIC_VECTOR( 1 downto 0)
FPGA Hardware Address.
in valid_XTOBs_tau_in STD_LOGIC
XTOBs tau valid signal.
in LO_FIFO_prog_full_in std_logic
Link Output FIFO partial FULL flag to receive RAW calorimeter data.
in valid_T_TOB_in std_logic
sorted TOBs valid signal
out TOB_safe_mode_out STD_LOGIC
Safe Mode operation flag for TOB readout.
out TOB_out_is_char STD_LOGIC
sorted TOBsXTOBs data is CHAR signal to Link_outpout_FIFO
in TOB_FIFO_sw_rst std_logic
TOB Readout FIFO reset Pulse by software command ORed with SYS_RST.
out frame_cntr_en STD_LOGIC
enable frame counter to count up by 1
out TOBs_out STD_LOGIC_VECTOR( 31 downto 0)
sorted TOBsXTOBs 32b data to Link_outpout_FIFO
in read_on_err_in STD_LOGIC
Read RAW data on error flag.
in clk_280M_in STD_LOGIC
280MHz clock input signal
in XTOBs_tau_in array_8_of_252b
XTOBs tau {array 8 of [(5*64b) + 5b valid]}.
Generate Synch at 280MHz.
in clk_40M STD_LOGIC
Clock 40MHz in.
out sync_280m_out STD_LOGIC
280MHz synch signal output
in RST STD_LOGIC
Reset in.
in clk_280M STD_LOGIC
Clock 2800MHz in.