Post Go back to editing

LOOPBACK_RX_LO_DELAY/LOOPBACK_RX_RX_QEC_INIT

Is there any documentation on what these calibrations should be doing? Or when they should be enabled?

We are seeing temperature-related failures on a board on both of these cals. The ORX inputs are grounded, as we are not using the observation receiver in this design.

Parents
  • LOOPBACK_RX_LO_DELAY:
    This is used to perform an LO delay calibration for the loopback path (The phase of the LO between I and Q path is adjusted to be as close to 90 degrees as possible). It is run to optimize the loopback path’s performance. It is required before running TX_QEC_INIT. Changing the frequency of the LO changes the nature of the impairments therefore it must be re-run after an LO change.


    LOOPBACK_RX_RX_QEC_INIT:

    This performs an initial QEC calibration for the loopback Rx path. Changing the frequency of the LO changes the nature of the impairments therefore it must be re-run after an LO change.

    We are seeing temperature-related failures on a board on both of these cals

    What is the nature of the failure you are seeing?

  • At room or cold TALISE_getInitCalStatus reports those cals fail. Is there more diagnostic information that I can find?

  • Are you seeing this issue only on this particular board?

    How many boards are with this same issue? Have you tried running this calibration multiple times?

    Have you verified the power supply, clock signal quality and PLL Lock status when the issue happens?

  • We are only seeing the issue on one board so far, but it's a small sample size. We repeatedly tried initializing Talise as it ramped in temperature and it consistently failed until reaching ~30C.

    Our initialization code checks PLL lock status, so I don't believe that's an issue. We have not observed issues with the power supplies or the clock quality to this point.

    Did the results from TALISE_getInitCalStatus() mean anything to you?

  • Sorry, we are not able to get any clue from TALISE_getInitCalStatus() ? This issue is normally not seen.

    Can you please check the TALISE_getGpIntStatus()?

    Did you inspect physically for assembly issues?

    If possible you shall try replacing ADRV9009 with the new device?

  • We are now seeing similar issues on multiple boards. Here is the radioStatus and gpIntStatus at various points during a failed initialization:

    • After loading the ARM firmware:
      • returns success 
      • getRadioState = READY
      • getGpIntStatus = 0x26 (DEFRAMER ERROR/RF PLL UNLOCK/AUX PLL UNLOCK)
    • After configuring the RF frequency:
      • returns success 
      • getRadioState = READY
      • getGpIntStatus = 0x20 (DEFRAMER ERROR)
    • After sending runInitCals:
      • returns success 
      • getRadioState = READY
      • getGpIntStatus = 0x20 (DEFRAMER ERROR)
    • After sending waitInitCals:
      • returns init cal failure (typically LOOPBACK_RX_LO_DELAY)
      • getRadioState = READY
      • getGpIntStatus = 0x20 (DEFRAMER ERROR)

    The deframer isn't initialized until the init cals are completed, so I don't see anything abnormal. Are there any other status regs that I'm missing? Can we see why the LOOPBACK_RX_LO_DELAY cal is failing?

  • Are you able to reproduce this issue on our EVB? This will help us to debug this issue at our lab.

    Are you using ADRV9008-x or ADRV9009 device?

    If you skip LOOPBACK_RX_LO_DELAY and LOOPBACK_RX_RX_QEC_INIT, are you able to get through initialization successfully?

    Are you using any custom profile? Can you check with any standard profile?

    When the issue happens, please verify the currents, voltages, and clock signal near to the input pin of ADRV9009 in realtime. If required you shall use external bench power supplies to power up ADRV9009.

    When the issue happens, if you initialize the device multiple times does that help?

    Hope you are using the latest API release version.

    https://www.analog.com/en/design-center/landing-pages/001/transceiver-evaluation-software.html

  • We have not attempted to reproduce the failure on the EVB. We have built about 20 custom boards (using the ADRV9009) and see failures on 20 to 30% of them. We only have one EVB, so we aren't convinced that it would exhibit the issue if we tried.

    Skipping the LOOPBACK init cals results in a successful initialization (and allows transmit operation). However, I think we should expect degraded results from the init Tx cals when doing this? Do you have any guidance/description of what cals are required for each mode of operation? Or what degradations we could/should expect if individual cals are skipped? Do you know what order the ARM will execute the individual cals when provided with a mask?

    Voltages to the ADRV9009 look good. The issue persists even when provided from an external bench supply.

    Unable to validate the clock signal directly, but the clocking IC can output a clock derived from the same PLL. This clock looks clean.

    Attempts to initialize the device repeatedly continue to fail until the board temperature rises.

    We are using the latest API version (3.6.0.5) and the latest ARM firmware (6.0.2).

  • This seems bit strange. 

    When temperature is above 30 deg C and cals are working fine, Can you try cooling only the transceiver using cold spray on chip. This will help us isolate whether issue is coming from chip or some external circuitry.

    Another things you can try is to swap chip from a working with non working and see if the issue follows the chip,

  • We tried cold spraying the ADRV9009 and the FPGA separately. The issue was only present when cold spraying the ADRV9009.

    Moving a non-working chip to another board would require some external vendor support. We may be able to try swapping a non-working chip with a fresh chip at some point, though I would expect it to exhibit the same 20 to 30% failure rate.

    Do the failing cals provide any clues? As I mentioned, the initialization appears to complete successfully if the LOOPBACK cals are skipped. Is there something unique about the LOOPBACK cals?

    What circuitry are the individual cals dependent on? As I mentioned earlier in the thread, we do have the ORx inputs grounded, which is different than the EVB. Could that cause issues?

    What cals are required for each mode? Our current test case is transmit-only or receive-only. We send the same init cal mask regardless of mode and assume the ARM will select/execute the requierd cals.

  • This is sue looks strange. WE have not seen similar issue before.

    IF issue was seen at hot then we would have suspected power supply or thermal issues. At cold issue normally seen is for clock stability. You can check reference clock stability for this case.

    The calibrations that are failing are for the loop back path used for Tx calibrations. If you see ablove diagram we use a seperate mixer and same  Rx path for the feedback loop for TX calibrations. If this path is not calibrated it can impact TX  performance . (TX QEC and LOL).

    If you skip this cal how is the performance.

    You are not using ORX and that should not impact this. 

  • We found a probe to look at the actual device clock going to the ADRV9009. The device clock looks clean and consistent over temperature.

    To evaluate our board, we have generated 10 different configurations using the Filter Wizard (v2.4). Thus far, we had only used our 200MHz configuration during investigation of this issue. This morning we had the thought to try one of the other configurations -- and it worked! Then we tried the other 8 -- and they all worked too!

    Now we're wondering if using a 200MHz device clock is hitting some corner case with with regards to ADRV9009 configuration? I'm attaching two configurations, the first (200MHz) exhibits the issue and the second (212MHz) does not. 

    FYI, we make a couple changes to these configurations prior to pushing them to the ADRV9009. First, we set the txChannels/rxChannels/obsRxChannelsEnable appropriately for our mode (transmit-only for this issue). Second, we fix the Tx FIR gain_dB to 6, which was suggested in another thread to get similar power out, regardless of configuration.

    200MHz:

    <profile Talise version=1 name=Tx_BW164_IR200_Rx_BW80_OR200_ORx_BW110_OR200>
     <clocks>
      <deviceClock_kHz=200000>
      <clkPllVcoFreq_kHz=8000000>
      <clkPllHsDiv=2.0>
     </clocks>
    
     <rx name=Rx 80.00MHz, OutputRate 200.00MHz, TotalDecimation 10>
      <rxChannels=TAL_RX1RX2>
      <rxFirDecimation=2>
      <rxDec5Decimation=5>
      <rhb1Decimation=1>
      <rxOutputRate_kHz=200000>
      <rfBandwidth_Hz=80000000>
      <rxBbf3dBCorner_kHz=80000>
      <rxDdcMode=0>
    
      <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>
      </rxNcoShifterCfg>
    
      <filter FIR gain_dB=-6 numFirCoefs=48>
      -8
      13
      33
      36
      -28
      -122
      -147
      11
      289
      431
      151
      -497
      -989
      -660
      594
      1901
      1845
      -284
      -3410
      -4849
      -2032
      5342
      14443
      20708
      20708
      14443
      5342
      -2032
      -4849
      -3410
      -284
      1845
      1901
      594
      -660
      -989
      -497
      151
      431
      289
      11
      -147
      -122
      -28
      36
      33
      13
      -8
      </filter>
    
      <rxAdcProfile num=42>
      261
      144
      181
      90
      1280
      366
      1258
      27
      1280
      17
      731
      39
      48
      47
      28
      160
      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
      </rxAdcProfile>
     </rx>
    
     <obsRx name=Rx 110.00MHz, OutputRate 200.00MHz, TotalDecimation 10>
      <obsRxChannelsEnable=TAL_ORX1ORX2>
      <enAdcStitching=0>
      <rxFirDecimation=2>
      <rxDec5Decimation=5>
      <rhb1Decimation=1>
      <orxOutputRate_kHz=200000>
      <rfBandwidth_Hz=110000000>
      <rxBbf3dBCorner_kHz=225000>
      <orxDdcMode=0>
    
      <filter FIR gain_dB=-6 numFirCoefs=48>
      -1
      -3
      4
      15
      3
      -43
      -46
      66
      159
      -15
      -334
      -224
      460
      743
      -271
      -1483
      -637
      1964
      2373
      -1775
      -5729
      -1185
      12860
      25868
      25868
      12860
      -1185
      -5729
      -1775
      2373
      1964
      -637
      -1483
      -271
      743
      460
      -224
      -334
      -15
      159
      66
      -46
      -43
      3
      15
      4
      -3
      -1
      </filter>
    
      <orxLowPassAdcProfile num=42>
      252
      142
      181
      90
      1280
      408
      1265
      30
      1304
      19
      760
      38
      48
      47
      29
      165
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </orxLowPassAdcProfile>
    
      <orxBandPassAdcProfile num=42>
      252
      142
      181
      90
      1280
      408
      1265
      30
      1304
      19
      760
      38
      48
      47
      29
      165
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </orxBandPassAdcProfile>
    
     </obsRx>
    
     <lpbk>
      <rxFirDecimation=2>
      <rhb1Decimation=1>
      <outputRate_kHz=200000>
      <rfBandwidth_Hz=110000000>
      <rxBbf3dBCorner_kHz=225000>
    
      <filter FIR gain_dB=-6 num=48>
      -1
      -3
      4
      15
      3
      -43
      -46
      66
      159
      -15
      -334
      -224
      460
      743
      -271
      -1483
      -637
      1964
      2373
      -1775
      -5729
      -1185
      12860
      25868
      25868
      12860
      -1185
      -5729
      -1775
      2373
      1964
      -637
      -1483
      -271
      743
      460
      -224
      -334
      -15
      159
      66
      -46
      -43
      3
      15
      4
      -3
      -1
      </filter>
    
      <lpbkAdcProfile num=42>
      200
      138
      171
      90
      1280
      771
      1313
      68
      1351
      37
      962
      25
      48
      48
      35
      197
      0
      0
      0
      0
      49
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </lpbkAdcProfile>
     </lpbk>
    
     <tx name=Tx 164.00MHz, InputRate 200.00MHz, TotalInterpolation 10>
      <txChannels=TAL_TX1TX2>
      <dacDiv=1>
      <txFirInterpolation=2>
      <thb1Interpolation=1>
      <thb2Interpolation=1>
      <thb3Interpolation=1>
      <txInt5Interpolation=5>
      <txInputRate_kHz=200000>
      <primarySigBandwidth_Hz=110000000>
      <rfBandwidth_Hz=164000000>
      <txDac3dBCorner_kHz=187000>
      <txBbf3dBCorner_kHz=82000>
    
      <filter FIR gain_dB=6 numFirCoefs=40>
      8
      -57
      15
      146
      -68
      -295
      176
      510
      -342
      -831
      589
      1323
      -966
      -2154
      1445
      3560
      -1961
      -6079
      3218
      17590
      17590
      3218
      -6079
      -1961
      3560
      1445
      -2154
      -966
      1323
      589
      -831
      -342
      510
      176
      -295
      -68
      146
      15
      -57
      8
      </filter>
     </tx>
    </profile>
    

    212MHz:

    <profile Talise version=1 name=Tx_BW195_IR212_Rx_BW84p82_OR212_ORx_BW86_OR212>
     <clocks>
      <deviceClock_kHz=212000>
      <clkPllVcoFreq_kHz=8480000>
      <clkPllHsDiv=2.5>
     </clocks>
    
     <rx name=Rx 84.81MHz, OutputRate 212.00MHz, TotalDecimation 8>
      <rxChannels=TAL_RX1RX2>
      <rxFirDecimation=2>
      <rxDec5Decimation=4>
      <rhb1Decimation=1>
      <rxOutputRate_kHz=212000>
      <rfBandwidth_Hz=84810000>
      <rxBbf3dBCorner_kHz=84810>
      <rxDdcMode=0>
    
      <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>
      </rxNcoShifterCfg>
    
      <filter FIR gain_dB=-6 numFirCoefs=48>
      -9
      14
      32
      38
      -28
      -122
      -149
      9
      289
      434
      154
      -497
      -995
      -668
      593
      1919
      1891
      -213
      -3330
      -4787
      -2015
      5298
      14341
      20572
      20572
      14341
      5298
      -2015
      -4787
      -3330
      -213
      1891
      1919
      593
      -668
      -995
      -497
      154
      434
      289
      9
      -149
      -122
      -28
      38
      32
      14
      -9
      </filter>
    
      <rxAdcProfile num=42>
      308
      169
      181
      90
      1280
      366
      1252
      27
      1083
      15
      618
      39
      48
      40
      24
      164
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </rxAdcProfile>
     </rx>
    
     <obsRx name=Rx 86.00MHz, OutputRate 212.00MHz, TotalDecimation 8>
      <obsRxChannelsEnable=TAL_ORX1ORX2>
      <enAdcStitching=0>
      <rxFirDecimation=2>
      <rxDec5Decimation=4>
      <rhb1Decimation=1>
      <orxOutputRate_kHz=212000>
      <rfBandwidth_Hz=86000000>
      <rxBbf3dBCorner_kHz=225000>
      <orxDdcMode=0>
    
      <filter FIR gain_dB=-6 numFirCoefs=48>
      -6
      7
      26
      33
      -14
      -99
      -141
      -35
      198
      351
      167
      -359
      -810
      -599
      426
      1566
      1596
      -151
      -2780
      -3930
      -1288
      5444
      13731
      19435
      19435
      13731
      5444
      -1288
      -3930
      -2780
      -151
      1596
      1566
      426
      -599
      -810
      -359
      167
      351
      198
      -35
      -141
      -99
      -14
      33
      26
      7
      -6
      </filter>
    
      <orxLowPassAdcProfile num=42>
      308
      169
      181
      90
      1280
      366
      1252
      27
      1083
      15
      618
      39
      48
      40
      24
      164
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </orxLowPassAdcProfile>
    
      <orxBandPassAdcProfile num=42>
      308
      169
      181
      90
      1280
      366
      1252
      27
      1083
      15
      618
      39
      48
      40
      24
      164
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </orxBandPassAdcProfile>
    
     </obsRx>
    
     <lpbk>
      <rxFirDecimation=2>
      <rhb1Decimation=1>
      <outputRate_kHz=212000>
      <rfBandwidth_Hz=86000000>
      <rxBbf3dBCorner_kHz=225000>
    
      <filter FIR gain_dB=-6 num=48>
      -6
      7
      26
      33
      -14
      -99
      -141
      -35
      198
      351
      167
      -359
      -810
      -599
      426
      1566
      1596
      -151
      -2780
      -3930
      -1288
      5444
      13731
      19435
      19435
      13731
      5444
      -1288
      -3930
      -2780
      -151
      1596
      1566
      426
      -599
      -810
      -359
      167
      351
      198
      -35
      -141
      -99
      -14
      33
      26
      7
      -6
      </filter>
    
      <lpbkAdcProfile num=42>
      245
      162
      181
      90
      1280
      705
      1297
      60
      1198
      30
      789
      27
      48
      42
      29
      196
      0
      0
      0
      0
      49
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </lpbkAdcProfile>
     </lpbk>
    
     <tx name=Tx 195.00MHz, InputRate 212.00MHz, TotalInterpolation 8>
      <txChannels=TAL_TX1TX2>
      <dacDiv=1>
      <txFirInterpolation=1>
      <thb1Interpolation=2>
      <thb2Interpolation=2>
      <thb3Interpolation=2>
      <txInt5Interpolation=1>
      <txInputRate_kHz=212000>
      <primarySigBandwidth_Hz=86000000>
      <rfBandwidth_Hz=195000000>
      <txDac3dBCorner_kHz=195000>
      <txBbf3dBCorner_kHz=97500>
    
      <filter FIR gain_dB=0 numFirCoefs=20>
      -13
      21
      -42
      85
      -148
      263
      -518
      1178
      -2597
      19371
      -2597
      1178
      -518
      263
      -148
      85
      -42
      21
      -13
      0
      </filter>
     </tx>
    </profile>
    

Reply
  • We found a probe to look at the actual device clock going to the ADRV9009. The device clock looks clean and consistent over temperature.

    To evaluate our board, we have generated 10 different configurations using the Filter Wizard (v2.4). Thus far, we had only used our 200MHz configuration during investigation of this issue. This morning we had the thought to try one of the other configurations -- and it worked! Then we tried the other 8 -- and they all worked too!

    Now we're wondering if using a 200MHz device clock is hitting some corner case with with regards to ADRV9009 configuration? I'm attaching two configurations, the first (200MHz) exhibits the issue and the second (212MHz) does not. 

    FYI, we make a couple changes to these configurations prior to pushing them to the ADRV9009. First, we set the txChannels/rxChannels/obsRxChannelsEnable appropriately for our mode (transmit-only for this issue). Second, we fix the Tx FIR gain_dB to 6, which was suggested in another thread to get similar power out, regardless of configuration.

    200MHz:

    <profile Talise version=1 name=Tx_BW164_IR200_Rx_BW80_OR200_ORx_BW110_OR200>
     <clocks>
      <deviceClock_kHz=200000>
      <clkPllVcoFreq_kHz=8000000>
      <clkPllHsDiv=2.0>
     </clocks>
    
     <rx name=Rx 80.00MHz, OutputRate 200.00MHz, TotalDecimation 10>
      <rxChannels=TAL_RX1RX2>
      <rxFirDecimation=2>
      <rxDec5Decimation=5>
      <rhb1Decimation=1>
      <rxOutputRate_kHz=200000>
      <rfBandwidth_Hz=80000000>
      <rxBbf3dBCorner_kHz=80000>
      <rxDdcMode=0>
    
      <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>
      </rxNcoShifterCfg>
    
      <filter FIR gain_dB=-6 numFirCoefs=48>
      -8
      13
      33
      36
      -28
      -122
      -147
      11
      289
      431
      151
      -497
      -989
      -660
      594
      1901
      1845
      -284
      -3410
      -4849
      -2032
      5342
      14443
      20708
      20708
      14443
      5342
      -2032
      -4849
      -3410
      -284
      1845
      1901
      594
      -660
      -989
      -497
      151
      431
      289
      11
      -147
      -122
      -28
      36
      33
      13
      -8
      </filter>
    
      <rxAdcProfile num=42>
      261
      144
      181
      90
      1280
      366
      1258
      27
      1280
      17
      731
      39
      48
      47
      28
      160
      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
      </rxAdcProfile>
     </rx>
    
     <obsRx name=Rx 110.00MHz, OutputRate 200.00MHz, TotalDecimation 10>
      <obsRxChannelsEnable=TAL_ORX1ORX2>
      <enAdcStitching=0>
      <rxFirDecimation=2>
      <rxDec5Decimation=5>
      <rhb1Decimation=1>
      <orxOutputRate_kHz=200000>
      <rfBandwidth_Hz=110000000>
      <rxBbf3dBCorner_kHz=225000>
      <orxDdcMode=0>
    
      <filter FIR gain_dB=-6 numFirCoefs=48>
      -1
      -3
      4
      15
      3
      -43
      -46
      66
      159
      -15
      -334
      -224
      460
      743
      -271
      -1483
      -637
      1964
      2373
      -1775
      -5729
      -1185
      12860
      25868
      25868
      12860
      -1185
      -5729
      -1775
      2373
      1964
      -637
      -1483
      -271
      743
      460
      -224
      -334
      -15
      159
      66
      -46
      -43
      3
      15
      4
      -3
      -1
      </filter>
    
      <orxLowPassAdcProfile num=42>
      252
      142
      181
      90
      1280
      408
      1265
      30
      1304
      19
      760
      38
      48
      47
      29
      165
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </orxLowPassAdcProfile>
    
      <orxBandPassAdcProfile num=42>
      252
      142
      181
      90
      1280
      408
      1265
      30
      1304
      19
      760
      38
      48
      47
      29
      165
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </orxBandPassAdcProfile>
    
     </obsRx>
    
     <lpbk>
      <rxFirDecimation=2>
      <rhb1Decimation=1>
      <outputRate_kHz=200000>
      <rfBandwidth_Hz=110000000>
      <rxBbf3dBCorner_kHz=225000>
    
      <filter FIR gain_dB=-6 num=48>
      -1
      -3
      4
      15
      3
      -43
      -46
      66
      159
      -15
      -334
      -224
      460
      743
      -271
      -1483
      -637
      1964
      2373
      -1775
      -5729
      -1185
      12860
      25868
      25868
      12860
      -1185
      -5729
      -1775
      2373
      1964
      -637
      -1483
      -271
      743
      460
      -224
      -334
      -15
      159
      66
      -46
      -43
      3
      15
      4
      -3
      -1
      </filter>
    
      <lpbkAdcProfile num=42>
      200
      138
      171
      90
      1280
      771
      1313
      68
      1351
      37
      962
      25
      48
      48
      35
      197
      0
      0
      0
      0
      49
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </lpbkAdcProfile>
     </lpbk>
    
     <tx name=Tx 164.00MHz, InputRate 200.00MHz, TotalInterpolation 10>
      <txChannels=TAL_TX1TX2>
      <dacDiv=1>
      <txFirInterpolation=2>
      <thb1Interpolation=1>
      <thb2Interpolation=1>
      <thb3Interpolation=1>
      <txInt5Interpolation=5>
      <txInputRate_kHz=200000>
      <primarySigBandwidth_Hz=110000000>
      <rfBandwidth_Hz=164000000>
      <txDac3dBCorner_kHz=187000>
      <txBbf3dBCorner_kHz=82000>
    
      <filter FIR gain_dB=6 numFirCoefs=40>
      8
      -57
      15
      146
      -68
      -295
      176
      510
      -342
      -831
      589
      1323
      -966
      -2154
      1445
      3560
      -1961
      -6079
      3218
      17590
      17590
      3218
      -6079
      -1961
      3560
      1445
      -2154
      -966
      1323
      589
      -831
      -342
      510
      176
      -295
      -68
      146
      15
      -57
      8
      </filter>
     </tx>
    </profile>
    

    212MHz:

    <profile Talise version=1 name=Tx_BW195_IR212_Rx_BW84p82_OR212_ORx_BW86_OR212>
     <clocks>
      <deviceClock_kHz=212000>
      <clkPllVcoFreq_kHz=8480000>
      <clkPllHsDiv=2.5>
     </clocks>
    
     <rx name=Rx 84.81MHz, OutputRate 212.00MHz, TotalDecimation 8>
      <rxChannels=TAL_RX1RX2>
      <rxFirDecimation=2>
      <rxDec5Decimation=4>
      <rhb1Decimation=1>
      <rxOutputRate_kHz=212000>
      <rfBandwidth_Hz=84810000>
      <rxBbf3dBCorner_kHz=84810>
      <rxDdcMode=0>
    
      <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>
      </rxNcoShifterCfg>
    
      <filter FIR gain_dB=-6 numFirCoefs=48>
      -9
      14
      32
      38
      -28
      -122
      -149
      9
      289
      434
      154
      -497
      -995
      -668
      593
      1919
      1891
      -213
      -3330
      -4787
      -2015
      5298
      14341
      20572
      20572
      14341
      5298
      -2015
      -4787
      -3330
      -213
      1891
      1919
      593
      -668
      -995
      -497
      154
      434
      289
      9
      -149
      -122
      -28
      38
      32
      14
      -9
      </filter>
    
      <rxAdcProfile num=42>
      308
      169
      181
      90
      1280
      366
      1252
      27
      1083
      15
      618
      39
      48
      40
      24
      164
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </rxAdcProfile>
     </rx>
    
     <obsRx name=Rx 86.00MHz, OutputRate 212.00MHz, TotalDecimation 8>
      <obsRxChannelsEnable=TAL_ORX1ORX2>
      <enAdcStitching=0>
      <rxFirDecimation=2>
      <rxDec5Decimation=4>
      <rhb1Decimation=1>
      <orxOutputRate_kHz=212000>
      <rfBandwidth_Hz=86000000>
      <rxBbf3dBCorner_kHz=225000>
      <orxDdcMode=0>
    
      <filter FIR gain_dB=-6 numFirCoefs=48>
      -6
      7
      26
      33
      -14
      -99
      -141
      -35
      198
      351
      167
      -359
      -810
      -599
      426
      1566
      1596
      -151
      -2780
      -3930
      -1288
      5444
      13731
      19435
      19435
      13731
      5444
      -1288
      -3930
      -2780
      -151
      1596
      1566
      426
      -599
      -810
      -359
      167
      351
      198
      -35
      -141
      -99
      -14
      33
      26
      7
      -6
      </filter>
    
      <orxLowPassAdcProfile num=42>
      308
      169
      181
      90
      1280
      366
      1252
      27
      1083
      15
      618
      39
      48
      40
      24
      164
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </orxLowPassAdcProfile>
    
      <orxBandPassAdcProfile num=42>
      308
      169
      181
      90
      1280
      366
      1252
      27
      1083
      15
      618
      39
      48
      40
      24
      164
      0
      0
      0
      0
      41
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </orxBandPassAdcProfile>
    
     </obsRx>
    
     <lpbk>
      <rxFirDecimation=2>
      <rhb1Decimation=1>
      <outputRate_kHz=212000>
      <rfBandwidth_Hz=86000000>
      <rxBbf3dBCorner_kHz=225000>
    
      <filter FIR gain_dB=-6 num=48>
      -6
      7
      26
      33
      -14
      -99
      -141
      -35
      198
      351
      167
      -359
      -810
      -599
      426
      1566
      1596
      -151
      -2780
      -3930
      -1288
      5444
      13731
      19435
      19435
      13731
      5444
      -1288
      -3930
      -2780
      -151
      1596
      1566
      426
      -599
      -810
      -359
      167
      351
      198
      -35
      -141
      -99
      -14
      33
      26
      7
      -6
      </filter>
    
      <lpbkAdcProfile num=42>
      245
      162
      181
      90
      1280
      705
      1297
      60
      1198
      30
      789
      27
      48
      42
      29
      196
      0
      0
      0
      0
      49
      0
      7
      6
      42
      0
      7
      6
      42
      0
      25
      27
      0
      0
      25
      27
      0
      0
      165
      44
      31
      905
      </lpbkAdcProfile>
     </lpbk>
    
     <tx name=Tx 195.00MHz, InputRate 212.00MHz, TotalInterpolation 8>
      <txChannels=TAL_TX1TX2>
      <dacDiv=1>
      <txFirInterpolation=1>
      <thb1Interpolation=2>
      <thb2Interpolation=2>
      <thb3Interpolation=2>
      <txInt5Interpolation=1>
      <txInputRate_kHz=212000>
      <primarySigBandwidth_Hz=86000000>
      <rfBandwidth_Hz=195000000>
      <txDac3dBCorner_kHz=195000>
      <txBbf3dBCorner_kHz=97500>
    
      <filter FIR gain_dB=0 numFirCoefs=20>
      -13
      21
      -42
      85
      -148
      263
      -518
      1178
      -2597
      19371
      -2597
      1178
      -518
      263
      -148
      85
      -42
      21
      -13
      0
      </filter>
     </tx>
    </profile>
    

Children
  • I think we've narrowed the issue down to a certain band that exhibits the issue.

    After digging into the configurations I posted earlier, we realized that the clocking/divider strategy was significantly different between the two.
    We found that there is an inflection point between 200MHz and 200MHz+ to select between the strategies:
    • 200MHz: VCO_DIV=2 / INTDEC=10
    • 200MHz+: VCO_DIV=2.5 / INTDEC=8
    If we set up the ADRV9009 with the 200MHz+ strategy, but use 200MHz as the device clock/sample rate/etc, the issue goes away.
    We wondered if the 200MHz divider strategy is simply unstable over temperature. It appears that the same divider strategy is used for 152.5MHz to 200MHz. Through several rounds of spot checking, we found the issue present in all configurations between 194MHz and 200MHz (inclusive).
    We then wanted to see if the issue was present at multiples of 200MHz.
    • A similar band exists at 400MHz (384MHz works, 390MHz and 400MHz do not)
    • 100MHz does not exhibit the issue
    For reference:
    • 400MHz: VCO_DIV=2 / INTDEC=5
    • 100MHz: VCO_DIV=2 / INTDEC=20
    All of these configurations were generated using v2.4 of the Filter Wizard. For the alternate 200MHz configuration, I generated a configuration for 200.1MHz and manually modified the clock freqs/sample rates/filter bandwidths to 200MHz.
    We are kind of stumped with how to proceed after these findings. From our perspective, this seems to eliminate the possibility of voltage supply and/or clock corruption. How were the divider strategies for each band chosen? Are we using a configuration that hasn't been exercised/tested?
     
    What do you recommend doing to handle this band? We are concerned about the possibility of more of these small bands with issues.
     
    Is this something that you can try reproducing in your lab?
  • Thanks for the detailed investigation.

    We are suspecting the issue is related to the profile being used. We will evaluate both the profiles you have shared and get back.

    For the profiles which are failing for "LOOPBACK_RX_LO_DELAY/LOOPBACK_RX_RX_QEC_INIT", can you please check with the default profile that is generated from Filter wizard. (Without any manual edit)

    FYI, we make a couple changes to these configurations prior to pushing them to the ADRV9009. First, we set the txChannels/rxChannels/obsRxChannelsEnable appropriately for our mode (transmit-only for this issue). Second, we fix the Tx FIR gain_dB to 6, which was suggested in another thread to get similar power out, regardless of configuration.

  • Just to keep the thread up-to-date, we tried the default profile generated from the Filter Wizard (no manual edits) and still saw the issue.

  • Is there any update on this issue? It's been over a month since any kind of activity.

  • We apologize for the delay here. Please get in touch with our local FAE for further updates.