18 use IEEE.STD_LOGIC_1164.
ALL;
22 use IEEE.NUMERIC_STD.
ALL;
24 library TOB_rdout_lib;
34 clk_in_280M : in STD_LOGIC;
75 signal T_TOB_out_valid_i : STD_LOGIC;
76 signal TOB_in_is_char_i : STD_LOGIC;
77 signal TOBs_in_i : STD_LOGIC_VECTOR (31 downto 0);
78 signal MGT_fifo_rd_en_i : STD_LOGIC;
79 signal TOBs_out_i, TOBs_in_tmp_1dly : STD_LOGIC_VECTOR (31 downto 0);
80 signal TOB_out_is_char_i, TOB_in_is_char_tmp_1dly : STD_LOGIC;
82 signal frame_counter_dec_en_i : STD_LOGIC;
86 idle, decrement1, decrement2, rd_fifo1, rd_fifo2, tx_data_SOF1, tx_data_SOF2, tx_data1, tx_data2, tx_data_EOF1, tx_data_EOF2,
87 wait1, wait2, wait3, wait4
90 SIGNAL current_state : STATE_TYPE;
114 if MGT_fifo_rd_en_i = '1' then
126 TOBs_in_i <= (others => '0');
127 TOB_in_is_char_i <= '0';
128 current_state <= idle ;
130 TOBs_in_i <= TOBs_in_tmp_1dly;
131 TOB_in_is_char_i <= TOB_in_is_char_tmp_1dly;
132 T_TOB_out_valid_i <= '0';
135 CASE current_state is
137 T_TOB_out_valid_i <= '0' ;
138 frame_counter_dec_en_i <= '0' ;
139 MGT_fifo_rd_en_i <= '0' ;
140 TOB_out_is_char_i <= '1';
141 TOBs_out_i <= X"000000" & ch_idle ;
148 frame_counter_dec_en_i <= '1' ;
149 current_state <= decrement1 ;
152 current_state <= rd_fifo1 ;
158 frame_counter_dec_en_i <= '0' ;
159 current_state <= decrement2 ;
162 frame_counter_dec_en_i <= '0' ;
163 current_state <= idle ;
166 T_TOB_out_valid_i <= '0' ;
167 TOB_out_is_char_i <= '1';
168 TOBs_out_i <= X"000000" & ch_idle ;
170 if (TOBs_in_tmp_1dly(7 downto 0) = X"7C" AND TOB_in_is_char_tmp_1dly = '1') then
171 MGT_fifo_rd_en_i <= '1';
172 current_state <= tx_data_SOF1 ;
175 MGT_fifo_rd_en_i <= '1';
176 current_state <= rd_fifo1 ;
180 MGT_fifo_rd_en_i <= '1';
181 TOB_out_is_char_i <= TOB_in_is_char_i;
182 TOBs_out_i <= TOBs_in_i ;
183 T_TOB_out_valid_i <= '1' ;
184 current_state <= tx_data1 ;
188 T_TOB_out_valid_i <= '0' ;
189 MGT_fifo_rd_en_i <= '1';
190 TOB_out_is_char_i <= '1';
191 TOBs_out_i <= X"000000"& ch_idle ;
192 current_state <= wait2 ;
196 MGT_fifo_rd_en_i <= '1';
197 TOB_out_is_char_i <= TOB_in_is_char_i;
198 TOBs_out_i <= TOBs_in_i ;
199 T_TOB_out_valid_i <= '1' ;
200 current_state <= tx_data1 ;
203 TOB_out_is_char_i <= TOB_in_is_char_i;
204 TOBs_out_i <= TOBs_in_i ;
205 T_TOB_out_valid_i <= '1' ;
208 if (TOBs_in_tmp_1dly(7 downto 0) = X"DC" AND TOB_in_is_char_tmp_1dly = '1') then
209 frame_counter_dec_en_i <= '1' ;
210 MGT_fifo_rd_en_i <= '0';
211 current_state <= tx_data_EOF1 ;
213 MGT_fifo_rd_en_i <= '1';
215 current_state <= tx_data1 ;
219 frame_counter_dec_en_i <= '0' ;
220 TOB_out_is_char_i <= TOB_in_is_char_i;
221 TOBs_out_i <= TOBs_in_i ;
222 T_TOB_out_valid_i <= '1' ;
224 current_state <= wait3 ;
228 T_TOB_out_valid_i <= '0' ;
229 TOB_out_is_char_i <= '1';
230 TOBs_out_i <= X"000000"& ch_idle ;
231 current_state <= tx_data_EOF2 ;
234 T_TOB_out_valid_i <= '0' ;
235 TOB_out_is_char_i <= '1';
236 TOBs_out_i <= X"000000" & ch_idle ;
237 current_state <= tx_data_EOF2 ;
241 if (TOBs_in_i(7 downto 0) = X"DC" AND TOB_in_is_char_i = '1') then
242 current_state <= idle ;
244 current_state <= idle ;
247 if (TOBs_in_i(7 downto 0) = X"7C" AND TOB_in_is_char_i = '1') then
248 MGT_fifo_rd_en_i <= '1';
249 current_state <= wait1 ;
253 frame_counter_dec_en_i <= '1' ;
254 current_state <= decrement1 ;
FSM to read RAW Event data from Link Output FIFO to MGT for process FPGA.
FSM to read RAW Event data from Link Output FIFO to MGT for process FPGA.
out RAW_data_out STD_LOGIC_VECTOR( 31 downto 0)
32b RAW to connect to output MGT to control FPGA
in frame_counter STD_LOGIC_VECTOR( 11 downto 0)
Frame counter register.
in FIFO_MGT_TOBs STD_LOGIC_VECTOR( 32 downto 0)
RAW from Link Output FIFO.
out FIFO_MGT_rd_en STD_LOGIC
Read enalbe singal to Link Output FIFO.
out raw_data_mgt_fsm STD_LOGIC_VECTOR( 7 downto 0)
Monitor state machine status register.
in LO_FIFO_empty std_logic
Link Output FIFO Empty Flag.
out RAW_data_is_char STD_LOGIC
RAW is CHAR to connect to output MGT to control FPGA.
out RAW_data_out_valid STD_LOGIC
RAW is valid signal to wr to SPY memory.
out frame_counter_dec_en STD_LOGIC
Decrement Frame Counter.
in RAW_ready_in std_logic
Ready signal from control FPGA to receive RAW data from process FPGA.
in TOB_FIFO_sw_rst std_logic
TOB Readout FIFO reset Pulse by software command ORed with SYS_RST.
in FIFO_MGT_TOB_valid STD_LOGIC
RAW from Link Output FIFO valid signal.