Post Go back to editing

Oscillation in sample data when near full scale

Category: Hardware
Product Number: AD9375

Hello

I have a question about the AD9375 when operating the RX near full scale. 

Our configuration is as follows:

ZCU102 carrier board running the ADI 2022.2 HDL reference project.

ZCU102 is running Petalinux with the 2022.2 meta ADI layer.

ADRV9374 evaluation board on ZCU102.

AD9375 LO set to 4800MHz. Providing an input signal to RX1 from a signal generator at 4801MHz. The level of the signal generator is increased slowly to approach full scale input on the AD9375.

We used the AD9371 Filter Wizard to generate the profile information and this was loaded into the Petalinux device tree.

We are seeing the following:

As the input signal approaches full scale, we start to see high frequency oscillations in the RX output sample data. The oscillations reduce and then the original signal returns. Below a certain level, no oscillations occur. 

This is a screen capture of IIO Oscilloscope showing the oscillations.

If you zoom in, you can see the oscillation that starts to occur:

You can also see that the oscillation starts to happen at around 26000 with still some headroom to the 32767 limit.

I have tried disabling the QEC tracking correction and it made no difference. 

Is it possible that a FIR filter inside the digital processing chain of the AD9375 is becoming unstable or is receiving an impulse response from the ADC stage that is making it unstable?

Is this expected behaviour for this type of ADC? Or is there something I need to do to change the behaviour?

Thank you

Gavin

Parents
  • Are you using a default or a custom profile ?

    Do you see this behaviour only at this particular frequency? 

    How is the frequency domain response when you see this issue?

    Is the AGC turned on ?

  • Hello Vanitha

    1) We are using a custom profile generated by the AD9371 Filter Wizard tool. I have tried with two separate profiles. The behaviour is the same on both. Note that we changed the VCXO on the evaluation board to a 125MHz VCXO to meet our customer requirements. Here is an example of one of the two profiles that I am testing with:

    <profile AD9371 version=0 name=Rx 100, IQrate 125.000>
     <clocks>
      <deviceClock_kHz=125000>
      <clkPllVcoFreq_kHz=10000000>
      <clkPllVcoDiv=2>
      <clkPllHsDiv=4>
     </clocks>
    
     <rx>
      <adcDiv=1>
      <rxFirDecimation=2>
      <rxDec5Decimation=5>
      <enHighRejDec5=1>
      <rhb1Decimation=1>
      <iqRate_kHz=125000>
      <rfBandwidth_Hz=100000000>
      <rxBbf3dBCorner_kHz=100000>
    
      <filter FIR gain=-6 num=48>
      -4
      -17
      23
      41
      -53
      -95
      117
      184
      -221
      -331
      389
      553
      -644
      -888
      1026
      1387
      -1608
      -2158
      2580
      3485
      -4786
      -7622
      9629
      32372
      32372
      9629
      -7622
      -4786
      3485
      2580
      -2158
      -1608
      1387
      1026
      -888
      -644
      553
      389
      -331
      -221
      184
      117
      -95
      -53
      41
      23
      -17
      -4
      </filter>
    
      <adc-profile num=16>
      527
      378
      201
      98
      1280
      477
      1587
      269
      1330
      102
      807
      28
      48
      40
      23
      187
      </adc-profile>
     </rx>
    
     <obs>
      <adcDiv=1>
      <rxFirDecimation=1>
      <rxDec5Decimation=5>
      <enHighRejDec5=1>
      <rhb1Decimation=1>
      <iqRate_kHz=250000>
      <rfBandwidth_Hz=200000000>
      <rxBbf3dBCorner_kHz=100000>
    
      <filter FIR gain=6 num=24>
      -119
      284
      -28
      34
      149
      -287
      390
      -296
      -517
      1496
      -3974
      22853
      -3974
      1496
      -517
      -296
      390
      -287
      149
      34
      -28
      284
      -119
      0
      </filter>
    
      <adc-profile num=16>
      446
      354
      201
      98
      1280
      711
      1679
      818
      1500
      716
      853
      21
      43
      37
      25
      200
      </adc-profile>
    
      <lpbk-adc-profile num=16>
      561
      362
      201
      98
      1280
      281
      1539
      143
      1343
      57
      822
      35
      48
      40
      24
      188
      </lpbk-adc-profile>
     </obs>
    
     <sniffer>
      <adcDiv=1>
      <rxFirDecimation=4>
      <rxDec5Decimation=5>
      <enHighRejDec5=1>
      <rhb1Decimation=2>
      <iqRate_kHz=31250>
      <rfBandwidth_Hz=20000000>
      <rxBbf3dBCorner_kHz=20000>
    
      <filter FIR gain=-6 num=72>
      0
      2
      3
      2
      -3
      -12
      -19
      -11
      15
      50
      68
      37
      -48
      -149
      -189
      -98
      122
      362
      444
      226
      -264
      -776
      -938
      -481
      516
      1551
      1894
      1017
      -968
      -3154
      -4127
      -2643
      1642
      7791
      13834
      17574
      17574
      13834
      7791
      1642
      -2643
      -4127
      -3154
      -968
      1017
      1894
      1551
      516
      -481
      -938
      -776
      -264
      226
      444
      362
      122
      -98
      -189
      -149
      -48
      37
      68
      50
      15
      -11
      -19
      -12
      -3
      2
      3
      2
      0
      </filter>
    
      <adc-profile num=16>
      589
      351
      201
      98
      1280
      112
      1505
      53
      1354
      21
      834
      40
      48
      41
      24
      190
      </adc-profile>
     </sniffer>
    
     <tx>
      <dacDiv=2.5>
      <txFirInterpolation=1>
      <thb1Interpolation=2>
      <thb2Interpolation=1>
      <txInputHbInterpolation=1>
      <iqRate_kHz=250000>
      <primarySigBandwidth_Hz=75000000>
      <rfBandwidth_Hz=200000000>
      <txDac3dBCorner_kHz=187000>
      <txBbf3dBCorner_kHz=100000>
    
      <filter FIR gain=6 num=16>
      -44
      -227
      232
      -225
      -5
      925
      -3253
      21237
      -3253
      925
      -5
      -225
      232
      -227
      -44
      0
      </filter>
     </tx>
    </profile>
    

    2) I tested now also at 2500MHz LO. The exact same oscillation happens at 2501MHz. If I set the signal generator at 2510MHz, I still see the same oscillation (as seen below in the screen grab from IIO Oscilloscope):

    3) The noise floor of the frequency domain response starts 'bouncing' each time an oscillation happens, indicating the discontinuities and high frequency content of the oscillation. The following is the frequency response before oscillation starts happening:

    The following shows the noise floor after oscillations start happening:

    I noticed today that at the point where the oscillation starts happing, the RSSI level reported toggles between 0 and 1.25dB. Perhaps this is a clue as to what is happening inside the AD9375.

    4) This is in manual gain control mode, not AGC. Here are some screen shots showing the AD9375 configuration inside IIO Oscilloscope:

    I hope that helps with diagnosing what I going on. Like I said, the only change we made to the AD9375 evaluation board was to replace the VCXO with a 125MHz functionally equivalent one.

    Thanks

    Gavin

  • Can you please probe the DevClk pins manually on the AD9375 board and make sure that the DEV_CLK frequency is correct and within specs as per datasheet.

  • Here is a screen shot from the oscilloscope.

    The device clock is 125MHz. The mean peak to peak voltage is 0.46V. These are within the requirements.

  • What is the gain index used in the MGC case?

    Can you please check if this issue is observed in AGC as well ?

  • The AD9375 RX gain is the default (30). I will test if it happens in AGC as well.

  • It does also happen in AGC mode. Obviously it only happens at a much higher input signal level because the AGC algorithm increases the attenuation of the AD9375 RX input to maintain a constant 6dB RSSI level. So it only started happening once the AGC algorithm had run out of range on the RX attenuation input (maximum attenuation 30dB). This corresponded to about a +20dBm input level. 

  • Do you have LNA in your setup? What is the gain index used in the setup? 

    The plot shared looks like the Rx is getting saturated. The recommended input power would be -14dBm as per the datasheet and we typically recommend customers to operate at this power level .

  • Hello Vanitha

    I am testing on the ADRV9375 evaluation board which simply has a balun and impedance matching.

    I agree, this does happen when the Rx is saturated. I measured now on the evaluation board and the saturation / oscillation starts to happen at around -6dBm. So this is exceeding the maximum recommended CW signal level of -14dBm.

    So does the -14dBm input level mean at the input to the ADRV9374 evaluation board?

    I find this interesting. At -14dBm, the time sample data from the AD9375 is only +/-11000 roughly. This seems to be a waste of the available AD9375 dynamic range considering that the digital range is +/- 32767.

    Do you know why saturation in the AD9375 results in oscillation?

    Thank you.

    Gavin

  • So does the -14dBm input level mean at the input to the ADRV9374 evaluation board?

    Yes at the RX input of the board.

    Will get back to you on the other queries.

  • At -14dBm, the time sample data from the AD9375 is only +/-11000 roughly.

    AD9371 is a sigma delta ADC  . At -14dBm input  level how much is the power level in dBFS?    

    How do you say the sample data is +/-11000? What are the number of samples in the RX while capturing data?

    When the power level is 0dBFS you can change the number of samples to 32768 in the RX data plot tab and you should be seeing data of +/- 32768 samples in the RX capture . 

Reply
  • At -14dBm, the time sample data from the AD9375 is only +/-11000 roughly.

    AD9371 is a sigma delta ADC  . At -14dBm input  level how much is the power level in dBFS?    

    How do you say the sample data is +/-11000? What are the number of samples in the RX while capturing data?

    When the power level is 0dBFS you can change the number of samples to 32768 in the RX data plot tab and you should be seeing data of +/- 32768 samples in the RX capture . 

Children
No Data