lpgbtfpga_uplink.vhd
Go to the documentation of this file.
1 -------------------------------------------------------
6 -------------------------------------------------------
7 
9 LIBRARY ieee;
10 USE ieee.std_logic_1164.all;
11 
13 USE work.lpgbtfpga_package.all;
14 
21  GENERIC(
22  -- General configuration
23  DATARATE : integer RANGE 0 to 2;
24  FEC : integer RANGE 0 to 2;
25 
26  -- Expert parameters
27  c_multicyleDelay : integer RANGE 0 to 7 := 3;
28  c_clockRatio : integer;
29  c_mgtWordWidth : integer;
33  c_bitslip_mindly : integer := 1;
34  c_bitslip_waitdly : integer := 40
35  );
36  PORT (
37  -- Clock and reset
38  uplinkClk_i : in std_logic;
39  uplinkClkOutEn_o : out std_logic;
40  uplinkRst_n_i : in std_logic;
41 
42  -- Input
43  mgt_word_i : in std_logic_vector((c_mgtWordWidth-1) downto 0);
44 
45  -- Data
46  userData_o : out std_logic_vector(229 downto 0);
52  EcData_o : out std_logic_vector(1 downto 0);
53  IcData_o : out std_logic_vector(1 downto 0);
54 
55  -- Control
56  bypassInterleaver_i : in std_logic;
57  bypassFECEncoder_i : in std_logic;
58  bypassScrambler_i : in std_logic;
59 
60  -- Transceiver control
61  mgt_bitslipCtrl_o : out std_logic;
62 
63  -- Status
64  dataCorrected_o : out std_logic_vector(229 downto 0);
65  IcCorrected_o : out std_logic_vector(1 downto 0);
66  EcCorrected_o : out std_logic_vector(1 downto 0);
67  rdy_o : out std_logic;
68  frameAlignerEven_o : out std_logic
69 
70  );
71 END lpgbtfpga_uplink;
72 
82 ARCHITECTURE behavioral OF lpgbtfpga_uplink IS
83 
85  GENERIC (
86  c_wordRatio : integer;
87  c_wordSize : integer;
88  c_headerPattern : std_logic_vector;
89  c_allowedFalseHeader : integer;
90  c_allowedFalseHeaderOverN : integer;
91  c_requiredTrueHeader : integer;
92 
93  c_bitslip_mindly : integer := 1;
94  c_bitslip_waitdly : integer := 40
95  );
96  PORT (
97  -- Clock(s)
98  clk_pcsRx_i : in std_logic;
99 
100  -- Reset(s)
101  rst_pattsearch_i : in std_logic;
102 
103  -- Control
104  cmd_bitslipCtrl_o : out std_logic;
105 
106  -- Status
107  sta_headerLocked_o : out std_logic;
108  sta_headerFlag_o : out std_logic;
109  sta_bitSlipEven_o : out std_logic;
110 
111  -- Data
112  dat_word_i : in std_logic_vector(c_headerPattern'length-1 downto 0)
113  );
114  END COMPONENT;
115 
117  GENERIC (
118  c_clockRatio : integer;
119  c_inputWidth : integer;
120  c_outputWidth : integer;
121  c_counterInitValue : integer := 2
122  );
123  PORT (
124  -- Clock and reset
125  clk_inClk_i : in std_logic;
126  clk_outClk_i : in std_logic;
127  clk_clkEn_i : in std_logic;
128  clk_dataFlag_o : out std_logic;
129 
130  rst_gearbox_i : in std_logic;
131 
132  -- Data
133  dat_inFrame_i : in std_logic_vector((c_inputWidth-1) downto 0);
134  dat_outFrame_o : out std_logic_vector((c_inputWidth*c_clockRatio)-1 downto 0);
135 
136  -- Status
137  sta_gbRdy_o : out std_logic
138  );
139  END COMPONENT;
140 
143  GENERIC(
144  DATARATE : integer RANGE 0 to 2;
145  FEC : integer RANGE 0 to 2
146  );
147  PORT (
148  -- Data
149  data_i : in std_logic_vector(255 downto 0);
150 
151  fec5_data_o : out std_logic_vector(233 downto 0);
152  fec5_fec_o : out std_logic_vector(19 downto 0);
153  fec12_data_o : out std_logic_vector(205 downto 0);
154  fec12_fec_o : out std_logic_vector(47 downto 0);
155 
156  -- Control
157  bypass : in std_logic
158  );
159  END COMPONENT;
160 
163  GENERIC(
164  DATARATE : integer RANGE 0 to 2;
165  FEC : integer RANGE 0 to 2
166  );
167  PORT (
168  uplinkClk_i : in std_logic;
169  uplinkClkOutEn_i : in std_logic;
170  -- Data
171  fec5_data_i : in std_logic_vector(233 downto 0);
172  fec5_fec_i : in std_logic_vector(19 downto 0);
173  fec12_data_i : in std_logic_vector(205 downto 0);
174  fec12_fec_i : in std_logic_vector(47 downto 0);
175 
176  fec5_data_o : out std_logic_vector(233 downto 0);
177  fec12_data_o : out std_logic_vector(205 downto 0);
178 
179  fec5_correction_pattern_o : out std_logic_vector(233 downto 0);
180  fec12_correction_pattern_o : out std_logic_vector(205 downto 0);
181 
182  -- Control
183  bypass : in std_logic
184  );
185  END COMPONENT;
188  GENERIC(
189  FEC : integer RANGE 0 to 2
190  );
191  PORT (
192  -- Clock and reset
193  clk_i : in std_logic;
194  clkEn_i : in std_logic;
195 
196  reset_i : in std_logic;
197 
198  -- Data
199  fec5_data_i : in std_logic_vector(233 downto 0);
200  fec12_data_i : in std_logic_vector(205 downto 0);
201 
202  fec5_data_o : out std_logic_vector(233 downto 0);
203  fec12_data_o : out std_logic_vector(205 downto 0);
204 
205  -- Control
206  bypass : in std_logic
207  );
208  END COMPONENT;
209 
210  attribute keep : string;
211 
212  SIGNAL sta_headerFlag_s : std_logic;
213  SIGNAL sta_dataflag_s : std_logic;
214  SIGNAL rst_gearbox_s : std_logic;
215  SIGNAL sta_headerLocked_s : std_logic;
216 
217  SIGNAL gbxFrame_s : std_logic_vector(255 downto 0);
218  SIGNAL gbxFrame_5g12_s : std_logic_vector(127 downto 0);
219 
220  SIGNAL sta_gbRdy_s : std_logic;
221  SIGNAL rst_pattsearch_s : std_logic;
222  SIGNAL datapath_rst_s : std_logic;
223 
224  SIGNAL fec5_data_from_deinterleaver_s : std_logic_vector(233 downto 0);
225  SIGNAL fec5_fec_from_deinterleaver_s : std_logic_vector(19 downto 0);
226  SIGNAL fec12_data_from_deinterleaver_s : std_logic_vector(205 downto 0);
227  SIGNAL fec12_fec_from_deinterleaver_s : std_logic_vector(47 downto 0);
228 
229  SIGNAL fec5_data_from_decoder_s : std_logic_vector(233 downto 0);
230  SIGNAL fec12_data_from_decoder_s : std_logic_vector(205 downto 0);
231 
232  SIGNAL fec5_data_from_descrambler_s : std_logic_vector(233 downto 0);
233  SIGNAL fec12_data_from_descrambler_s : std_logic_vector(205 downto 0);
234 
235  SIGNAL fec5_correction_s : std_logic_vector(233 downto 0);
236  SIGNAL fec12_correction_s : std_logic_vector(205 downto 0);
237 
238  SIGNAL rdy_0_s : std_logic;
239  SIGNAL rdy_1_s : std_logic;
240 
241  SIGNAL UserData_10g24_s : std_logic_vector(229 downto 0);
242  SIGNAL EcData_10g24_s : std_logic_vector(1 downto 0);
243  SIGNAL IcData_10g24_s : std_logic_vector(1 downto 0);
244 
245  SIGNAL UserData_5g12_s : std_logic_vector(229 downto 0);
246  SIGNAL EcData_5g12_s : std_logic_vector(1 downto 0);
247  SIGNAL IcData_5g12_s : std_logic_vector(1 downto 0);
248 
249  SIGNAL uplinkCorrData_10g24_s : std_logic_vector(229 downto 0);
250  SIGNAL uplinkCorrEc_10g24_s : std_logic_vector(1 downto 0);
251  SIGNAL uplinkCorrIc_10g24_s : std_logic_vector(1 downto 0);
252 
253  SIGNAL uplinkCorrData_5g12_s : std_logic_vector(229 downto 0);
254  SIGNAL uplinkCorrEc_5g12_s : std_logic_vector(1 downto 0);
255  SIGNAL uplinkCorrIc_5g12_s : std_logic_vector(1 downto 0);
256 
257  SIGNAL frame_pipelined_s : std_logic_vector(255 downto 0);
258  attribute keep of frame_pipelined_s : signal is "true";
259 
260  SIGNAL clkEnOut_s : std_logic;
261  SIGNAL rst_synch_s : std_logic;
262 
263 BEGIN --========#### Architecture Body ####========--
264 
265  rst_pattsearch_s <= not(uplinkRst_n_i);
266 
267  -- lpgbtfpga_framealigner is used to align the input frame using the
268  -- lpGBT header.
269  lpgbtfpga_framealigner_inst: lpgbtfpga_framealigner
270  GENERIC MAP(
273  c_headerPattern => "01",
277 
280  )
281  PORT MAP(
282  -- Clock(s)
284 
285  -- Reset(s)
286  rst_pattsearch_i => rst_pattsearch_s ,
287 
288  -- Control
290 
291  -- Status
292  sta_headerLocked_o => sta_headerLocked_s,
293  sta_headerFlag_o => sta_headerFlag_s ,
295 
296  -- Data
297  dat_word_i => mgt_word_i(1 downto 0)
298  );
299 
300  rst_gearbox_s <= not(sta_headerLocked_s);
301 
302  -- lpgbtfpga_rxGearbox is used to pass from mgt word size (e.g.: 32b @ 320MHz)
303  -- to lpgbt frame size (e.g.: 256b at 40MHz)
304  rxgearbox_10g_gen: IF DATARATE = DATARATE_10G24 GENERATE
305  rxGearbox_10g24_inst: lpgbtfpga_rxGearbox
306  GENERIC MAP(
309  c_outputWidth => 256,
310  c_counterInitValue => 2
311  )
312  PORT MAP(
313  -- Clock and reset
316  clk_clkEn_i => sta_headerFlag_s ,
317  clk_dataFlag_o => sta_dataflag_s,
318 
319  rst_gearbox_i => rst_gearbox_s,
320 
321  -- Data
323  dat_outFrame_o => gbxFrame_s,
324 
325  -- Status
326  sta_gbRdy_o => sta_gbRdy_s
327  );
328  END GENERATE;
329 
330  rxgearbox_5g_gen: IF DATARATE = DATARATE_5G12 GENERATE
331  rxGearbox_5g12_inst: lpgbtfpga_rxGearbox
332  GENERIC MAP(
335  c_outputWidth => 128,
336  c_counterInitValue => 2
337  )
338  PORT MAP(
339  -- Clock and reset
342  clk_clkEn_i => sta_headerFlag_s ,
343  clk_dataFlag_o => sta_dataflag_s,
344 
345  rst_gearbox_i => rst_gearbox_s,
346 
347  -- Data
349  dat_outFrame_o => gbxFrame_5g12_s,
350 
351  -- Status
352  sta_gbRdy_o => sta_gbRdy_s
353  );
354 
355  gbxFrame_s(127 downto 0) <= gbxFrame_5g12_s;
356  gbxFrame_s(255 downto 128) <= (OTHERS => '0');
357 
358  END GENERATE;
359 
360  datapath_rst_s <= not(sta_gbRdy_s);
361 
363  dataInPipeliner_proc: PROCESS(uplinkClk_i, datapath_rst_s)
364  BEGIN
365  IF datapath_rst_s = '1' THEN
366  frame_pipelined_s <= (OTHERS => '0');
367  ELSIF rising_edge(uplinkClk_i) THEN
368  IF sta_dataflag_s = '1' THEN
369  frame_pipelined_s <= gbxFrame_s;
370  END IF;
371  END IF;
372  END PROCESS;
373 
374 
376  syncShIFtReg_proc: PROCESS(datapath_rst_s, uplinkClk_i)
377  VARIABLE cnter : integer RANGE 0 TO 7;
378  BEGIN
379 
380  IF datapath_rst_s = '1' THEN
381  cnter := 0;
382  clkEnOut_s <= '0';
383 
384  ELSIF rising_edge(uplinkClk_i) THEN
385  IF sta_dataflag_s = '1' THEN
386  cnter := 0;
387  rst_synch_s <= '1';
388  ELSIF rst_synch_s = '1' THEN
389  if(cnter < 7) then
390  cnter := cnter + 1;
391  else
392  cnter := 0;
393  end if;
394  END IF;
395 
396  clkEnOut_s <= '0';
397  IF cnter = c_multicyleDelay THEN
398  clkEnOut_s <= '1';
399  END IF;
400  END IF;
401  END PROCESS;
402 
403  uplinkClkOutEn_o <= clkEnOut_s;
404 
405  -- lpgbtfpga_deinterleaver deinterleaves the input frame
406  lpgbtfpga_deinterleaver_inst: lpgbtfpga_deinterleaver
407  GENERIC MAP(
408  DATARATE => DATARATE,
409  FEC => FEC
410  )
411  PORT MAP (
412  -- Data
414 
419 
420  -- Control
422  );
423 
424  -- lpgbtfpga_decoder decodes the input frame and corrects the error(s) using the FEC part
425  -- of the frame
426  lpgbtfpga_decoder_inst: lpgbtfpga_decoder
427  GENERIC MAP(
428  DATARATE => DATARATE,
429  FEC => FEC
430  )
431  PORT MAP (
432  uplinkClk_i => uplinkClk_i,
433  uplinkClkOutEn_i => clkEnOut_s,
434 
435  -- Data
440 
443 
444  fec5_correction_pattern_o => fec5_correction_s ,
445  fec12_correction_pattern_o => fec12_correction_s,
446 
447  -- Control
449  );
450 
451  -- lpgbtfpga_descrambler descrambles the input frame
452  lpgbtfpga_descrambler_inst: lpgbtfpga_descrambler
453  GENERIC MAP(
454  FEC => FEC
455  )
456  PORT MAP(
457  -- Clock and reset
458  clk_i => uplinkClk_i,
459  clkEn_i => clkEnOut_s,
460 
461  reset_i => datapath_rst_s,
462 
463  -- Data
466 
469 
470  -- Control
472  );
473 
475  readySync_proc: PROCESS(uplinkClk_i, datapath_rst_s)
476  BEGIN
477 
478  IF datapath_rst_s = '1' THEN
479  rdy_1_s <= '0';
480  rdy_0_s <= '0';
481  rdy_o <= '0';
482 
483  ELSIF rising_edge(uplinkClk_i) THEN
484 
485  IF clkEnOut_s = '1' THEN
486  rdy_o <= rdy_1_s;
487  rdy_1_s <= rdy_0_s;
488  rdy_0_s <= '1';
489  END IF;
490 
491  END IF;
492  END PROCESS;
493 
494  -- Routes data depending on the datarate and FEC configurations
495  UserData_10g24_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
496  fec5_data_from_descrambler_s(229 downto 0) WHEN (FEC = FEC5) ELSE
497  "0000000000000000000000000000" & fec12_data_from_descrambler_s(201 downto 0);
498 
499  EcData_10g24_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
500  fec5_data_from_descrambler_s(231 downto 230) WHEN (FEC = FEC5) ELSE
501  fec12_data_from_descrambler_s(203 downto 202);
502 
503  IcData_10g24_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
504  fec5_data_from_descrambler_s(233 downto 232) WHEN (FEC = FEC5) ELSE
505  fec12_data_from_descrambler_s(205 downto 204);
506 
507  UserData_5g12_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
508  x"00000000000000000000000000000" & "00" & fec5_data_from_descrambler_s(111 downto 0) WHEN (FEC = FEC5) ELSE
509  x"000000000000000000000000000000000" & fec12_data_from_descrambler_s(97 downto 0);
510 
511  EcData_5g12_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
512  fec5_data_from_descrambler_s(113 downto 112) WHEN (FEC = FEC5) ELSE
513  fec12_data_from_descrambler_s(99 downto 98);
514 
515  IcData_5g12_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
516  fec5_data_from_descrambler_s(115 downto 114) WHEN (FEC = FEC5) ELSE
517  fec12_data_from_descrambler_s(101 downto 100);
518 
519 
520  userData_o <= UserData_10g24_s WHEN (DATARATE = DATARATE_10G24) ELSE
522 
523  EcData_o <= EcData_10g24_s WHEN (DATARATE = DATARATE_10G24) ELSE
525 
526  IcData_o <= IcData_10g24_s WHEN (DATARATE = DATARATE_10G24) ELSE
528 
529  uplinkCorrData_10g24_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
530  fec5_correction_s(229 downto 0) WHEN (FEC = FEC5) ELSE
531  "0000000000000000000000000000" & fec12_correction_s(201 downto 0);
532 
533  uplinkCorrEc_10g24_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
534  fec5_correction_s(231 downto 230) WHEN (FEC = FEC5) ELSE
535  fec12_correction_s(203 downto 202);
536 
537  uplinkCorrIc_10g24_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
538  fec5_correction_s(233 downto 232) WHEN (FEC = FEC5) ELSE
539  fec12_correction_s(205 downto 204);
540 
541  uplinkCorrData_5g12_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
542  x"00000000000000000000000000000" & "00" & fec5_correction_s(111 downto 0) WHEN (FEC = FEC5) ELSE
543  x"000000000000000000000000000000000" & fec12_correction_s(97 downto 0);
544 
545  uplinkCorrEc_5g12_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
546  fec5_correction_s(113 downto 112) WHEN (FEC = FEC5) ELSE
547  fec12_correction_s(99 downto 98);
548 
549  uplinkCorrIc_5g12_s <= (OTHERS => '0') WHEN rdy_1_s = '0' ELSE
550  fec5_correction_s(115 downto 114) WHEN (FEC = FEC5) ELSE
551  fec12_correction_s(101 downto 100);
552 
553  dataCorrected_o <= uplinkCorrData_10g24_s WHEN (DATARATE = DATARATE_10G24) ELSE
555 
556  EcCorrected_o <= uplinkCorrEc_10g24_s WHEN (DATARATE = DATARATE_10G24) ELSE
558 
559  IcCorrected_o <= uplinkCorrIc_10g24_s WHEN (DATARATE = DATARATE_10G24) ELSE
561 END behavioral;
562 --=================================================================================================--
563 --#################################################################################################--
564 --=================================================================================================--
c_headerPatternstd_logic_vector%
Header pattern specified by the standard.
c_bitslip_mindlyinteger%:=1
Number of clock cycle required WHEN asserting the bitslip SIGNAL.
out fec5_fec_ostd_logic_vector%(%19%%%downto%%%0%)
Output FEC for FEC5 encoding (data is duplicated in upper/lower part of the frame @5...
in rst_pattsearch_istd_logic%
Rst the pattern search state machines.
in bypassstd_logic%
Bypass uplink scrambler (test purpose only)
out dat_outFrame_ostd_logic_vector%(%(c_inputWidth%*%c_clockRatio)%-%1%%%downto%%%0%)
Output data, concatenation of word WHEN the word ratio is lower than clock ration (e...
out fec12_fec_ostd_logic_vector%(%47%%%downto%%%0%)
Output FEC for FEC12 encoding (data is duplicated in upper/lower part of the frame @5...
c_wordRatiointeger%
Word ration: frameclock / mgt_wordclock.
in rst_gearbox_istd_logic%
Reset SIGNAL.
c_bitslip_waitdlyinteger%:=40
Number of clock cycle required before being back in a stable state.
in data_istd_logic_vector%(%255%%%downto%%%0%)
Input frame from the Rx gearbox (data shall be duplicated in upper/lower part of the frame @5...
out fec5_data_ostd_logic_vector%(%233%%%downto%%%0%)
FEC5 User data output (descrambled)
c_clockRatiointeger%
Clock ratio is clock_out / clock_in (shall be an integer)
lpgbtfpga_framealigner - MGT word aligner (Pattern search)
in clk_clkEn_istd_logic%
Clock enable (e.g.: header flag)
lpgbtfpga_descrambler - Uplink descrambler
c_outputWidthinteger%
Bus size of the output word (Warning: c_clockRatio/(c_inputWidth/c_outputWidth) shall be an integer) ...
in fec12_data_istd_logic_vector%(%205%%%downto%%%0%)
FEC12 User data input from decoder (scrambled)
FECinteger%range%0%%%to%%%2
FEC selection can be: FEC5 or FEC12.
in bypassstd_logic%
Bypass uplink FEC (test purpose only)
out fec12_data_ostd_logic_vector%(%205%%%downto%%%0%)
FEC12 User data output (descrambled)
in clk_istd_logic%
Input clock USEd to decode the received data.
lpgbtfpga_decoder - Uplink FEC decoder
DATARATEinteger%range%0%%%to%%%2
Datarate selection can be: DATARATE_10G24 or DATARATE_5G12.
c_wordSizeinteger%
Size of the mgt word.
c_allowedFalseHeaderOverNinteger%
Number of header checked to know wether the lock is lost or not.
out sta_bitSlipEven_ostd_logic%
Status: number of bit slips is even.
in fec5_fec_istd_logic_vector%(%19%%%downto%%%0%)
FEC input from de-interleaver for FEC5 decoding (redundant on upper/lower part of the bus @5...
FECinteger%range%0%%%to%%%2
FEC selection can be: FEC5 or FEC12.
lpgbtfpga_deinterleaver - Uplink data de-interleaver
in dat_inFrame_istd_logic_vector%(%(c_inputWidth%-%1)%%%downto%%%0%)
Input data from MGT.
c_allowedFalseHeaderinteger%
Number of false header allowed to avoid unlock on frame error.
in clkEn_istd_logic%
Clock enable USEd WHEN the input clock is different from 40MHz.
out sta_headerFlag_ostd_logic%
Status: header flag (1 pulse over c_wordRatio)
in bypassstd_logic%
Bypass uplink interleaver (test purpose only)
in reset_istd_logic%
Uplink datapath&#39;s reset SIGNAL.
in fec5_data_istd_logic_vector%(%233%%%downto%%%0%)
Data input from de-interleaver for FEC5 decoding (redundant on upper/lower part of the bus @5...
DATARATEinteger%range%0%%%to%%%2
Datarate selection can be: DATARATE_10G24 or DATARATE_5G12.
in clk_inClk_istd_logic%
Input clock (from MGT)
in clk_outClk_istd_logic%
Output clock (from MGT)
c_inputWidthinteger%
Bus size of the input word.
out fec12_data_ostd_logic_vector%(%205%%%downto%%%0%)
Data output for FEC12 decoding (redundant on upper/lower part of the bus @5.12Gbps) ...
c_requiredTrueHeaderinteger%
Number of true header required to go in locked state.
in dat_word_istd_logic_vector%(%c_headerPattern'%length%-%1%%%downto%%%0%)
Header bits from the MGT word (compared with c_headerPattern)
c_counterInitValueinteger%:=2
Initialization value of the gearbox counter (3 for simulation / 2 for real HW)
FECinteger%range%0%%%to%%%2
FEC selection can be: FEC5 or FEC12.
lpgbtfpga_rxGearbox - Rx Gearbox
in fec5_data_istd_logic_vector%(%233%%%downto%%%0%)
FEC5 User data input from decoder (scrambled)
out fec12_data_ostd_logic_vector%(%205%%%downto%%%0%)
Output data for FEC12 encoding (data is duplicated in upper/lower part of the frame @5...
out cmd_bitslipCtrl_ostd_logic%
Bitslip SIGNAL to shift the parrallel word.
in fec12_data_istd_logic_vector%(%205%%%downto%%%0%)
Data input from de-interleaver for FEC12 decoding (redundant on upper/lower part of the bus @5...
in fec12_fec_istd_logic_vector%(%47%%%downto%%%0%)
FEC input from de-interleaver for FEC12 decoding (redundant on upper/lower part of the bus @5...
out sta_headerLocked_ostd_logic%
Status: header is locked.
out fec5_data_ostd_logic_vector%(%233%%%downto%%%0%)
Output data for FEC5 encoding (data is duplicated in upper/lower part of the frame @5...
out fec5_data_ostd_logic_vector%(%233%%%downto%%%0%)
Data output for FEC5 decoding (redundant on upper/lower part of the bus @5.12Gbps) ...
out sta_gbRdy_ostd_logic%
Ready SIGNAL.
in clk_pcsRx_istd_logic%
MGT Wordclock.