Post Go back to editing

JESD ADRV9009 ZCU102 TAL_FRAMER_A Warning/Error

Anonymous
Anonymous

    I am working with the ADRV9009 eval card (ADRV9009-W/PCBZ) for the Xilinx ZCU102 board. I am using the NO-OS software branch 2018_R2 found here 

        https://github.com/analogdevicesinc/no-OS/tree/2018_R2

    The issue I am having is that when I try to set the profile for the RX (Non-OS RX) to get 200MHz instantaneous BW I get the following warning

    warning: TAL_FRAMER_A status 0x21

    With the following status

    rx_jesd status:
            Link is enabled
            Measured Link Clock: 245.787 MHz
            Reported Link Clock: 245.760 MHz
            Lane rate: 9830.400 MHz
            Lane rate / 40: 245.760 MHz
            Link status: CGS
            SYSREF captured: Yes
            SYSREF alignment error: No
    

    Because the link status is stuck at CGS the ADC data is not making it to the FPGA. I have an ILA attached to the ADC outputs and they are all zeros. The outputs for the ADC's are as expected when I run with the 100MHz instantaneous BW or the default RX profile that is provided with the NO-OS software. As soon as I try and run at fs=245.76MHz  IBW=200MHz the JESD locks up.

    Here are my RX Profile settings.

     

    /* Rx settings */
    	.rx =
    	{
    		.rxProfile =
    		{
    			.rxFir =
    			{
    				.gain_dB = -6,                /* 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) */
    			.rxOutputRate_kHz = 2*122880,            /* Rx IQ data rate in kHz */
    			.rfBandwidth_Hz = 200000000,    /* The Rx RF passband bandwidth for the profile */
    			.rxBbf3dBCorner_kHz = 200000,    /* Rx BBF 3dB corner in kHz */
    			.rxAdcProfile = {265, 146, 181, 90, 1280, 366, 1257, 27, 1258, 17, 718, 39, 48, 46, 27, 161, 0, 0, 0, 0, 40, 0, 7, 6, 42, 0, 7, 6, 42, 0, 25, 27, 0, 0, 25, 27, 0, 0, 165, 44, 31, 905},            /* pointer to custom ADC profile */
    			.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 */
    	},

    JESD framer profile settings

    /* JESD204B settings */
    	.jesd204Settings =
    	{
    		/* Framer A settings */
    		.framerA =
    		{
    			.bankId = 1,                    /* JESD204B Configuration Bank ID -extension to Device ID (Valid 0..15) */
    			.deviceId = 0,                    /* JESD204B Configuration Device ID - link identification number. (Valid 0..255) */
    			.lane0Id = 0,                    /* JESD204B Configuration starting Lane ID.  If more than one lane used, each lane will increment from the Lane0 ID. (Valid 0..31) */
    			.M = 4,                            /* number of ADCs (0, 2, or 4) - 2 ADCs per receive chain */
    			.K = 32,                        /* number of frames in a multiframe (default=32), F*K must be a multiple of 4. (F=2*M/numberOfLanes) */
    			.F = 4,                            /* F (number of bytes per frame) */
    			.Np = 16,                            /* Np (converter sample resolution) */
    			.scramble = 1,                    /* scrambling off if framerScramble= 0, if framerScramble>0 scramble is enabled. */
    			.externalSysref = 1,            /* 0=use internal SYSREF, 1= use external SYSREF */
    			.serializerLanesEnabled = 0x03,    /* serializerLanesEnabled - bit per lane, [0] = Lane0 enabled, [1] = Lane1 enabled */
    			.serializerLaneCrossbar = 0xE4,    /* serializerLaneCrossbar */
    			.lmfcOffset = 31,                /* lmfcOffset - LMFC offset value for deterministic latency setting */
    			.newSysrefOnRelink = 0,            /* newSysrefOnRelink */
    			.syncbInSelect = 0,                /* syncbInSelect; */
    			.overSample = 0,                    /* 1=overSample, 0=bitRepeat */
    			.syncbInLvdsMode = 1,
    			.syncbInLvdsPnInvert = 0,
    			.enableManualLaneXbar = 0 /* 0=auto, 1=manual */
    		},
    		/* Framer B settings */
    		.framerB =
    		{
    			.bankId = 0,                    /* JESD204B Configuration Bank ID -extension to Device ID (Valid 0..15) */
    			.deviceId = 0,                    /* JESD204B Configuration Device ID - link identification number. (Valid 0..255) */
    			.lane0Id = 0,                    /* JESD204B Configuration starting Lane ID.  If more than one lane used, each lane will increment from the Lane0 ID. (Valid 0..31) */
    			.M = 2,                            /* number of ADCs (0, 2, or 4) - 2 ADCs per receive chain */
    			.K = 32,                        /* number of frames in a multiframe (default=32), F*K must be a multiple of 4. (F=2*M/numberOfLanes) */
    			.F = 2,                            /* F (number of bytes per frame) */
    			.Np = 16,                            /* Np (converter sample resolution) */
    			.scramble = 1,                    /* scrambling off if framerScramble= 0, if framerScramble>0 scramble is enabled. */
    			.externalSysref = 1,            /* 0=use internal SYSREF, 1= use external SYSREF */
    			.serializerLanesEnabled = 0x0C,    /* serializerLanesEnabled - bit per lane, [0] = Lane0 enabled, [1] = Lane1 enabled */
    			.serializerLaneCrossbar = 0xE4,    /* serializerLaneCrossbar */
    			.lmfcOffset = 31,                /* lmfcOffset - LMFC offset value for deterministic latency setting */
    			.newSysrefOnRelink = 0,            /* newSysrefOnRelink */
    			.syncbInSelect = 1,                /* syncbInSelect; */
    			.overSample = 0,                    /* 1=overSample, 0=bitRepeat */
    			.syncbInLvdsMode = 1,
    			.syncbInLvdsPnInvert = 0,
    			.enableManualLaneXbar = 0 /* 0=auto, 1=manual */
    		},

    Here are my initial JESD settings

    struct jesd204_rx_init rx_jesd_init = {
    		"rx_jesd",
    		RX_JESD_BASEADDR,
    		4,
    		32,
    		1,
    		rx_div40_rate_hz / 1000,
    		rx_lane_rate_khz,
    	};

    here is the complete output from the serial terminal

    d Link Clock: 61.447 MHz
            Reported Link Clock: 61.440 MHz
            Lane rate: 2457.600 MHz
            Lane rate / 40: 61.440 MHz
            SYNC~: deasserted
            Link status: DATA
            SYSREF captured: Yes
            SYSREF alignment error: No
    rx_os_jesd status:
            Link is enabled
            Measured Link Clock: 61.446 MHz
            Reported Link Clock: 61.440 MHz
            Lane rate: 2457.600 MHz
            Lane rate / 40: 61.440 MHz
            Link status: DATA
            SYSREF captured: Yes
            SYSREF alignment error: No
    rx_dac: Successfully initialized (122894287 Hz)
    rx_adc: Successfully initialized (245787048 Hz)
    rx_os_adc: Successfully initialized (61447143 Hz)
    

    Parents Reply Children
    No Data