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

Back to eFEX documentation
SIPO_unit.vhd
Go to the documentation of this file.
1 
6 
7 
8 library IEEE;
9 use IEEE.STD_LOGIC_1164.ALL;
10 
11 library TOB_rdout_lib;
12 use TOB_rdout_lib.TOB_rdout_ip_pkg.ALL;
13 use TOB_rdout_lib.data_type_pkg.all;
14 
16 entity SIPO_unit is
17  Port (
19  XTOB_in : in STD_LOGIC_VECTOR (47 downto 0);
21  XTOB_valid_in : in STD_LOGIC ;
23  XTOB_sync_in : in STD_LOGIC;
24  clk_in : in STD_LOGIC;
26  XTOB_sync_out : out STD_LOGIC;
28  XTOB_valid_out : out STD_LOGIC_VECTOR (4 downto 0);
30  XTOB_out : out STD_LOGIC_VECTOR (239 downto 0)
31 
32  );
33 end SIPO_unit;
34 
36 architecture Behavioral of SIPO_unit is
37  signal reg_1_tmp : std_logic_vector(47 downto 0); -- 34b XTOB
38  signal reg_2_tmp : std_logic_vector(47 downto 0);
39  signal reg_3_tmp : std_logic_vector(47 downto 0);
40  signal reg_4_tmp : std_logic_vector(47 downto 0);
41  signal reg_5_tmp : std_logic_vector(47 downto 0);
42 
43  signal valid_1_tmp : std_logic; -- 1b valid XTOB
44  signal valid_2_tmp : std_logic;
45  signal valid_3_tmp : std_logic;
46  signal valid_4_tmp : std_logic;
47  signal valid_5_tmp : std_logic;
48 
49  signal sync_1_tmp : std_logic;
50  signal sync_2_tmp : std_logic;
51  signal sync_3_tmp : std_logic;
52  signal sync_4_tmp : std_logic;
53  signal sync_5_tmp : std_logic;
54 
55 -- ####### attribute for signals ########
56  attribute max_fanout : integer;
57  attribute keep : string ;
58  attribute keep of sync_1_tmp : signal is "true" ;
59  attribute max_fanout of sync_1_tmp : signal is 60;
60  attribute keep of XTOB_sync_out : signal is "true" ;
61  attribute max_fanout of XTOB_sync_out : signal is 60;
62 
63 BEGIN
64 
65 U1_proc : process (clk_in)
66  begin
67  if(clk_in'event and clk_in = '1') then
68  sync_5_tmp <= XTOB_sync_in; -- register input sync data
69  sync_4_tmp <= sync_5_tmp;
70  sync_3_tmp <= sync_4_tmp;
71  sync_2_tmp <= sync_3_tmp;
72  sync_1_tmp <= sync_2_tmp;
73 
74  reg_5_tmp <= XTOB_in ; -- register input data
75  reg_4_tmp <= reg_5_tmp;
76  reg_3_tmp <= reg_4_tmp;
77  reg_2_tmp <= reg_3_tmp;
78  reg_1_tmp <= reg_2_tmp;
79 
80  valid_5_tmp <= XTOB_valid_in ; -- register TOB valid data
81  valid_4_tmp <= valid_5_tmp;
82  valid_3_tmp <= valid_4_tmp;
83  valid_2_tmp <= valid_3_tmp;
84  valid_1_tmp <= valid_2_tmp;
85 
86 -- moved following statements into the process so ad 1 clk cycle pipeline
87  XTOB_out <= reg_5_tmp & reg_4_tmp & reg_3_tmp & reg_2_tmp & reg_1_tmp;
88  XTOB_valid_out <= valid_5_tmp & valid_4_tmp & valid_3_tmp & valid_2_tmp & valid_1_tmp;
89  XTOB_sync_out <= sync_1_tmp;
90 
91  end if;
92  end process;
93 
94 --U2_ila_XTOB_sorting : ila_ipbus_fabric_rd_wr
95 --PORT MAP (
96 -- clk => clk_in ,
97 -- probe0(31 downto 0) => XTOB_in , -- 36b
98 -- probe0(35 downto 32) => (others => '0' ) , -- 36b
99 -- probe1 => (others => '0' ) , -- 36b
100 -- probe2(0) => XTOB_sync_in , -- 1b
101 -- probe3(0) => XTOB_valid_in, -- 1b
102 -- probe4 => (others => '0' ), -- 1b
103 -- probe5(31 downto 0) => reg_5_tmp, --36b
104 -- probe5(35 downto 32) => (others => '0' ), --36b
105 -- probe6(4 downto 0) => XTOB_valid_out, -- 36b
106 -- probe6(35 downto 5) => (others => '0' ), -- 36b
107 -- probe7 => (others => '0' ), -- 1b
108 -- probe8 => (others => '0' ) , -- 1b
109 -- probe9(0) => XTOB_sync_out -- 1b
110 --);
111 
112 end Behavioral;
XTOB SIPO for process FPGA.
Definition: SIPO_unit.vhd:36
XTOB SIPO for process FPGA.
Definition: SIPO_unit.vhd:16
in XTOB_sync_in STD_LOGIC
1b synch signal input
Definition: SIPO_unit.vhd:23
out XTOB_out STD_LOGIC_VECTOR( 239 downto 0)
5 XTOBs (34b) * 5 = 170b
Definition: SIPO_unit.vhd:32
out XTOB_sync_out STD_LOGIC
1b synch signal output
Definition: SIPO_unit.vhd:26
out XTOB_valid_out STD_LOGIC_VECTOR( 4 downto 0)
XTOBs valid signals 5b.
Definition: SIPO_unit.vhd:28
in XTOB_in STD_LOGIC_VECTOR( 47 downto 0)
33b XTOBs from 1 algo block
Definition: SIPO_unit.vhd:19
in XTOB_valid_in STD_LOGIC
1b XTOB valid signal
Definition: SIPO_unit.vhd:21