Post Go back to editing

ADRV9009-Custom profile

Hello, 

Considering the fact that there is no profile generator (Same as what we had for ad9371) we need to change the sampling rate, etc manually within the GUI. The point is that if you look at 9371 profile generator there is a long list of constraints that you need to follow to be able to have a working profile (https://wiki.analog.com/resources/eval/user-guides/mykonos/software/filters  ---> bottom of the page). 
However, now we do not know anything about those limitations for the adrv9009. So changing the values freely in the GUI is not possible since it generates error output. Using TES I can generate the profile that I want (Tx-rate of 491.52 Mhz and Rx rate of 245.76 MhZ). Here is the screenshot of TES software which I could program the board for. 
Now I want to have the same thing but via the iio-oscilloscope. However, when I manually change the rates at the oscilloscope software it generates some errors. 

I wonder if there is any possibility to export the profile from TES and use it in iio-oscilloscope. 

Thanks a lot in advance. 
Parents
  • There will be a profile generator for the ADRV9009 family of products, very similar to the AD9371 profile generator.

    It should release soon - feel free to ask for the schedule on the ADRV9009 design support forum.

    https://ez.analog.com/wide-band-rf-transceivers/design-support-adrv9008-1-adrv9008-2-adrv9009/

    -Michael

  • I moved this thread for you.

    -Michael

  • I checked on this with design. Still we don't have a release date for the Profile /Filter Wizard. 

  • you can load your profile directly without IIO oscilloscope. It is described in: https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009

    Using the cat command:

    root@analog:/sys/bus/iio/devices/iio:device3# echo Tx_BW200_IR245p76_Rx_BW200_OR245p76_ORx_BW200_OR245p76_DC245p76.txt > profile_config 

    But I have no idea where to get such a file, even if I use the TES Software offline. Or is this what needs to be released soon?

  • These files are generated using the ADRV9009 filter designer which hasn't released yet.

    You can find some sample profiles here: 

    https://github.com/analogdevicesinc/iio-oscilloscope/tree/master/filters/adrv9009

    -Michael

  • I have tried some profiles, but there is one that didn't execute correctly:

    https://github.com/analogdevicesinc/iio-oscilloscope/blob/master/filters/adrv9009/Tx_BW400_IR491p52_Rx_BW200_OR245p76_ORx_BW400_OR491p52_DC245p76.txt

    This is the log that I get through the serial terminal:

    [12498.995010] adrv9009 spi32766.1: ADIHAL_resetHw at index
    [12499.001358] axi_adxcvr 84a80000.axi-adxcvr-tx: qpll: fb_div=80, qpll: refclk_div=1
    [12499.008852] axi_adxcvr 84a50000.axi-adxcvr-rx-os: cpll: fb_div_N1=4
    [12499.008852] cpll: fb_div_N2=3
    [12499.008852] cpll: refclk_div=1
    [12499.021093] axi_adxcvr 84a60000.axi-adxcvr-rx: cpll: fb_div_N1=4
    [12499.021093] cpll: fb_div_N2=3
    [12499.021093] cpll: refclk_div=1
    [12499.033190] axi_adxcvr 84a80000.axi-adxcvr-tx: qpll: fb_div=80, qpll: refclk_div=1
    [12499.040687] axi_adxcvr 84a50000.axi-adxcvr-rx-os: cpll: fb_div_N1=4
    [12499.040687] cpll: fb_div_N2=3
    [12499.040687] cpll: refclk_div=1
    [12499.052921] axi_adxcvr 84a60000.axi-adxcvr-rx: cpll: fb_div_N1=4
    [12499.052921] cpll: fb_div_N2=3
    [12499.052921] cpll: refclk_div=1
    [12499.065289] adrv9009 spi32766.1: ADIHAL_resetHw at index
    [12501.273795] adrv9009 spi32766.1: ERROR: 3: TALISE_loadArmFromBinary(): ARM Profile error during bootup
    [12501.283026] adrv9009 spi32766.1: adrv9009_setup:497 (ret 5)
    [12503.390121] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12505.501521] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12507.612422] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12507.622358] adrv9009 spi32766.1: adrv9009_setup:525 (ret 5)
    [12507.628124] adrv9009 spi32766.1: adrv9009_setup:531 (ret 0)
    [12509.734589] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12509.744522] adrv9009 spi32766.1: adrv9009_setup:541 (ret 5)
    [12509.952950] adrv9009 spi32766.1: ERROR: 178: Device not in radioOff/IDLE state. Error in TALISE_enableTrackingCals()
    [12509.963393] adrv9009 spi32766.1: adrv9009_setup:707 (ret 5)
    [12509.970127] adrv9009 spi32766.1: ERROR: 29: TALISE_gpIntHandler(): ARM Forced a General Purpose Interrupt
    [12512.071869] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12512.081789] adrv9009 spi32766.1: adrv9009_setup:717 (ret 5)
    [12512.089020] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12512.103605] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12512.120008] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12512.134548] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12514.252551] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12514.263610] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12514.278347] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12514.293203] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12516.409848] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12518.521624] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12518.532372] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.548578] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.563166] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.578987] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.593569] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.609270] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.623826] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.639471] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.654055] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.672741] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12518.687288] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [12519.804593] adrv9009 spi32766.1: ERROR: 447: TALISE_setOrxLoSource: failed due to timeout waiting on ARM mailbox to become idle
    [12521.917418] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12524.029258] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12526.140953] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12528.251875] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12530.363370] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12532.475201] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12534.586598] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12536.698158] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12538.809613] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    [12540.921486] adrv9009 spi32766.1: ERROR: 177: ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()
    

    Is there another profile with the maximum Tx sampling speed?

  • We recently enabled support for both conversation channels. This required changing the M and F JESD parameters to enable 4 converters. I guess this might have broken the observation path when run at 491MSPS. Since in this configuration both ADC pairs are used in stitching mode. Unfortunately the filter designer and or the part requires OBS rate = TX rate. So without running the OBS at 491 you can't run TX that fast.

    -Michael   

  • Just some follow up -

    In order to load this profile you can workaround the issue by changing following settings on the OSC plugin ADRV9009 advanced tab prior in loading the 491MSPS Tx profile:

    • ORX Settings -> set OSB RX Channel Enable > ORX1
    • JESD Framer -> B -> M -> 2
    • JESD Framer -> B -> F -> 2

    Then "Save Settings" and wait 

    On the ADRV9009 tab now load the profile.

    Alternatively you can apply this device tree patch, which does the same.  

    diff --git a/arch/arm64/boot/dts/xilinx/adi-adrv9009.dtsi b/arch/arm64/boot/dts/xilinx/adi-adrv9009.dtsi
    index 2cceae6..0635ed6 100644
    --- a/arch/arm64/boot/dts/xilinx/adi-adrv9009.dtsi
    +++ b/arch/arm64/boot/dts/xilinx/adi-adrv9009.dtsi
    @@ -145,9 +145,9 @@
                    adi,jesd204-framer-b-bank-id = <0>;
                    adi,jesd204-framer-b-device-id = <0>;
                    adi,jesd204-framer-b-lane0-id = <0>;
    -               adi,jesd204-framer-b-m = <4>;
    +               adi,jesd204-framer-b-m = <2>;
                    adi,jesd204-framer-b-k = <32>;
    -               adi,jesd204-framer-b-f = <4>;
    +               adi,jesd204-framer-b-f = <2>;
                    adi,jesd204-framer-b-np = <16>;
                    adi,jesd204-framer-b-scramble = <1>;
                    adi,jesd204-framer-b-external-sysref = <1>;
    @@ -249,7 +249,7 @@
                    adi,orx-gain-control-orx2-min-gain-index = <195>;
     
                    adi,obs-settings-framer-sel = <1>;
    -               adi,obs-settings-obs-rx-channels-enable = <3>;
    +               adi,obs-settings-obs-rx-channels-enable = <1>;
                    adi,obs-settings-obs-rx-lo-source = <0>;
     
                    /* TX */
    diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9009.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9009.dts
    index 036af22..8b5fe56 100644
    --- a/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9009.dts
    +++ b/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9009.dts
    @@ -189,7 +189,7 @@
                            #clock-cells = <0>;
                            clock-output-names = "jesd_rx_os_lane_clk";
     
    -                       adi,octets-per-frame = <4>;
    +                       adi,octets-per-frame = <2>;
                            adi,frames-per-multiframe = <32>;
                    };
    

    -Michael

  • Thanks for the assistance!

    But i still have problems to set it up. Previous errors are gone. I get the following print from my serial port:

    [ 8469.118330] axi_adxcvr 84a80000.axi-adxcvr-tx: qpll: fb_div=40, qpll: refclk_div=1
    [ 8469.134846] axi_adxcvr 84a50000.axi-adxcvr-rx-os: cpll: fb_div_N1=5
    [ 8469.134846] cpll: fb_div_N2=4
    [ 8469.134846] cpll: refclk_div=1
    [ 8469.147023] adrv9009 spi32766.1: ADIHAL_resetHw at index

    I have made the settings like you described:

        

    I have pressed the save settings.

    And then I load: Tx_BW400_IR491p52_Rx_BW200_OR245p76_ORx_BW400_OR491p52_DC245p76.txt

    If I check my spectrum analyzer, I see the LO leakage (-70 dBm) on the desired frequency. But the DDS or the DAC buffer output buffer didn't produce anything. The largest tone on my spectrum analyzer is -40dBm@10,765GHz.

    When I start the calibration sequence for CAL TX QEC and CAL TX LOL a stronger signal appears during the calibration. But when it finishes only the LO leakage is visible.

    Maybe I need to set this somewhere in the ADRV9009 Advanced tab?

         -                       adi,octets-per-frame = <4>;
        +                       adi,octets-p

Reply
  • Thanks for the assistance!

    But i still have problems to set it up. Previous errors are gone. I get the following print from my serial port:

    [ 8469.118330] axi_adxcvr 84a80000.axi-adxcvr-tx: qpll: fb_div=40, qpll: refclk_div=1
    [ 8469.134846] axi_adxcvr 84a50000.axi-adxcvr-rx-os: cpll: fb_div_N1=5
    [ 8469.134846] cpll: fb_div_N2=4
    [ 8469.134846] cpll: refclk_div=1
    [ 8469.147023] adrv9009 spi32766.1: ADIHAL_resetHw at index

    I have made the settings like you described:

        

    I have pressed the save settings.

    And then I load: Tx_BW400_IR491p52_Rx_BW200_OR245p76_ORx_BW400_OR491p52_DC245p76.txt

    If I check my spectrum analyzer, I see the LO leakage (-70 dBm) on the desired frequency. But the DDS or the DAC buffer output buffer didn't produce anything. The largest tone on my spectrum analyzer is -40dBm@10,765GHz.

    When I start the calibration sequence for CAL TX QEC and CAL TX LOL a stronger signal appears during the calibration. But when it finishes only the LO leakage is visible.

    Maybe I need to set this somewhere in the ADRV9009 Advanced tab?

         -                       adi,octets-per-frame = <4>;
        +                       adi,octets-p

Children
  • The counterpart of the link can't be set in the advanced tab. You would need to do this in the device tree.

    However in my testing I also didn't do it, the TX link came up. Samples coming out of the observation channel are not right in this setup, but this is expected.   

    Can you read the jesd status files like in the example below?

    [ 87.280306] adrv9009 spi32766.1: ADIHAL_resetHw at index
    [ 87.289626] axi_adxcvr 84a80000.axi-adxcvr-tx: qpll: fb_div=40, qpll: refclk_div=1
    [ 87.306135] axi_adxcvr 84a50000.axi-adxcvr-rx-os: cpll: fb_div_N1=5
    [ 87.306135] cpll: fb_div_N2=4
    [ 87.306135] cpll: refclk_div=1
    [ 87.318306] adrv9009 spi32766.1: ADIHAL_resetHw at index

    root@analog:~# grep "" /sys/bus/platform/devices/*jesd*/status
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Link is enabled
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Measured Link Clock: 245.784 MHz
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Reported Link Clock: 245.760 MHz
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Lane rate: 9830.400 MHz
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Lane rate / 40: 245.760 MHz
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:SYNC~: deasserted
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Link status: DATA
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:SYSREF captured: Yes
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:SYSREF alignment error: No
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Link is enabled
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Measured Link Clock: 245.782 MHz
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Reported Link Clock: 245.760 MHz
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Lane rate: 9830.400 MHz
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Lane rate / 40: 245.760 MHz
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Link status: DATA
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:SYSREF captured: Yes
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:SYSREF alignment error: No
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Link is enabled
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Measured Link Clock: 245.782 MHz
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Reported Link Clock: 245.760 MHz
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Lane rate: 9830.400 MHz
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Lane rate / 40: 245.760 MHz
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Link status: DATA
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:SYSREF captured: Yes
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:SYSREF alignment error: No
    root@analog:~#

     

    -Michael

  • analog@analog:~$ grep "" /sys/bus/platform/devices/*jesd*/status
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Link is enabled
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Measured Link Clock: 245.786 MHz
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Reported Link Clock: 245.760 MHz
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Lane rate: 9830.400 MHz
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Lane rate / 40: 245.760 MHz
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:SYNC~: asserted
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Link status: CGS
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:SYSREF captured: Yes
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:SYSREF alignment error: No
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Link is enabled
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Measured Link Clock: 122.893 MHz
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Reported Link Clock: 122.880 MHz
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Lane rate: 4915.200 MHz
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Lane rate / 40: 122.880 MHz
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:Link status: DATA
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:SYSREF captured: Yes
    /sys/bus/platform/devices/84aa0000.axi-jesd204-rx/status:SYSREF alignment error: No
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Link is enabled
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Measured Link Clock: 245.786 MHz
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Reported Link Clock: 245.760 MHz
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Lane rate: 9830.400 MHz
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Lane rate / 40: 245.760 MHz
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:Link status: DATA
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:SYSREF captured: Yes
    /sys/bus/platform/devices/84ab0000.axi-jesd204-rx/status:SYSREF alignment error: No

  • /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:SYNC~: asserted
    /sys/bus/platform/devices/84a90000.axi-jesd204-tx/status:Link status: CGS

    The TX link is down - if you load a different profile does it come up again?

  • Yes my DDS generator runs like expected. I have checked my spectrum analyzer. This is the profile that I have loaded to verify: t"Tx_BW200_IR245p76_Rx_BW200_OR245p76_ORx_BW200_OR245p76_DC245p76.txt"

  • Which boot files are you using? Something you build your own - or from the latest SD card image?

  • Sometimes a erroneous setting in the advanced tab can cause undesired behavior.

    Can you try to close OSC and then delete it's osc_profile.ini file where it keeps these settings.  

    C:\Users\$USER_NAME\AppData\Local\.osc_profile.ini

    -Michael

  • I have closed the application. Deleted the file. Still the same problem.

  • After turning off the fan, I could make it fail as well.

    The design might not be timing optimized and in this maximum rate configuration with both the ADCs and DACs turned on, the device get's really hot. Can you try to blow some air over the board when using this configuration?

    -Michael

      

  • I have put a cooler above the ADRV9009. And the link status is still CGS.