Skip to content

BitSlip FSM issue: cmd_bitslipDone_s never set to '0'

In the Frame aligner FSM, the cmd_bitslipDone_s bit is never set to '0'. Therefore, the framealigner is always checking the header and could skip some position resulting in a really long locking delay.

Therefore, mgt_frameAligner code must be changed from:

when e0_idle =>   cmd_bitslipDone_s <= '1';
                
                  if bitSlipCmd_s = '1' then
                      stateBitSlip       <= e4_doBitslip;
                      timer              := 0;
                      cmd_bitslipDone_s  <= '1';
                  end if;

to:

when e0_idle =>   cmd_bitslipDone_s <= '1';
                
                  if bitSlipCmd_s = '1' then
                      stateBitSlip       <= e4_doBitslip;
                      timer              := 0;
                      cmd_bitslipDone_s  <= '0';
                  end if;

Code: https://gitlab.cern.ch/gbt-fpga/lpgbt-fpga/blob/master/mgtFrameAligner/mgt_frameAligner.vhd#L119

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information