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 Reply Children
  • 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:

    profile load log.txt
    [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?

    •  Analog Employees 
    on Sep 6, 2018 2:43 PM in reply to JV-IE

    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   

    •  Analog Employees 
    on Sep 11, 2018 8:28 AM in reply to mhennerich

    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