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