Post Go back to editing

How to enable the link sharing mode (ADRV9009)

Hello,

I want to share the same framer between rx data and orx data, my orx I/Q sample rate is same as the rx sample rate(245.76MHz).

I set taliseInit_t.rx.framerSel=TAL_FRAMER_A, and taliseInit_t.obsRx.framerSel=TAL_FRAMER_A.

After the initialization is done, when I execute function TALISE_setRxTxEnable to set rx enable,talAction = TALISE_setRxTxEnable(&talDevice, TAL_RX1RX2_EN, TAL_TX1TX2);, rx path works well. But when I set orx enable,talAction = TALISE_setRxTxEnable(&talDevice, TAL_ORX1ORX2_EN, TAL_TX1TX2);, the orx data is all zero.

Here is my rx and orx configuration:

    /* Rx settings */
    .rx =
    {
        .rxProfile =
        {
            .rxFir =
            {
                .gain_dB = -12,      /* filter gain +6, 0, -6, -12 */
                .numFirCoefs = 48, /* number of coefficients in the FIR filter 24, 48, 72 */
                .coefs = &rxFirCoefs[0]
            },
            .rxFirDecimation    = 2,      /*  Rx FIR decimation (1,2,4) */
            .rxDec5Decimation   = 4,      /*  Decimation of Dec5 or Dec4 filter (5,4) */
            .rhb1Decimation     = 1,      /*  RX Half band 1 decimation (1 or 2) */
            .rxOutputRate_kHz   = 245760, /*  Rx output data rate in kHz */
            .rfBandwidth_Hz     = 200000000,/*  The Rx RF passband bandwidth for the profile */
            .rxBbf3dBCorner_kHz = 200000,/*  Rx BBF 3dB corner in kHz.  20,000 to 200,000 */
            .rxAdcProfile = { /* pointer to custom ADC profile */
                185, 141, 172, 90, 1280, 942, 1332, 90, 1368, 46, 1016, 19,
                48, 48, 37, 208, 0, 0, 0, 0, 52, 0, 7, 6, 42, 0, 7, 6, 42,
                0, 25, 27, 0, 0, 25, 27, 0, 0, 165, 44, 31, 905},
            .rxDdcMode = TAL_RXDDC_BYPASS,	 /* Rx DDC mode */
            .rxNcoShifterCfg =
            {
                .bandAInputBandWidth_kHz = 0,
                .bandAInputCenterFreq_kHz = 0,
                .bandANco1Freq_kHz = 0,
                .bandANco2Freq_kHz = 0,
                .bandBInputBandWidth_kHz = 0,
                .bandBInputCenterFreq_kHz = 0,
                .bandBNco1Freq_kHz = 0,
                .bandBNco2Freq_kHz = 0
            }
        },
        .framerSel = TAL_FRAMER_A,       /*  Rx JESD204b framer configuration */
        .rxGainCtrl =
        {
            .gainMode        = TAL_MGC,  /* taliserxGainMode_t gainMode; */
            .rx1GainIndex    = 255,  /* uint8_t rx1GainIndex */
            .rx2GainIndex    = 255,  /* uint8_t rx2GainIndex */
            .rx1MaxGainIndex = 255,  /* uint8_t rx1MaxGainIndex; */
            .rx1MinGainIndex = 195,  /* uint8_t rx1MinGainIndex; */
            .rx2MaxGainIndex = 255,  /* uint8_t rx2MaxGainIndex; */
            .rx2MinGainIndex = 195   /* uint8_t rx2MinGainIndex; */
        },
        .rxChannels = TAL_RX1RX2  /*  The desired Rx Channels to enable during initialization */
    },
    
        /* ObsRx settings */
    .obsRx =
    {
        .orxProfile =
        {
            .rxFir =
            {
                .gain_dB = -12,               /* filter gain */
                .numFirCoefs = 48,          /* number of coefficients in the FIR filter */
                .coefs = &rxFirCoefs[0]
            },
            .rxFirDecimation    = 2,        /* Rx FIR decimation (1,2,4) */
            .rxDec5Decimation   = 4,        /* Decimation of Dec5 or Dec4 filter (5,4) */
            .rhb1Decimation     = 1,        /* RX Half band 1 decimation (1 or 2) */
            .orxOutputRate_kHz  = 245760,   /* ORx output data rate in kHz */
            .rfBandwidth_Hz     = 200000000,/* The Rx RF passband bandwidth for the profile */
            .rxBbf3dBCorner_kHz = 200000,   /* Rx BBF 3dB corner in kHz */
            .orxLowPassAdcProfile = {185 ,141 ,172 ,90  ,1280,942 ,1332,90  ,
                                     1368,46  ,1016,19  ,48  ,48  ,37  ,208 ,
                                     0   ,0   ,0   ,0   ,52  ,0   ,7   ,6   ,
                                     42  ,0   ,7   ,6   ,42  ,0   ,25  ,27  ,
                                     0   ,0   ,25  ,27  ,0   ,0   ,165 ,44  ,
                                     31  ,905 },
            .orxBandPassAdcProfile = {185 ,141 ,172 ,90  ,1280,942 ,1332,90  ,
                                      1368,46  ,1016,19  ,48  ,48  ,37  ,208 ,
                                      0   ,0   ,0   ,0   ,52  ,0   ,7   ,6   ,
                                      42  ,0   ,7   ,6   ,42  ,0   ,25  ,27  ,
                                      0   ,0   ,25  ,27  ,0   ,0   ,165 ,44  ,
                                      31  ,905 },
            .orxDdcMode            = TAL_ORXDDC_DISABLED, /* ORx DDC mode */
            .orxMergeFilter =   {-98,413,-310,-382,987,-488,-1131,2215,-622,-4016,9277,21173}
        },
        .orxGainCtrl =
        {
            .gainMode 	      = TAL_MGC,
            .orx1GainIndex    = 255,
            .orx2GainIndex    = 255,
            .orx1MaxGainIndex = 255,
            .orx1MinGainIndex = 195,
            .orx2MaxGainIndex = 255,
            .orx2MinGainIndex = 195
        },
        .framerSel = TAL_FRAMER_A,          /* ObsRx JESD204b framer configuration structure */
        .obsRxChannelsEnable = TAL_ORX1ORX2,    /* The desired ObsRx Channels to enable during initialization */
        .obsRxLoSource = TAL_AUX_PLL            /* The ORx mixers can use the TX_PLL*/
    },

Please tell me what's wrong.

Thank you very much!

  • Are you operating the chip in TDD mode? Link sharing works in TDD mode, and at a time, either the RX or the TX and ORX should be enabled. In that case, you will be able to see the ORX data in the TX period.

    Can you check if the ORX is set to internal cals mode or not? In internal cals mode, you will not be able to see the data. Set the ORX path LO source to RFLO using the API :

    SetOrxLoSource

    Hope you are changing the setting the ADRV9009 TES GUI and then generating the initdata.c and the stream files from the GUI and then using the same files in your setup for configuring the chip in link sharing mode.

  • Thank you! After I generated a new stream file, the problem was solved.