2 use IEEE.STD_LOGIC_1164.
all;
3 use IEEE.NUMERIC_STD.
all;
5 library infrastructure_lib;
10 type ecrid_reg_array is array(3 downto 0) of std_logic_vector(7 downto 0);
11 type eFEX_mapping_array is array(15 downto 0) of std_logic_vector(3 downto 0);
12 constant eFEX_mapping: eFEX_mapping_array := (x"C", x"B", x"0", x"A", x"1", x"9", x"2", x"8", x"3", x"7", x"4", x"6", x"5", x"C", x"C", x"C");
15 function F_MGT_QUAD_ENABLE (fpga_number :
in integer)
return std_logic_vector;
16 function F_MGT_USE_OTHER_CLK_N (fpga_number :
in integer)
return integer;
17 function F_IPBUS_PORT_N (fpga_number :
in integer)
return std_logic_vector;
18 function F_MGT_USE_OTHER_CLK (fpga_number :
in integer)
return std_logic_vector;
19 function F_MGT_TX_POWER (fpga_number :
in integer)
return std_logic_vector;
20 function F_MGT_RX_POWER (fpga_number :
in integer)
return std_logic_vector;
21 function F_ENABLE_MERGING (fpga_number :
in integer)
return std_logic;
23 function xadc_reg48 (fpga_number :
in integer)
return bit_vector;
24 function xadc_reg49 (fpga_number :
in integer)
return bit_vector;
26 procedure MGT_SELECTOR_RX (
27 signal fpga_number :
in integer;
28 signal in_BC_Reg_sel :
in std_logic_vector(
319 downto 0);
29 signal in_mux_sel :
in std_logic_vector(
319 downto 0);
30 signal in_delay_num :
out std_logic_vector(
319 downto 0);
31 signal in_bc_cntr_0 :
out std_logic_vector(
139 downto 0);
32 signal in_bc_cntr_1 :
out std_logic_vector(
139 downto 0);
33 signal in_bc_cntr_2 :
out std_logic_vector(
139 downto 0);
34 signal in_bc_cntr_3 :
out std_logic_vector(
139 downto 0);
35 signal in_bc_mux_cntr_0 :
out std_logic_vector(
139 downto 0);
36 signal in_bc_mux_cntr_1 :
out std_logic_vector(
139 downto 0);
37 signal in_bc_mux_cntr_2 :
out std_logic_vector(
139 downto 0);
38 signal in_bc_mux_cntr_3 :
out std_logic_vector(
139 downto 0);
39 signal in_mgt_RXUSRCLK_OUT :
in std_logic_vector(
79 downto 0);
40 signal in_enable_mgt :
in std_logic_vector(
79 downto 0);
41 signal in_bcn_synch :
out std_logic_vector(
79 downto 0);
42 signal in_crc_error_chan :
out std_logic_vector(
79 downto 0);
43 signal in_notable_error :
in std_logic_vector(
79 downto 0);
44 signal in_disperr_error :
in std_logic_vector(
79 downto 0);
45 signal in_rx_resetdone :
in std_logic_vector(
79 downto 0);
46 signal out_BC_Reg_sel :
out std_logic_vector(
255 downto 0);
47 signal out_mux_sel :
out std_logic_vector(
255 downto 0);
48 signal out_delay_num :
in std_logic_vector(
255 downto 0);
49 signal out_bc_cntr_0 :
in std_logic_vector(
111 downto 0);
50 signal out_bc_cntr_1 :
in std_logic_vector(
111 downto 0);
51 signal out_bc_cntr_2 :
in std_logic_vector(
111 downto 0);
52 signal out_bc_cntr_3 :
in std_logic_vector(
111 downto 0);
53 signal out_bc_mux_cntr_0 :
in std_logic_vector(
111 downto 0);
54 signal out_bc_mux_cntr_1 :
in std_logic_vector(
111 downto 0);
55 signal out_bc_mux_cntr_2 :
in std_logic_vector(
111 downto 0);
56 signal out_bc_mux_cntr_3 :
in std_logic_vector(
111 downto 0);
57 signal out_mgt_RXUSRCLK_OUT :
out std_logic_vector(
63 downto 0);
58 signal out_enable_mgt :
out std_logic_vector(
63 downto 0);
59 signal out_bcn_synch :
in std_logic_vector(
63 downto 0);
60 signal out_crc_error_chan :
in std_logic_vector(
63 downto 0);
61 signal out_disperr_error :
out std_logic_vector(
63 downto 0);
62 signal out_notable_error :
out std_logic_vector(
63 downto 0);
64 signal out_rx_resetdone :
out std_logic_vector(
63 downto 0);
65 signal in_MGT_Commadet :
in std_logic_vector(
79 downto 0);
66 signal in_MGT_Data :
in mgt_rxdata_array (
19 downto 0);
67 signal out_MGT_Commadet :
out std_logic_vector(
63 downto 0);
68 signal out_MGT_Data :
out mgt_rxdata_array (
15 downto 0);
70 signal in_rxdata_mgt0 :
out std_logic_vector(
639 downto 0);
71 signal in_rxdata_mgt1 :
out std_logic_vector(
639 downto 0);
72 signal in_rxdata_mgt2 :
out std_logic_vector(
639 downto 0);
73 signal in_rxdata_mgt3 :
out std_logic_vector(
639 downto 0);
75 signal out_rxdata_mgt0 :
in std_logic_vector(
511 downto 0);
76 signal out_rxdata_mgt1 :
in std_logic_vector(
511 downto 0);
77 signal out_rxdata_mgt2 :
in std_logic_vector(
511 downto 0);
78 signal out_rxdata_mgt3 :
in std_logic_vector(
511 downto 0);
80 signal in_ram_data_mgt0 :
in std_logic_vector(
4559 downto 0);
81 signal in_ram_data_mgt1 :
in std_logic_vector(
4559 downto 0);
82 signal in_ram_data_mgt2 :
in std_logic_vector(
4559 downto 0);
83 signal in_ram_data_mgt3 :
in std_logic_vector(
4559 downto 0);
85 signal out_ram_data_mgt0 :
out std_logic_vector(
3647 downto 0);
86 signal out_ram_data_mgt1 :
out std_logic_vector(
3647 downto 0);
87 signal out_ram_data_mgt2 :
out std_logic_vector(
3647 downto 0);
88 signal out_ram_data_mgt3 :
out std_logic_vector(
3647 downto 0);
91 signal in_align_frame :
in std_logic_vector(
79 downto 0);
92 signal out_align_frame :
out std_logic_vector(
63 downto 0);
94 signal in_kchar :
in std_logic_vector(
79 downto 0);
95 signal out_kchar :
out std_logic_vector(
63 downto 0)
102 procedure MGT_SELECTOR_TX (
103 signal fpga_number :
in integer;
105 signal in_mgt_usr_clk :
in std_logic_vector(
79 downto 0);
106 signal in_txdata_0 :
in std_logic_vector(
33 downto 0);
107 signal in_txdata_1 :
in std_logic_vector(
33 downto 0);
108 signal in_txdata_2 :
in std_logic_vector(
33 downto 0);
109 signal in_txdata_3 :
in std_logic_vector(
33 downto 0);
110 signal in_txdata_4 :
in std_logic_vector(
33 downto 0);
111 signal in_txdata_5 :
in std_logic_vector(
33 downto 0);
112 signal in_txdata_6 :
in std_logic_vector(
33 downto 0);
113 signal in_txdata_7 :
in std_logic_vector(
33 downto 0);
114 signal in_txdata_8 :
in std_logic_vector(
33 downto 0);
115 signal in_txdata_9 :
in std_logic_vector(
33 downto 0);
116 signal in_txdata_10 :
in std_logic_vector(
33 downto 0);
117 signal in_txdata_11 :
in std_logic_vector(
33 downto 0);
120 signal in_topo_k :
in std_logic;
121 signal in_raw_k :
in std_logic;
122 signal in_topo_data :
in std_logic_vector(
31 downto 0);
123 signal in_raw_data :
in std_logic_vector(
31 downto 0);
124 signal out_topo_tob_clk :
out std_logic;
125 signal out_topo_raw_clk :
out std_logic;
126 signal out_mgt_usr_clk :
out std_logic_vector(
11 downto 0);
127 signal out_txcharisk_quad_array :
out mgt_txcharisk_array(
19 downto 0);
129 signal out_txdata_quad_array :
out mgt_txdata_array(
19 downto 0)
137 function F_MGT_QUAD_ENABLE (fpga_number :
in integer)
return std_logic_vector is
138 variable V_MGT_QUAD_ENABLE :
std_logic_vector(19 downto 0);
140 if fpga_number =
1 then
141 V_MGT_QUAD_ENABLE :=
"0000"&
"1111"&
"1111"&
"1111"&
"1111";
-- there must be 4 zeroes
142 elsif fpga_number =
2 then
143 V_MGT_QUAD_ENABLE :=
"1110"&
"1100"&
"0111"&
"1111"&
"1111";
-- there must be 4 zeroes
144 elsif fpga_number =
3 then
145 V_MGT_QUAD_ENABLE :=
"1111"&
"1011"&
"1111"&
"1110"&
"0011";
-- there must be 4 zeroes
146 elsif fpga_number =
4 then
147 V_MGT_QUAD_ENABLE :=
"1111"&
"0111"&
"1111"&
"1110"&
"0011";
-- there must be 4 zeroes
149 V_MGT_QUAD_ENABLE := x"00000";
151 return V_MGT_QUAD_ENABLE;
152 end function F_MGT_QUAD_ENABLE;
154 function F_MGT_USE_OTHER_CLK (fpga_number :
in integer)
return std_logic_vector is
155 variable V_MGT_USE_OTHER_CLK :
std_logic_vector(19 downto 0);
157 if fpga_number =
1 then
158 V_MGT_USE_OTHER_CLK := x"00400";
159 elsif fpga_number =
2 then
160 V_MGT_USE_OTHER_CLK := x"00400";
161 elsif fpga_number =
3 then
162 V_MGT_USE_OTHER_CLK := x"02000";
163 elsif fpga_number =
4 then
164 V_MGT_USE_OTHER_CLK := x"00100";
166 V_MGT_USE_OTHER_CLK := x"00000";
168 return V_MGT_USE_OTHER_CLK;
169 end function F_MGT_USE_OTHER_CLK;
171 function F_MGT_USE_OTHER_CLK_N (fpga_number :
in integer)
return integer is
172 variable V_MGT_USE_OTHER_CLK_N :
integer;
174 if fpga_number =
1 then
175 V_MGT_USE_OTHER_CLK_N :=
10;
176 elsif fpga_number =
2 then
177 V_MGT_USE_OTHER_CLK_N :=
10;
178 elsif fpga_number =
3 then
179 V_MGT_USE_OTHER_CLK_N :=
13;
180 elsif fpga_number =
4 then
181 V_MGT_USE_OTHER_CLK_N :=
8;
183 V_MGT_USE_OTHER_CLK_N :=
0;
185 return V_MGT_USE_OTHER_CLK_N;
186 end function F_MGT_USE_OTHER_CLK_N;
188 function F_IPBUS_PORT_N (fpga_number :
in integer)
return std_logic_vector is
189 variable V_IPBUS_PORT_N :
std_logic_vector(15 downto 0);
191 if fpga_number =
1 then
192 V_IPBUS_PORT_N := x"C352";
193 elsif fpga_number =
2 then
194 V_IPBUS_PORT_N := x"C353";
195 elsif fpga_number =
3 then
196 V_IPBUS_PORT_N := x"C354";
197 elsif fpga_number =
4 then
198 V_IPBUS_PORT_N := x"C355";
200 V_IPBUS_PORT_N := x"0000";
202 return V_IPBUS_PORT_N;
203 end function F_IPBUS_PORT_N;
205 function F_MGT_TX_POWER (fpga_number :
in integer)
return std_logic_vector is
206 variable V_MGT_TX_POWER :
std_logic_vector(79 downto 0);
208 if fpga_number =
1 then
209 V_MGT_TX_POWER := x"0000_00ff_f300_0000_0000";
210 elsif fpga_number =
2 then
211 V_MGT_TX_POWER := x"fff0_0000_0300_0000_0000";
212 elsif fpga_number =
3 then
213 V_MGT_TX_POWER := x"0000_0030_0000_0000_0000";
214 elsif fpga_number =
4 then
215 V_MGT_TX_POWER := x"0000_0000_0003_0000_0000";
217 V_MGT_TX_POWER := x"0000_0000_0000_0000_0000";
219 return V_MGT_TX_POWER;
220 end function F_MGT_TX_POWER;
222 function F_MGT_RX_POWER (fpga_number :
in integer)
return std_logic_vector is
223 variable V_MGT_RX_POWER :
std_logic_vector(79 downto 0);
225 if fpga_number =
1 then
227 V_MGT_RX_POWER := x"0000_f0ff_f0ff_ffff_ffff";
228 elsif fpga_number =
2 then
230 V_MGT_RX_POWER := x"fff0_0f00_00ff_ffff_ffff";
231 elsif fpga_number =
3 then
233 V_MGT_RX_POWER := x"ffff_f00f_ffff_fff0_00ff";
234 elsif fpga_number =
4 then
236 V_MGT_RX_POWER := x"0fff_0fff_fff0_fff0_00ff";
238 V_MGT_RX_POWER := x"0000_0000_0000_0000_0000";
240 return V_MGT_RX_POWER;
241 end function F_MGT_RX_POWER;
243 function F_ENABLE_MERGING (fpga_number :
in integer)
return std_logic is
244 variable V_ENABLE_MERGING :
std_logic;
246 if fpga_number =
1 then
247 V_ENABLE_MERGING := '
1';
248 elsif fpga_number =
2 then
249 V_ENABLE_MERGING := '
1';
250 elsif fpga_number =
3 then
251 V_ENABLE_MERGING := '
0';
252 elsif fpga_number =
4 then
253 V_ENABLE_MERGING := '
0';
255 V_ENABLE_MERGING := '
0';
257 return V_ENABLE_MERGING;
258 end function F_ENABLE_MERGING;
260 procedure MGT_SELECTOR_RX
262 signal fpga_number :
in integer;
263 signal in_BC_Reg_sel :
in std_logic_vector(
319 downto 0);
264 signal in_mux_sel :
in std_logic_vector(
319 downto 0);
265 signal in_delay_num :
out std_logic_vector(
319 downto 0);
266 signal in_bc_cntr_0 :
out std_logic_vector(
139 downto 0);
267 signal in_bc_cntr_1 :
out std_logic_vector(
139 downto 0);
268 signal in_bc_cntr_2 :
out std_logic_vector(
139 downto 0);
269 signal in_bc_cntr_3 :
out std_logic_vector(
139 downto 0);
270 signal in_bc_mux_cntr_0 :
out std_logic_vector(
139 downto 0);
271 signal in_bc_mux_cntr_1 :
out std_logic_vector(
139 downto 0);
272 signal in_bc_mux_cntr_2 :
out std_logic_vector(
139 downto 0);
273 signal in_bc_mux_cntr_3 :
out std_logic_vector(
139 downto 0);
274 signal in_mgt_RXUSRCLK_OUT :
in std_logic_vector(
79 downto 0);
275 signal in_enable_mgt :
in std_logic_vector(
79 downto 0);
276 signal in_bcn_synch :
out std_logic_vector(
79 downto 0);
277 signal in_crc_error_chan :
out std_logic_vector(
79 downto 0);
278 signal in_notable_error :
in std_logic_vector(
79 downto 0);
279 signal in_disperr_error :
in std_logic_vector(
79 downto 0);
280 signal in_rx_resetdone :
in std_logic_vector(
79 downto 0);
281 signal out_BC_Reg_sel :
out std_logic_vector(
255 downto 0);
282 signal out_mux_sel :
out std_logic_vector(
255 downto 0);
283 signal out_delay_num :
in std_logic_vector(
255 downto 0);
284 signal out_bc_cntr_0 :
in std_logic_vector(
111 downto 0);
285 signal out_bc_cntr_1 :
in std_logic_vector(
111 downto 0);
286 signal out_bc_cntr_2 :
in std_logic_vector(
111 downto 0);
287 signal out_bc_cntr_3 :
in std_logic_vector(
111 downto 0);
288 signal out_bc_mux_cntr_0 :
in std_logic_vector(
111 downto 0);
289 signal out_bc_mux_cntr_1 :
in std_logic_vector(
111 downto 0);
290 signal out_bc_mux_cntr_2 :
in std_logic_vector(
111 downto 0);
291 signal out_bc_mux_cntr_3 :
in std_logic_vector(
111 downto 0);
292 signal out_mgt_RXUSRCLK_OUT :
out std_logic_vector(
63 downto 0);
293 signal out_enable_mgt :
out std_logic_vector(
63 downto 0);
294 signal out_bcn_synch :
in std_logic_vector(
63 downto 0);
295 signal out_crc_error_chan :
in std_logic_vector(
63 downto 0);
296 signal out_disperr_error :
out std_logic_vector(
63 downto 0);
297 signal out_notable_error :
out std_logic_vector(
63 downto 0);
299 signal out_rx_resetdone :
out std_logic_vector(
63 downto 0);
300 signal in_MGT_Commadet :
in std_logic_vector(
79 downto 0);
301 signal in_MGT_Data :
in mgt_rxdata_array (
19 downto 0);
302 signal out_MGT_Commadet :
out std_logic_vector(
63 downto 0);
303 signal out_MGT_Data :
out mgt_rxdata_array (
15 downto 0);
305 signal in_rxdata_mgt0 :
out std_logic_vector(
639 downto 0);
306 signal in_rxdata_mgt1 :
out std_logic_vector(
639 downto 0);
307 signal in_rxdata_mgt2 :
out std_logic_vector(
639 downto 0);
308 signal in_rxdata_mgt3 :
out std_logic_vector(
639 downto 0);
310 signal out_rxdata_mgt0 :
in std_logic_vector(
511 downto 0);
311 signal out_rxdata_mgt1 :
in std_logic_vector(
511 downto 0);
312 signal out_rxdata_mgt2 :
in std_logic_vector(
511 downto 0);
313 signal out_rxdata_mgt3 :
in std_logic_vector(
511 downto 0);
315 signal in_ram_data_mgt0 :
in std_logic_vector(
4559 downto 0);
316 signal in_ram_data_mgt1 :
in std_logic_vector(
4559 downto 0);
317 signal in_ram_data_mgt2 :
in std_logic_vector(
4559 downto 0);
318 signal in_ram_data_mgt3 :
in std_logic_vector(
4559 downto 0);
320 signal out_ram_data_mgt0 :
out std_logic_vector(
3647 downto 0);
321 signal out_ram_data_mgt1 :
out std_logic_vector(
3647 downto 0);
322 signal out_ram_data_mgt2 :
out std_logic_vector(
3647 downto 0);
323 signal out_ram_data_mgt3 :
out std_logic_vector(
3647 downto 0);
325 signal in_align_frame :
in std_logic_vector(
79 downto 0);
326 signal out_align_frame :
out std_logic_vector(
63 downto 0);
328 signal in_kchar :
in std_logic_vector(
79 downto 0);
329 signal out_kchar :
out std_logic_vector(
63 downto 0)
333 variable v_BC_Reg_sel :
std_logic_vector(255 downto 0);
334 variable v_mux_sel :
std_logic_vector(255 downto 0);
335 variable v_delay_num :
std_logic_vector(319 downto 0);
336 variable v_bc_cntr_0 :
std_logic_vector(139 downto 0);
337 variable v_bc_cntr_1 :
std_logic_vector(139 downto 0);
338 variable v_bc_cntr_2 :
std_logic_vector(139 downto 0);
339 variable v_bc_cntr_3 :
std_logic_vector(139 downto 0);
340 variable v_bc_mux_cntr_0 :
std_logic_vector(139 downto 0);
341 variable v_bc_mux_cntr_1 :
std_logic_vector(139 downto 0);
342 variable v_bc_mux_cntr_2 :
std_logic_vector(139 downto 0);
343 variable v_bc_mux_cntr_3 :
std_logic_vector(139 downto 0);
344 variable v_mgt_RXUSRCLK_OUT :
std_logic_vector(63 downto 0);
345 variable v_enable_mgt :
std_logic_vector(63 downto 0);
346 variable v_bcn_synch :
std_logic_vector(79 downto 0);
347 variable v_crc_error_chan :
std_logic_vector(79 downto 0);
348 variable v_disperr_error :
std_logic_vector(63 downto 0);
349 variable v_notable_error :
std_logic_vector(63 downto 0);
351 variable v_rx_resetdone :
std_logic_vector(63 downto 0);
353 variable v_rxdata_mgt0 :
std_logic_vector(639 downto 0);
354 variable v_rxdata_mgt1 :
std_logic_vector(639 downto 0);
355 variable v_rxdata_mgt2 :
std_logic_vector(639 downto 0);
356 variable v_rxdata_mgt3 :
std_logic_vector(639 downto 0);
358 variable v_ram_data_mgt0 :
std_logic_vector(3647 downto 0);
359 variable v_ram_data_mgt1 :
std_logic_vector(3647 downto 0);
360 variable v_ram_data_mgt2 :
std_logic_vector(3647 downto 0);
361 variable v_ram_data_mgt3 :
std_logic_vector(3647 downto 0);
362 variable v_kchar :
std_logic_vector(63 downto 0);
363 variable v_align_frame :
std_logic_vector(63 downto 0);
367 variable v_MGT_Commadet :
std_logic_vector(63 downto 0);
368 variable v_MGT_Data : mgt_rxdata_array
(15 downto 0);
369 variable m :
integer :=
1;
372 if fpga_number =
1 then
374 v_MGT_Data := in_MGT_Data
(17*m -
1 downto 11*m
) & in_MGT_Data
(10*m -
1 downto 0);
376 v_BC_Reg_sel := in_BC_Reg_sel
(17*m -
1 downto 11*m
) & in_BC_Reg_sel
(10*m -
1 downto 0);
377 v_mux_sel := in_mux_sel
(17*m -
1 downto 11*m
) & in_mux_sel
(10*m -
1 downto 0);
379 v_delay_num := x"0000_0000_0000" & out_delay_num
(16*m -
1 downto 10*m
) & x"0000" & out_delay_num
(10*m -
1 downto 0);
381 v_bc_cntr_0 :=
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_0
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_cntr_0
(10*m -
1 downto 0);
382 v_bc_cntr_1 :=
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_1
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_cntr_1
(10*m -
1 downto 0);
383 v_bc_cntr_2 :=
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_2
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_cntr_2
(10*m -
1 downto 0);
384 v_bc_cntr_3 :=
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_3
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_cntr_3
(10*m -
1 downto 0);
385 v_bc_mux_cntr_0 :=
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_0
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_mux_cntr_0
(10*m -
1 downto 0);
386 v_bc_mux_cntr_1 :=
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_1
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_mux_cntr_1
(10*m -
1 downto 0);
387 v_bc_mux_cntr_2 :=
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_2
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_mux_cntr_2
(10*m -
1 downto 0);
388 v_bc_mux_cntr_3 :=
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_3
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_mux_cntr_3
(10*m -
1 downto 0);
391 v_rxdata_mgt0 := x"0000000_00000000_000000000" & out_rxdata_mgt0
(16*m -
1 downto 10*m
) & x"00000000" & out_rxdata_mgt0
(10*m -
1 downto 0);
392 v_rxdata_mgt1 := x"0000000_00000000_000000000" & out_rxdata_mgt1
(16*m -
1 downto 10*m
) & x"00000000" & out_rxdata_mgt1
(10*m -
1 downto 0);
393 v_rxdata_mgt2 := x"0000000_00000000_000000000" & out_rxdata_mgt2
(16*m -
1 downto 10*m
) & x"00000000" & out_rxdata_mgt2
(10*m -
1 downto 0);
394 v_rxdata_mgt3 := x"0000000_00000000_000000000" & out_rxdata_mgt3
(16*m -
1 downto 10*m
) & x"00000000" & out_rxdata_mgt3
(10*m -
1 downto 0);
397 v_ram_data_mgt0 := in_ram_data_mgt0
(17*m -
1 downto 11*m
) & in_ram_data_mgt0
(10*m -
1 downto 0);
398 v_ram_data_mgt1 := in_ram_data_mgt1
(17*m -
1 downto 11*m
) & in_ram_data_mgt1
(10*m -
1 downto 0);
399 v_ram_data_mgt2 := in_ram_data_mgt2
(17*m -
1 downto 11*m
) & in_ram_data_mgt2
(10*m -
1 downto 0);
400 v_ram_data_mgt3 := in_ram_data_mgt3
(17*m -
1 downto 11*m
) & in_ram_data_mgt3
(10*m -
1 downto 0);
403 v_mgt_RXUSRCLK_OUT := in_mgt_RXUSRCLK_OUT
(17*m -
1 downto 11*m
) & in_mgt_RXUSRCLK_OUT
(10*m -
1 downto 0);
404 v_disperr_error := in_disperr_error
(17*m -
1 downto 11*m
) & in_disperr_error
(10*m -
1 downto 0);
405 v_notable_error := in_notable_error
(17*m -
1 downto 11*m
) & in_notable_error
(10*m -
1 downto 0);
407 v_bcn_synch := x"0_0_0" & out_bcn_synch
(16*m -
1 downto 10*m
) & x"0" & out_bcn_synch
(10*m -
1 downto 0);
408 v_crc_error_chan := x"0_0_0" & out_crc_error_chan
(16*m -
1 downto 10*m
) & x"0" & out_crc_error_chan
(10*m -
1 downto 0);
409 v_rx_resetdone := in_rx_resetdone
(17*m -
1 downto 11*m
) & in_rx_resetdone
(10*m -
1 downto 0);
410 v_enable_mgt := in_enable_mgt
(17*m -
1 downto 11*m
) & in_enable_mgt
(10*m -
1 downto 0);
411 v_MGT_Commadet := in_MGT_Commadet
(17*m -
1 downto 11*m
) & in_MGT_Commadet
(10*m -
1 downto 0);
412 v_kchar := in_kchar
(17*m -
1 downto 11*m
) & in_kchar
(10*m -
1 downto 0);
413 v_align_frame := in_align_frame
(17*m -
1 downto 11*m
) & in_align_frame
(10*m -
1 downto 0);
417 elsif fpga_number =
2 then
419 v_MGT_Data := in_MGT_Data
(20*m -
1 downto 17*m
) & in_MGT_Data
(16*m -
1 downto 13*m
) & in_MGT_Data
(10*m -
1 downto 0);
421 v_BC_Reg_sel := in_BC_Reg_sel
(20*m -
1 downto 17*m
) & in_BC_Reg_sel
(16*m -
1 downto 13*m
) & in_BC_Reg_sel
(10*m -
1 downto 0);
422 v_mux_sel := in_mux_sel
(20*m -
1 downto 17*m
) & in_mux_sel
(16*m -
1 downto 13*m
) & in_mux_sel
(10*m -
1 downto 0);
424 v_delay_num := out_delay_num
(16*m -
1 downto 13*m
) & x"0000" & out_delay_num
(13*m -
1 downto 10*m
) & x"0000_0000_0000" & out_delay_num
(10*m -
1 downto 0);
426 v_bc_cntr_0 := out_bc_cntr_0
(16*m -
1 downto 13*m
) &
"0000000" & out_bc_cntr_0
(13*m -
1 downto 10*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_0
(10*m -
1 downto 0);
427 v_bc_cntr_1 := out_bc_cntr_1
(16*m -
1 downto 13*m
) &
"0000000" & out_bc_cntr_1
(13*m -
1 downto 10*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_1
(10*m -
1 downto 0);
428 v_bc_cntr_2 := out_bc_cntr_2
(16*m -
1 downto 13*m
) &
"0000000" & out_bc_cntr_2
(13*m -
1 downto 10*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_2
(10*m -
1 downto 0);
429 v_bc_cntr_3 := out_bc_cntr_3
(16*m -
1 downto 13*m
) &
"0000000" & out_bc_cntr_3
(13*m -
1 downto 10*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_3
(10*m -
1 downto 0);
430 v_bc_mux_cntr_0 := out_bc_mux_cntr_0
(16*m -
1 downto 13*m
) &
"0000000" & out_bc_mux_cntr_0
(13*m -
1 downto 10*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_0
(10*m -
1 downto 0);
431 v_bc_mux_cntr_1 := out_bc_mux_cntr_1
(16*m -
1 downto 13*m
) &
"0000000" & out_bc_mux_cntr_1
(13*m -
1 downto 10*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_1
(10*m -
1 downto 0);
432 v_bc_mux_cntr_2 := out_bc_mux_cntr_2
(16*m -
1 downto 13*m
) &
"0000000" & out_bc_mux_cntr_2
(13*m -
1 downto 10*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_2
(10*m -
1 downto 0);
433 v_bc_mux_cntr_3 := out_bc_mux_cntr_3
(16*m -
1 downto 13*m
) &
"0000000" & out_bc_mux_cntr_3
(13*m -
1 downto 10*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_3
(10*m -
1 downto 0);
436 v_rxdata_mgt0 := out_rxdata_mgt0
(16*m -
1 downto 13*m
) & x"00000000" & out_rxdata_mgt0
(13*m -
1 downto 10*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt0
(10*m -
1 downto 0);
437 v_rxdata_mgt1 := out_rxdata_mgt1
(16*m -
1 downto 13*m
) & x"00000000" & out_rxdata_mgt1
(13*m -
1 downto 10*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt1
(10*m -
1 downto 0);
438 v_rxdata_mgt2 := out_rxdata_mgt2
(16*m -
1 downto 13*m
) & x"00000000" & out_rxdata_mgt2
(13*m -
1 downto 10*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt2
(10*m -
1 downto 0);
439 v_rxdata_mgt3 := out_rxdata_mgt3
(16*m -
1 downto 13*m
) & x"00000000" & out_rxdata_mgt3
(13*m -
1 downto 10*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt3
(10*m -
1 downto 0);
442 v_ram_data_mgt0 := in_ram_data_mgt0
(20*m -
1 downto 17*m
) & in_ram_data_mgt0
(16*m -
1 downto 13*m
) & in_ram_data_mgt0
(10*m -
1 downto 0);
443 v_ram_data_mgt1 := in_ram_data_mgt1
(20*m -
1 downto 17*m
) & in_ram_data_mgt1
(16*m -
1 downto 13*m
) & in_ram_data_mgt1
(10*m -
1 downto 0);
444 v_ram_data_mgt2 := in_ram_data_mgt2
(20*m -
1 downto 17*m
) & in_ram_data_mgt2
(16*m -
1 downto 13*m
) & in_ram_data_mgt2
(10*m -
1 downto 0);
445 v_ram_data_mgt3 := in_ram_data_mgt3
(20*m -
1 downto 17*m
) & in_ram_data_mgt3
(16*m -
1 downto 13*m
) & in_ram_data_mgt3
(10*m -
1 downto 0);
449 v_mgt_RXUSRCLK_OUT := in_mgt_RXUSRCLK_OUT
(20*m -
1 downto 17*m
) & in_mgt_RXUSRCLK_OUT
(16*m -
1 downto 13*m
) & in_mgt_RXUSRCLK_OUT
(10*m -
1 downto 0);
450 v_disperr_error := in_disperr_error
(20*m -
1 downto 17*m
) & in_disperr_error
(16*m -
1 downto 13*m
) & in_disperr_error
(10*m -
1 downto 0);
451 v_notable_error := in_notable_error
(20*m -
1 downto 17*m
) & in_notable_error
(16*m -
1 downto 13*m
) & in_notable_error
(10*m -
1 downto 0);
453 v_bcn_synch := out_bcn_synch
(16*m -
1 downto 13*m
) & x"0" & out_bcn_synch
(13*m -
1 downto 10*m
) & x"0_0_0" & out_bcn_synch
(10*m -
1 downto 0);
454 v_crc_error_chan := out_crc_error_chan
(16*m -
1 downto 13*m
) & x"0" & out_crc_error_chan
(13*m -
1 downto 10*m
) & x"0_0_0" & out_crc_error_chan
(10*m -
1 downto 0);
455 v_rx_resetdone := in_rx_resetdone
(20*m -
1 downto 17*m
) & in_rx_resetdone
(16*m -
1 downto 13*m
) & in_rx_resetdone
(10*m -
1 downto 0);
456 v_enable_mgt := in_enable_mgt
(20*m -
1 downto 17*m
) & in_enable_mgt
(16*m -
1 downto 13*m
) & in_enable_mgt
(10*m -
1 downto 0);
457 v_MGT_Commadet := in_MGT_Commadet
(20*m -
1 downto 17*m
) & in_MGT_Commadet
(16*m -
1 downto 13*m
) & in_MGT_Commadet
(10*m -
1 downto 0);
459 v_kchar := in_kchar
(20*m -
1 downto 17*m
) & in_kchar
(16*m -
1 downto 13*m
) & in_kchar
(10*m -
1 downto 0);
460 v_align_frame := in_align_frame
(20*m -
1 downto 17*m
) & in_align_frame
(16*m -
1 downto 13*m
) & in_align_frame
(10*m -
1 downto 0);
463 elsif fpga_number =
3 then
466 v_MGT_Data := in_MGT_Data
(20*m -
1 downto 14*m
) & in_MGT_Data
(13*m -
1 downto 5*m
) & in_MGT_Data
(2*m -
1 downto 0);
468 v_BC_Reg_sel := in_BC_Reg_sel
(20*m -
1 downto 14*m
) & in_BC_Reg_sel
(13*m -
1 downto 5*m
)& in_BC_Reg_sel
(2*m -
1 downto 0);
469 v_mux_sel := in_mux_sel
(20*m -
1 downto 14*m
) & in_mux_sel
(13*m -
1 downto 5*m
)& in_mux_sel
(2*m -
1 downto 0);
471 v_delay_num := out_delay_num
(16*m -
1 downto 10*m
) & x"0000" & out_delay_num
(10*m -
1 downto 2*m
) & x"0000_0000_0000" & out_delay_num
(2*m -
1 downto 0);
473 v_bc_cntr_0 := out_bc_cntr_0
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_cntr_0
(10*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_0
(2*m -
1 downto 0);
474 v_bc_cntr_1 := out_bc_cntr_1
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_cntr_1
(10*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_1
(2*m -
1 downto 0);
475 v_bc_cntr_2 := out_bc_cntr_2
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_cntr_2
(10*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_2
(2*m -
1 downto 0);
476 v_bc_cntr_3 := out_bc_cntr_3
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_cntr_3
(10*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_3
(2*m -
1 downto 0);
477 v_bc_mux_cntr_0 := out_bc_mux_cntr_0
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_mux_cntr_0
(10*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_0
(2*m -
1 downto 0);
478 v_bc_mux_cntr_1 := out_bc_mux_cntr_1
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_mux_cntr_1
(10*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_1
(2*m -
1 downto 0);
479 v_bc_mux_cntr_2 := out_bc_mux_cntr_2
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_mux_cntr_2
(10*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_2
(2*m -
1 downto 0);
480 v_bc_mux_cntr_3 := out_bc_mux_cntr_3
(16*m -
1 downto 10*m
) &
"0000000" & out_bc_mux_cntr_3
(10*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_3
(2*m -
1 downto 0);
483 v_rxdata_mgt0 := out_rxdata_mgt0
(16*m -
1 downto 10*m
) & x"00000000" & out_rxdata_mgt0
(10*m -
1 downto 2*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt0
(2*m -
1 downto 0);
484 v_rxdata_mgt1 := out_rxdata_mgt1
(16*m -
1 downto 10*m
) & x"00000000" & out_rxdata_mgt1
(10*m -
1 downto 2*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt1
(2*m -
1 downto 0);
485 v_rxdata_mgt2 := out_rxdata_mgt2
(16*m -
1 downto 10*m
) & x"00000000" & out_rxdata_mgt2
(10*m -
1 downto 2*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt2
(2*m -
1 downto 0);
486 v_rxdata_mgt3 := out_rxdata_mgt3
(16*m -
1 downto 10*m
) & x"00000000" & out_rxdata_mgt3
(10*m -
1 downto 2*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt3
(2*m -
1 downto 0);
489 v_ram_data_mgt0 := in_ram_data_mgt0
(20*m -
1 downto 14*m
) & in_ram_data_mgt0
(13*m -
1 downto 5*m
) & in_ram_data_mgt0
(2*m -
1 downto 0);
490 v_ram_data_mgt1 := in_ram_data_mgt1
(20*m -
1 downto 14*m
) & in_ram_data_mgt1
(13*m -
1 downto 5*m
) & in_ram_data_mgt1
(2*m -
1 downto 0);
491 v_ram_data_mgt2 := in_ram_data_mgt2
(20*m -
1 downto 14*m
) & in_ram_data_mgt2
(13*m -
1 downto 5*m
) & in_ram_data_mgt2
(2*m -
1 downto 0);
492 v_ram_data_mgt3 := in_ram_data_mgt3
(20*m -
1 downto 14*m
) & in_ram_data_mgt3
(13*m -
1 downto 5*m
) & in_ram_data_mgt3
(2*m -
1 downto 0);
495 v_mgt_RXUSRCLK_OUT := in_mgt_RXUSRCLK_OUT
(20*m -
1 downto 14*m
) & in_mgt_RXUSRCLK_OUT
(13*m -
1 downto 5*m
) & in_mgt_RXUSRCLK_OUT
(2*m -
1 downto 0);
496 v_disperr_error := in_disperr_error
(20*m -
1 downto 14*m
) & in_disperr_error
(13*m -
1 downto 5*m
) & in_disperr_error
(2*m -
1 downto 0);
497 v_notable_error := in_notable_error
(20*m -
1 downto 14*m
) & in_notable_error
(13*m -
1 downto 5*m
) & in_notable_error
(2*m -
1 downto 0);
499 v_bcn_synch := out_bcn_synch
(16*m -
1 downto 10*m
) & x"0" & out_bcn_synch
(10*m -
1 downto 2*m
) & x"0_0_0" & out_bcn_synch
(2*m -
1 downto 0);
500 v_crc_error_chan := out_crc_error_chan
(16*m -
1 downto 10*m
) & x"0" & out_crc_error_chan
(10*m -
1 downto 2*m
) & x"0_0_0" & out_crc_error_chan
(2*m -
1 downto 0);
501 v_rx_resetdone := in_rx_resetdone
(20*m -
1 downto 14*m
) & in_rx_resetdone
(13*m -
1 downto 5*m
) & in_rx_resetdone
(2*m -
1 downto 0);
503 v_enable_mgt := in_enable_mgt
(20*m -
1 downto 14*m
) & in_enable_mgt
(13*m -
1 downto 5*m
)&in_enable_mgt
(2*m -
1 downto 0);
504 v_MGT_Commadet := in_MGT_Commadet
(20*m -
1 downto 14*m
) & in_MGT_Commadet
(13*m -
1 downto 5*m
) & in_MGT_Commadet
(2*m -
1 downto 0);
506 v_kchar := in_kchar
(20*m -
1 downto 14*m
) & in_kchar
(13*m -
1 downto 5*m
) & in_kchar
(2*m -
1 downto 0);
507 v_align_frame := in_align_frame
(20*m -
1 downto 14*m
) & in_align_frame
(13*m -
1 downto 5*m
) & in_align_frame
(2*m -
1 downto 0);
510 elsif fpga_number =
4 then
512 v_MGT_Data := in_MGT_Data
(20*m -
1 downto 9*m
) & in_MGT_Data
(8*m -
1 downto 5*m
) & in_MGT_Data
(2*m -
1 downto 0);
514 v_BC_Reg_sel := in_BC_Reg_sel
(20*m -
1 downto 9*m
) & in_BC_Reg_sel
(8*m -
1 downto 5*m
) & in_BC_Reg_sel
(2*m -
1 downto 0);
515 v_mux_sel := in_mux_sel
(20*m -
1 downto 9*m
) & in_mux_sel
(8*m -
1 downto 5*m
) & in_mux_sel
(2*m -
1 downto 0);
517 v_delay_num := out_delay_num
(16*m -
1 downto 5*m
) & x"0000" & out_delay_num
(5*m -
1 downto 2*m
) & x"0000_0000_0000" & out_delay_num
(2*m -
1 downto 0);
519 v_bc_cntr_0 := out_bc_cntr_0
(16*m -
1 downto 5*m
) &
"0000000" & out_bc_cntr_0
(5*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_0
(2*m -
1 downto 0);
520 v_bc_cntr_1 := out_bc_cntr_1
(16*m -
1 downto 5*m
) &
"0000000" & out_bc_cntr_1
(5*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_1
(2*m -
1 downto 0);
521 v_bc_cntr_2 := out_bc_cntr_2
(16*m -
1 downto 5*m
) &
"0000000" & out_bc_cntr_2
(5*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_2
(2*m -
1 downto 0);
522 v_bc_cntr_3 := out_bc_cntr_3
(16*m -
1 downto 5*m
) &
"0000000" & out_bc_cntr_3
(5*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_cntr_3
(2*m -
1 downto 0);
523 v_bc_mux_cntr_0 := out_bc_mux_cntr_0
(16*m -
1 downto 5*m
) &
"0000000" & out_bc_mux_cntr_0
(5*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_0
(2*m -
1 downto 0);
524 v_bc_mux_cntr_1 := out_bc_mux_cntr_1
(16*m -
1 downto 5*m
) &
"0000000" & out_bc_mux_cntr_1
(5*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_1
(2*m -
1 downto 0);
525 v_bc_mux_cntr_2 := out_bc_mux_cntr_2
(16*m -
1 downto 5*m
) &
"0000000" & out_bc_mux_cntr_2
(5*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_2
(2*m -
1 downto 0);
526 v_bc_mux_cntr_3 := out_bc_mux_cntr_3
(16*m -
1 downto 5*m
) &
"0000000" & out_bc_mux_cntr_3
(5*m -
1 downto 2*m
) &
"0000000"&
"0000000"&
"0000000" & out_bc_mux_cntr_3
(2*m -
1 downto 0);
529 v_rxdata_mgt0 := out_rxdata_mgt0
(16*m -
1 downto 5*m
) & x"00000000" & out_rxdata_mgt0
(5*m -
1 downto 2*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt0
(2*m -
1 downto 0);
530 v_rxdata_mgt1 := out_rxdata_mgt1
(16*m -
1 downto 5*m
) & x"00000000" & out_rxdata_mgt1
(5*m -
1 downto 2*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt1
(2*m -
1 downto 0);
531 v_rxdata_mgt2 := out_rxdata_mgt2
(16*m -
1 downto 5*m
) & x"00000000" & out_rxdata_mgt2
(5*m -
1 downto 2*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt2
(2*m -
1 downto 0);
532 v_rxdata_mgt3 := out_rxdata_mgt3
(16*m -
1 downto 5*m
) & x"00000000" & out_rxdata_mgt3
(5*m -
1 downto 2*m
) & x"00000000_00000000_00000000" & out_rxdata_mgt3
(2*m -
1 downto 0);
535 v_ram_data_mgt0 := in_ram_data_mgt0
(20*m -
1 downto 9*m
) & in_ram_data_mgt0
(8*m -
1 downto 5*m
) & in_ram_data_mgt0
(2*m -
1 downto 0);
536 v_ram_data_mgt1 := in_ram_data_mgt1
(20*m -
1 downto 9*m
) & in_ram_data_mgt1
(8*m -
1 downto 5*m
) & in_ram_data_mgt1
(2*m -
1 downto 0);
537 v_ram_data_mgt2 := in_ram_data_mgt2
(20*m -
1 downto 9*m
) & in_ram_data_mgt2
(8*m -
1 downto 5*m
) & in_ram_data_mgt2
(2*m -
1 downto 0);
538 v_ram_data_mgt3 := in_ram_data_mgt3
(20*m -
1 downto 9*m
) & in_ram_data_mgt3
(8*m -
1 downto 5*m
) & in_ram_data_mgt3
(2*m -
1 downto 0);
541 v_mgt_RXUSRCLK_OUT := in_mgt_RXUSRCLK_OUT
(20*m -
1 downto 9*m
) & in_mgt_RXUSRCLK_OUT
(8*m -
1 downto 5*m
) & in_mgt_RXUSRCLK_OUT
(2*m -
1 downto 0);
542 v_disperr_error := in_disperr_error
(20*m -
1 downto 9*m
) & in_disperr_error
(8*m -
1 downto 5*m
) & in_disperr_error
(2*m -
1 downto 0);
543 v_notable_error := in_notable_error
(20*m -
1 downto 9*m
) & in_notable_error
(8*m -
1 downto 5*m
) & in_notable_error
(2*m -
1 downto 0);
545 v_bcn_synch := out_bcn_synch
(16*m -
1 downto 5*m
) & x"0" & out_bcn_synch
(5*m -
1 downto 2*m
) & x"0_0_0" & out_bcn_synch
(2*m -
1 downto 0);
546 v_crc_error_chan := out_crc_error_chan
(16*m -
1 downto 5*m
) & x"0" & out_crc_error_chan
(5*m -
1 downto 2*m
) & x"0_0_0" & out_crc_error_chan
(2*m -
1 downto 0);
548 v_rx_resetdone := in_rx_resetdone
(20*m -
1 downto 9*m
) & in_rx_resetdone
(8*m -
1 downto 5*m
) & in_rx_resetdone
(2*m -
1 downto 0);
550 v_enable_mgt := in_enable_mgt
(20*m -
1 downto 9*m
) & in_enable_mgt
(8*m -
1 downto 5*m
) & in_enable_mgt
(2*m -
1 downto 0);
551 v_MGT_Commadet := in_MGT_Commadet
(20*m -
1 downto 9*m
) & in_MGT_Commadet
(8*m -
1 downto 5*m
) & in_MGT_Commadet
(2*m -
1 downto 0);
553 v_kchar := in_kchar
(20*m -
1 downto 9*m
) & in_kchar
(8*m -
1 downto 5*m
) & in_kchar
(2*m -
1 downto 0);
554 v_align_frame := in_align_frame
(20*m -
1 downto 9*m
) & in_align_frame
(8*m -
1 downto 5*m
) & in_align_frame
(2*m -
1 downto 0);
558 out_BC_Reg_sel <= v_BC_Reg_sel;
559 out_mux_sel <= v_mux_sel;
560 in_delay_num <= v_delay_num;
561 in_bc_cntr_0 <= v_bc_cntr_0;
562 in_bc_cntr_1 <= v_bc_cntr_1;
563 in_bc_cntr_2 <= v_bc_cntr_2;
564 in_bc_cntr_3 <= v_bc_cntr_3;
565 in_bc_mux_cntr_0 <= v_bc_mux_cntr_0;
566 in_bc_mux_cntr_1 <= v_bc_mux_cntr_1;
567 in_bc_mux_cntr_2 <= v_bc_mux_cntr_2;
568 in_bc_mux_cntr_3 <= v_bc_mux_cntr_3;
569 out_mgt_RXUSRCLK_OUT <= v_mgt_RXUSRCLK_OUT;
570 out_enable_mgt <= v_enable_mgt;
571 in_bcn_synch <= v_bcn_synch;
572 in_crc_error_chan <= v_crc_error_chan;
573 out_disperr_error <= v_disperr_error;
574 out_notable_error <= v_notable_error;
575 out_rx_resetdone <= v_rx_resetdone;
576 out_MGT_Commadet <= v_MGT_Commadet;
577 out_MGT_Data <= v_MGT_Data;
579 in_rxdata_mgt0 <= v_rxdata_mgt0;
580 in_rxdata_mgt1 <= v_rxdata_mgt1;
581 in_rxdata_mgt2 <= v_rxdata_mgt2;
582 in_rxdata_mgt3 <= v_rxdata_mgt3;
584 out_kchar <= v_kchar;
585 out_align_frame <= v_align_frame;
587 out_ram_data_mgt0 <= v_ram_data_mgt0;
588 out_ram_data_mgt1 <= v_ram_data_mgt1;
589 out_ram_data_mgt2 <= v_ram_data_mgt2;
590 out_ram_data_mgt3 <= v_ram_data_mgt3;
596 procedure MGT_SELECTOR_TX (
597 signal fpga_number :
in integer;
599 signal in_mgt_usr_clk :
in std_logic_vector(
79 downto 0);
601 signal in_txdata_0 :
in std_logic_vector(
33 downto 0);
602 signal in_txdata_1 :
in std_logic_vector(
33 downto 0);
603 signal in_txdata_2 :
in std_logic_vector(
33 downto 0);
604 signal in_txdata_3 :
in std_logic_vector(
33 downto 0);
605 signal in_txdata_4 :
in std_logic_vector(
33 downto 0);
606 signal in_txdata_5 :
in std_logic_vector(
33 downto 0);
607 signal in_txdata_6 :
in std_logic_vector(
33 downto 0);
608 signal in_txdata_7 :
in std_logic_vector(
33 downto 0);
609 signal in_txdata_8 :
in std_logic_vector(
33 downto 0);
610 signal in_txdata_9 :
in std_logic_vector(
33 downto 0);
611 signal in_txdata_10 :
in std_logic_vector(
33 downto 0);
612 signal in_txdata_11 :
in std_logic_vector(
33 downto 0);
615 signal in_topo_k :
in std_logic;
616 signal in_raw_k :
in std_logic;
617 signal in_topo_data :
in std_logic_vector(
31 downto 0);
618 signal in_raw_data :
in std_logic_vector(
31 downto 0);
620 signal out_topo_tob_clk :
out std_logic;
621 signal out_topo_raw_clk :
out std_logic;
622 signal out_mgt_usr_clk :
out std_logic_vector(
11 downto 0);
624 signal out_txcharisk_quad_array :
out mgt_txcharisk_array(
19 downto 0);
625 signal out_txdata_quad_array :
out mgt_txdata_array(
19 downto 0)
629 variable v_txcharisk_quad_array : mgt_txcharisk_array
(19 downto 0) :=
(others => ZERO_MGT_TXCHARISK
);
630 variable v_txdata_quad_array : mgt_txdata_array
(19 downto 0) :=
(others => ZERO_MGT_TXDATA
);
632 variable v_topo_tob_clk :
std_logic := '
0';
633 variable v_topo_raw_clk :
std_logic := '
0';
634 variable v_mgt_usr_clk :
std_logic_vector(11 downto 0) :=
(others => '
0'
);
640 if fpga_number =
1 then --111,112,210(first 2 SLOW),211 (prototype)
641 v_txcharisk_quad_array
(10).gt0_txcharisk :=
"000"& in_topo_k;
642 v_txcharisk_quad_array
(10).gt1_txcharisk :=
"000"& in_raw_k;
644 v_txcharisk_quad_array
(11).gt0_txcharisk :=
"000"& in_txdata_0
(32);
645 v_txcharisk_quad_array
(11).gt1_txcharisk :=
"000"& in_txdata_1
(32);
646 v_txcharisk_quad_array
(11).gt2_txcharisk :=
"000"& in_txdata_2
(32);
647 v_txcharisk_quad_array
(11).gt3_txcharisk :=
"000"& in_txdata_3
(32);
648 v_txcharisk_quad_array
(12).gt0_txcharisk :=
"000"& in_txdata_4
(32);
649 v_txcharisk_quad_array
(12).gt1_txcharisk :=
"000"& in_txdata_5
(32);
650 v_txcharisk_quad_array
(12).gt2_txcharisk :=
"000"& in_txdata_6
(32);
651 v_txcharisk_quad_array
(12).gt3_txcharisk :=
"000"& in_txdata_7
(32);
652 v_txcharisk_quad_array
(13).gt0_txcharisk :=
"000"& in_txdata_8
(32);
653 v_txcharisk_quad_array
(13).gt1_txcharisk :=
"000"& in_txdata_9
(32);
654 v_txcharisk_quad_array
(13).gt2_txcharisk :=
"000"& in_txdata_10
(32);
655 v_txcharisk_quad_array
(13).gt3_txcharisk :=
"000"& in_txdata_11
(32);
657 v_txdata_quad_array
(10).gt0_txdata_in := in_topo_data;
658 v_txdata_quad_array
(10).gt1_txdata_in := in_raw_data;
660 v_txdata_quad_array
(11).gt0_txdata_in := in_txdata_0
(31 downto 0);
661 v_txdata_quad_array
(11).gt1_txdata_in := in_txdata_1
(31 downto 0);
662 v_txdata_quad_array
(11).gt2_txdata_in := in_txdata_2
(31 downto 0);
663 v_txdata_quad_array
(11).gt3_txdata_in := in_txdata_3
(31 downto 0);
664 v_txdata_quad_array
(12).gt0_txdata_in := in_txdata_4
(31 downto 0);
665 v_txdata_quad_array
(12).gt1_txdata_in := in_txdata_5
(31 downto 0);
666 v_txdata_quad_array
(12).gt2_txdata_in := in_txdata_6
(31 downto 0);
667 v_txdata_quad_array
(12).gt3_txdata_in := in_txdata_7
(31 downto 0);
668 v_txdata_quad_array
(13).gt0_txdata_in := in_txdata_8
(31 downto 0);
669 v_txdata_quad_array
(13).gt1_txdata_in := in_txdata_9
(31 downto 0);
670 v_txdata_quad_array
(13).gt2_txdata_in := in_txdata_10
(31 downto 0);
671 v_txdata_quad_array
(13).gt3_txdata_in := in_txdata_11
(31 downto 0);
673 v_topo_raw_clk := in_mgt_usr_clk
(41);
674 v_topo_tob_clk := in_mgt_usr_clk
(40);
676 v_mgt_usr_clk := in_mgt_usr_clk
(13*
4+
3 downto 13*
4) & in_mgt_usr_clk
(12*
4+
3 downto 12*
4) & in_mgt_usr_clk
(11*
4+
3 downto 11*
4);
678 elsif fpga_number =
2 then --210(first 2),217,218,219
681 v_txcharisk_quad_array
(10).gt0_txcharisk :=
"000"& in_topo_k;
682 v_txcharisk_quad_array
(10).gt1_txcharisk :=
"000"& in_raw_k;
684 v_txcharisk_quad_array
(17).gt0_txcharisk :=
"000"& in_txdata_0
(32);
685 v_txcharisk_quad_array
(17).gt1_txcharisk :=
"000"& in_txdata_1
(32);
686 v_txcharisk_quad_array
(17).gt2_txcharisk :=
"000"& in_txdata_2
(32);
687 v_txcharisk_quad_array
(17).gt3_txcharisk :=
"000"& in_txdata_3
(32);
689 v_txcharisk_quad_array
(18).gt0_txcharisk :=
"000"& in_txdata_4
(32);
690 v_txcharisk_quad_array
(18).gt1_txcharisk :=
"000"& in_txdata_5
(32);
691 v_txcharisk_quad_array
(18).gt2_txcharisk :=
"000"& in_txdata_6
(32);
692 v_txcharisk_quad_array
(18).gt3_txcharisk :=
"000"& in_txdata_7
(32);
693 v_txcharisk_quad_array
(19).gt0_txcharisk :=
"000"& in_txdata_8
(32);
694 v_txcharisk_quad_array
(19).gt1_txcharisk :=
"000"& in_txdata_9
(32);
695 v_txcharisk_quad_array
(19).gt2_txcharisk :=
"000"& in_txdata_10
(32);
696 v_txcharisk_quad_array
(19).gt3_txcharisk :=
"000"& in_txdata_11
(32);
698 v_txdata_quad_array
(10).gt0_txdata_in := in_topo_data;
699 v_txdata_quad_array
(10).gt1_txdata_in := in_raw_data;
701 v_txdata_quad_array
(17).gt0_txdata_in := in_txdata_0
(31 downto 0);
702 v_txdata_quad_array
(17).gt1_txdata_in := in_txdata_1
(31 downto 0);
703 v_txdata_quad_array
(17).gt2_txdata_in := in_txdata_2
(31 downto 0);
704 v_txdata_quad_array
(17).gt3_txdata_in := in_txdata_3
(31 downto 0);
705 v_txdata_quad_array
(18).gt0_txdata_in := in_txdata_4
(31 downto 0);
706 v_txdata_quad_array
(18).gt1_txdata_in := in_txdata_5
(31 downto 0);
707 v_txdata_quad_array
(18).gt2_txdata_in := in_txdata_6
(31 downto 0);
708 v_txdata_quad_array
(18).gt3_txdata_in := in_txdata_7
(31 downto 0);
709 v_txdata_quad_array
(19).gt0_txdata_in := in_txdata_8
(31 downto 0);
710 v_txdata_quad_array
(19).gt1_txdata_in := in_txdata_9
(31 downto 0);
711 v_txdata_quad_array
(19).gt2_txdata_in := in_txdata_10
(31 downto 0);
712 v_txdata_quad_array
(19).gt3_txdata_in := in_txdata_11
(31 downto 0);
714 v_topo_raw_clk := in_mgt_usr_clk
(41);
715 v_topo_tob_clk := in_mgt_usr_clk
(40);
717 v_mgt_usr_clk := in_mgt_usr_clk
(19*
4+
3 downto 19*
4) & in_mgt_usr_clk
(18*
4+
3 downto 18*
4) & in_mgt_usr_clk
(17*
4+
3 downto 17*
4);
719 elsif fpga_number =
3 then --first 2 MGTs of quad 213 (same as prototype)
720 v_txcharisk_quad_array
(13).gt0_txcharisk :=
"000"& in_topo_k;
721 v_txcharisk_quad_array
(13).gt1_txcharisk :=
"000"& in_raw_k;
723 v_txdata_quad_array
(13).gt0_txdata_in := in_topo_data;
724 v_txdata_quad_array
(13).gt1_txdata_in := in_raw_data;
726 v_mgt_usr_clk :=
(others => '
0'
);
727 v_topo_raw_clk := in_mgt_usr_clk
(53);
728 v_topo_tob_clk := in_mgt_usr_clk
(52);
730 elsif fpga_number =
4 then --first 2 MGTs of quad 118 (same as prototype
731 v_txcharisk_quad_array
(8).gt0_txcharisk :=
"000"& in_topo_k;
732 v_txcharisk_quad_array
(8).gt1_txcharisk :=
"000"& in_raw_k;
734 v_txdata_quad_array
(8).gt0_txdata_in := in_topo_data;
735 v_txdata_quad_array
(8).gt1_txdata_in := in_raw_data;
737 v_mgt_usr_clk :=
(others => '
0'
);
738 v_topo_raw_clk := in_mgt_usr_clk
(33);
739 v_topo_tob_clk := in_mgt_usr_clk
(32);
743 v_mgt_usr_clk :=
(others => '
0'
);
746 out_txcharisk_quad_array <= v_txcharisk_quad_array;
747 out_txdata_quad_array <= v_txdata_quad_array;
748 out_topo_tob_clk <= v_topo_tob_clk;
749 out_topo_raw_clk <= v_topo_raw_clk;
750 out_mgt_usr_clk <= v_mgt_usr_clk;
756 function xadc_reg48(fpga_number :
in integer)
return bit_vector is
757 variable init_reg48:
bit_vector(15 downto 0);
759 if fpga_number =
1 or fpga_number =
2 then
760 init_reg48 := x"4701";
761 elsif fpga_number =
3 or fpga_number =
4 then
762 init_reg48 := x"4f01";
764 init_reg48 := x"4f01";
767 end function xadc_reg48;
769 function xadc_reg49(fpga_number :
in integer)
return bit_vector is
770 variable init_reg49:
bit_vector(15 downto 0);
772 if fpga_number =
1 or fpga_number =
2 then
773 init_reg49 := x"0000";
774 elsif fpga_number =
3 or fpga_number =
4 then
775 init_reg49 := x"0001";
777 init_reg49 := x"050f";
780 end function xadc_reg49;
785 end ProcessorFPGAPackage;