This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

66AK2H14: 10Gb Serdes Rx calibration

Part Number: 66AK2H14

Hi 

My question is about the 10Gb Serdes Rx behaviour during operational mission over time when Tx partner waveform characteristics change

  • Are the Rx ATT and Rx ATT_BOOST parameters continuously adjusted or do we need to periodically force Rx re-calibration to account for input waveform modications(e.g due to temperature gradients -40/+70°C, or Tx tap cursor modifications,  modifying Tx partner characteristics)

  • The same question actually applies to all other parameters of the Rx channel, particularly DFE coefficients ?

  • Is there a register configuration to setup in order to enable automatic and continuous re-calibration ? 

With best regards,

Bruno

  • Bruno,

    For 66AK2H14 processor device, support on 10Gb serdes is very limited.

    In processor SDK 6.3, cpsw_mgmt.c, the initialization function of serdes is given,  "Init_SGMII_SERDES()". 

    This file is part of "Packet accelerator" example - "PA_emacExample_K2HArmBiosExampleProject".

    1. Link to download processor SDK 6.3:- PROCESSOR-SDK-RTOS-K2HK  06_03_00_106
    https://software-dl.ti.com/processor-sdk-rtos/esd/K2HK/latest/index_FDS.html

    This function has all the required register configuration settings including RX ATT and ATT_BOOST etc.

    Extract from the function:-

    for(i=0; i< serdes_lane_enable_params1.num_lanes; i++)
    {
    serdes_lane_enable_params1.lane_ctrl_rate[i] = CSL_SERDES_LANE_QUARTER_RATE;
    serdes_lane_enable_params1.loopback_mode[i] = lpbk_mode;

    /* When RX auto adaptation is on, these are the starting values used for att, boost adaptation */
    serdes_lane_enable_params1.rx_coeff.att_start[i] = 7;
    serdes_lane_enable_params1.rx_coeff.boost_start[i] = 5;

    /* For higher speeds PHY-A, force attenuation and boost values */
    serdes_lane_enable_params1.rx_coeff.force_att_val[i] = 1;
    serdes_lane_enable_params1.rx_coeff.force_boost_val[i] = 1;

    /* CM, C1, C2 are obtained through Serdes Diagnostic BER test */
    serdes_lane_enable_params1.tx_coeff.cm_coeff[i] = 0;
    serdes_lane_enable_params1.tx_coeff.c1_coeff[i] = 0;
    serdes_lane_enable_params1.tx_coeff.c2_coeff[i] = 0;
    serdes_lane_enable_params1.tx_coeff.tx_att[i] = 12;
    serdes_lane_enable_params1.tx_coeff.tx_vreg[i] = 4;
    }
    /* if the system has 4 lanes, lane mask = 0xF. If the system has 2 lanes, lane mask = 0x3 etc */
    serdes_lane_enable_params1.lane_mask = (1 << serdes_lane_enable_params1.num_lanes) - 1;;
    serdes_lane_enable_params1.operating_mode = CSL_SERDES_FUNCTIONAL_MODE;

    serdes_lane_enable_params2.base_addr = CSL_CSISC2_3_SERDES_CFG_REGS;
    serdes_lane_enable_params2.ref_clock = CSL_SERDES_REF_CLOCK_156p25M;
    serdes_lane_enable_params2.linkrate = CSL_SERDES_LINK_RATE_1p25G;
    serdes_lane_enable_params2.num_lanes = numPort2;
    serdes_lane_enable_params2.phy_type = SERDES_SGMII;
    serdes_lane_enable_params2.forceattboost = CSL_SERDES_FORCE_ATT_BOOST_DISABLED;

    for(i=0; i< serdes_lane_enable_params2.num_lanes; i++)
    {
    serdes_lane_enable_params2.lane_ctrl_rate[i] = CSL_SERDES_LANE_QUARTER_RATE;
    serdes_lane_enable_params2.loopback_mode[i] = lpbk_mode;

    /* When RX auto adaptation is on, these are the starting values used for att, boost adaptation */
    serdes_lane_enable_params2.rx_coeff.att_start[i] = 7;
    serdes_lane_enable_params2.rx_coeff.boost_start[i] = 5;

    /* For higher speeds PHY-A, force attenuation and boost values */
    serdes_lane_enable_params2.rx_coeff.force_att_val[i] = 1;
    serdes_lane_enable_params2.rx_coeff.force_boost_val[i] = 1;

    /* CM, C1, C2 are obtained through Serdes Diagnostic BER test */
    serdes_lane_enable_params2.tx_coeff.cm_coeff[i] = 0;
    serdes_lane_enable_params2.tx_coeff.c1_coeff[i] = 0;
    serdes_lane_enable_params2.tx_coeff.c2_coeff[i] = 0;
    serdes_lane_enable_params2.tx_coeff.tx_att[i] = 12;
    serdes_lane_enable_params2.tx_coeff.tx_vreg[i] = 4;
    }
    /* if the system has 4 lanes, lane mask = 0xF. If the system has 2 lanes, lane mask = 0x3 etc */
    serdes_lane_enable_params2.lane_mask = (1 << serdes_lane_enable_params2.num_lanes) - 1;;
    serdes_lane_enable_params2.operating_mode = CSL_SERDES_FUNCTIONAL_MODE;

    Other links:

    To generate the PDK examples which includes the packet accelerator  -  [FAQ] 66AK2H14: How to generate the CCS PDK examples for 66AK2H14 - k2H EVM? - Processors forum - Processors - TI E2E support forums

    Quick start guide which comprises all the links for development - [FAQ] 66AK2H12: "Quick start Guide for K2H - EVM " to enable a quick product development ? - Processors forum - Processors - TI E2E support forums

    Regards

    Shankari G