Post Go back to editing

JESD configuration for Observation Receiver ADRV9009

Category: Software
Product Number: ADRV9009
Software Version: 3.6.2.1

I use attached configuration from ADRV9009 TES.
I manage to receive something on the ObsRx path using TALISE_setRxTxEnable( &talDev, TAL_ORX1_EN, TAL_TX1TX2).
But I do not get correct I and Q values, it seems that I get only I (or Q) repeated 4 times.
I suppose it is related to the fact that Rx and ObsRx do not have the same rate?

It seems that one can not activate Rx and ORx simultaneously, according to this TALISE_setRxTxEnable function, and to the data sheet:
observation receiver "is shared with the traffic receiver".

Is it possible to use the same JESD Lanes for Rx and ObsRx if they are never used simultaneously? Is it possible to switch JESD between Rx and ObsRx while in RadioOn?

<GUI_Setup>
  <Device>ADRV9009</Device>
  <DeviceClock>153.6MHz</DeviceClock>
  <TxChannel>TX1 and TX2 Enabled</TxChannel>
  <TxProfile>Tx 100/277MHz, IQrate 307.2MHz</TxProfile>
  <ObsProfile>ORX 277MHz, IQrate 307.2MHz, TotalDec 4</ObsProfile>
  <RxChannel>RX1 and RX2 Enabled</RxChannel>
  <RxProfile>Rx 100.00MHz, OutputRate 153.60MHz, TotalDec 8</RxProfile>
  <RxPllFreq>300</RxPllFreq>
  <RxPllExtLo>NO</RxPllExtLo>
  <Tx1InitAttenuation>40</Tx1InitAttenuation>
  <Tx2InitAttenuation>40</Tx2InitAttenuation>
  <RxFramerSelection>Framer A</RxFramerSelection>
  <TxFramerSelection>Deframer A</TxFramerSelection>
  <ObsRxFramerSelection>Framer B</ObsRxFramerSelection>
  <UseExternalSysRef>True</UseExternalSysRef>
  <FramerALane0>True</FramerALane0>
  <FramerALane1>True</FramerALane1>
  <FramerALane2>False</FramerALane2>
  <FramerALane3>False</FramerALane3>
  <FramerAScrambling>True</FramerAScrambling>
  <FramerARelink>False</FramerARelink>
  <FramerAK>32</FramerAK>
  <FramerAKOffset>31</FramerAKOffset>
  <FramerBLane0>False</FramerBLane0>
  <FramerBLane1>False</FramerBLane1>
  <FramerBLane2>True</FramerBLane2>
  <FramerBLane3>True</FramerBLane3>
  <FramerBScrambling>True</FramerBScrambling>
  <FramerBRelink>False</FramerBRelink>
  <FramerBK>32</FramerBK>
  <FramerBKOffset>31</FramerBKOffset>
  <DeframerALane0>True</DeframerALane0>
  <DeframerALane1>True</DeframerALane1>
  <DeframerALane2>True</DeframerALane2>
  <DeframerALane3>True</DeframerALane3>
  <DeframerAScrambling>True</DeframerAScrambling>
  <DeframerARelink>False</DeframerARelink>
  <DeframerAK>32</DeframerAK>
  <DeframerAKOffset>17</DeframerAKOffset>
  <DeframerBLane0>False</DeframerBLane0>
  <DeframerBLane1>False</DeframerBLane1>
  <DeframerBLane2>True</DeframerBLane2>
  <DeframerBLane3>True</DeframerBLane3>
  <DeframerBScrambling>True</DeframerBScrambling>
  <DeframerBRelink>False</DeframerBRelink>
  <DeframerBK>32</DeframerBK>
  <DeframerBKOffset>17</DeframerBKOffset>
  <RxQECInit>True</RxQECInit>
  <TxQECInit>True</TxQECInit>
  <InternalTxLOLInit>True</InternalTxLOLInit>
  <ExternalTxLOLInit>False</ExternalTxLOLInit>
  <Rx1QECTrack>True</Rx1QECTrack>
  <Rx2QECTrack>True</Rx2QECTrack>
  <Rx1Hd2Track>False</Rx1Hd2Track>
  <Rx2Hd2Track>False</Rx2Hd2Track>
  <Tx1QECTrack>True</Tx1QECTrack>
  <Tx2QECTrack>True</Tx2QECTrack>
  <Tx1LOLTrack>False</Tx1LOLTrack>
  <Tx2LOLTrack>False</Tx2LOLTrack>
  <Orx1QECTrack>False</Orx1QECTrack>
  <Orx2QECTrack>False</Orx2QECTrack>
</GUI_Setup>

  • Can you send us the profile that you are loading into the TES GUI?

    But I do not get correct I and Q values, it seems that I get only I (or Q) repeated 4 times.

    The RX and ORX can be of the same rate or it can in multiples of two. You should not see incorrect data because of the different sample rates.

    From UG:

    The two framers are capable of operating at different sample rates. The higher sample rate must be a power of two multiple of the lower sample rate (2×, 4×, or 8×). There are two options to make this work: oversample at the framer input or bit repeat at the framer output.
    Oversample mode

  • Thank you Srimoyi.

    What do you mean by "profile"? I have attached above a file configObsRxEZ.xml that can be opened with TES GUI. To be more precise, the sample rate of ObsRx is exactly twice that of Rx, but as there is only one ObsRx channel, both lane rates are the same. I just tried to change the .overSample filed of one framer or both, it was not better.

  • Can you please share with us the profile in .txt format?

  • From the File menu of the TES, I do not know how to save a profile in .txt format. I could only Load one (but I do not have one). What I normally use is the Save/Load GUI Setup. By the way, I can not connect to the board, because it is a custom board. Do you want me to "Create Scripts" in MathLab, Python or C?

  • For the final application, we do not need to get ObsRx data from the JESD link. For now our aim is to check that the ObsRx channel works well, and that our board is well designed and build. How can we?

    Is it possible to configure JESD with only Tx and ObsRx, without Rx (like an ADRV9008-2)?

  • Is it possible to use the same JESD Lanes for Rx and ObsRx if they are never used simultaneously? Is it possible to switch JESD between Rx and ObsRx while in RadioOn?

    No it is not possible to use the same lanes for RX and ORX.

    We have tried with the same configuration as yours and we were able to receive the data correctly on ORX port.

    Below is a snippet of the configuration that we had used for testing:

    Is it possible to configure JESD with only Tx and ObsRx, without Rx (like an ADRV9008-2)?

    Yes, it is possible. Refer below link:

     RE: How to use ADRV9009 as ADRV9008-2?  

  • Is it possible to configure JESD with only Tx and ObsRx, without Rx (like an ADRV9008-2)?

    Yes, it is possible. Refer below link:

     RE: How to use ADRV9009 as ADRV9008-2?  

    I did not succeed in following the link given. In the taliseInit_t talInit structure, Rx settings are simply absent in an ADRV9008-2, what should I write instead?

    I could configure Tx without Rx, but now ORx data are all zeros, which was not the case before. Attached is an example of ObsRx data received a few days ago, with repeated values.

    obsRxData.txt

  • Can you try by generating the config files for ADRV9008-2  from TES GUI in offline mode, as mentioned in the link? Then change the device name to ADRV9009 and then use the same config files in your testing and check. There will be only TX and ORX settings in these config files. You need to follow the same.

  • I always use TES GUI in offline mode with our custom board. Attached is the talise_configADRV9008-2.c file obtained for ADRV9008-2, and the talise_config.c file I have tried to use with our ADRV9009. It seems that I must write something in the Rx settings part, otherwise I get an error during initialisation. Can you improve these files? Can you send me the XML file from TES GUI? You have tested with Obs Rx2, but we have only Obs Rx1, does it make a difference? Do you think the issue is in the FPGA?

    Can you please share with us the profile in .txt format?

    Again, what does it mean?

    talise_config.zip

  • You have tested with Obs Rx2, but we have only Obs Rx1, does it make a difference? Do you think the issue is in the FPGA?

    No, it does not make any difference. This configuration should work and you should be able to receive correct ORX data.

    Let's discuss the issue one by one:

    1. With TX, RX ORX enabled and with the settings that you suggested in your first post, are you able to receive the ORX data correctly?  

    2. If the answer to point 1 is yes, then lets proceed to below.

    . It seems that I must write something in the Rx settings part, otherwise I get an error during initialisation. Can you improve these files?

    Yes, since you are configuring ADRV9009 as ADRV9008-2, you should give the RX settings part in the talise_config.c. Keeping the .rxChannels = TAL_RXOFF parameter, will disable all the RX channels in initialization. So, the talise_config.c file is correct., which you have shared.

    Can you send me the XML file from TES GUI?

    <GUI_Setup>
      <Device>ADRV9009</Device>
      <DeviceClock>153.6MHz</DeviceClock>
      <TxChannel>TX1 and TX2 Enabled</TxChannel>
      <TxProfile>Tx 100/277MHz, IQrate 307.2MHz</TxProfile>
      <ObsProfile>ORX 277MHz, IQrate 307.2MHz, TotalDec 4</ObsProfile>
      <RxChannel>RX1 and RX2 Enabled</RxChannel>
      <RxProfile>Rx 100.00MHz, OutputRate 153.60MHz, TotalDec 8</RxProfile>
      <RxPllFreq>1800</RxPllFreq>
      <RxPllExtLo>NO</RxPllExtLo>
      <Tx1InitAttenuation>0</Tx1InitAttenuation>
      <Tx2InitAttenuation>0</Tx2InitAttenuation>
      <RxFramerSelection>Framer A</RxFramerSelection>
      <TxFramerSelection>Deframer A</TxFramerSelection>
      <ObsRxFramerSelection>Framer B</ObsRxFramerSelection>
      <UseExternalSysRef>True</UseExternalSysRef>
      <FramerALane0>False</FramerALane0>
      <FramerALane1>True</FramerALane1>
      <FramerALane2>False</FramerALane2>
      <FramerALane3>False</FramerALane3>
      <FramerAScrambling>True</FramerAScrambling>
      <FramerARelink>False</FramerARelink>
      <FramerAK>32</FramerAK>
      <FramerAKOffset>31</FramerAKOffset>
      <FramerBLane0>True</FramerBLane0>
      <FramerBLane1>False</FramerBLane1>
      <FramerBLane2>False</FramerBLane2>
      <FramerBLane3>False</FramerBLane3>
      <FramerBScrambling>True</FramerBScrambling>
      <FramerBRelink>False</FramerBRelink>
      <FramerBK>32</FramerBK>
      <FramerBKOffset>31</FramerBKOffset>
      <DeframerALane0>True</DeframerALane0>
      <DeframerALane1>True</DeframerALane1>
      <DeframerALane2>False</DeframerALane2>
      <DeframerALane3>False</DeframerALane3>
      <DeframerAScrambling>True</DeframerAScrambling>
      <DeframerARelink>False</DeframerARelink>
      <DeframerAK>32</DeframerAK>
      <DeframerAKOffset>17</DeframerAKOffset>
      <DeframerBLane0>False</DeframerBLane0>
      <DeframerBLane1>False</DeframerBLane1>
      <DeframerBLane2>True</DeframerBLane2>
      <DeframerBLane3>True</DeframerBLane3>
      <DeframerBScrambling>True</DeframerBScrambling>
      <DeframerBRelink>False</DeframerBRelink>
      <DeframerBK>32</DeframerBK>
      <DeframerBKOffset>17</DeframerBKOffset>
      <RxQECInit>True</RxQECInit>
      <TxQECInit>True</TxQECInit>
      <InternalTxLOLInit>True</InternalTxLOLInit>
      <ExternalTxLOLInit>False</ExternalTxLOLInit>
      <Rx1QECTrack>True</Rx1QECTrack>
      <Rx2QECTrack>True</Rx2QECTrack>
      <Rx1Hd2Track>False</Rx1Hd2Track>
      <Rx2Hd2Track>False</Rx2Hd2Track>
      <Tx1QECTrack>False</Tx1QECTrack>
      <Tx2QECTrack>False</Tx2QECTrack>
      <Tx1LOLTrack>False</Tx1LOLTrack>
      <Tx2LOLTrack>False</Tx2LOLTrack>
      <Orx1QECTrack>False</Orx1QECTrack>
      <Orx2QECTrack>False</Orx2QECTrack>
    </GUI_Setup>

    Again, what does it mean?

    By profile in .txt format, I meant the profile that you are generating from the Talise profile wizard and load into the TES GUI. Since you are not generating that, you may ignore this question.