Post Go back to editing

ADRV9009 null IQ data on RX0

Category: Software
Product Number: adrv9009

Hi, 

I'm working on a custom board bringup based on the adrv9009-pcbz.

The design uses a different VCXO frequency for the ad9528. I've generated a profile using the profile wizard to set a sample rate compatible with that vcxo.

I also had to disable some of the channels as they are not routed on the board. This was causing the initial calibrations to timeout.

Once booted in Linux, I'm able to check that everything is fine with jesd204 interface using`jesd_status`.

when I try to sample data using `pyadi-iio`, I can only get null values (I=0, Q=0) on RX0 while RX1 seems to be working fine.

I noticed the same behavior using the adrv9009 example application from llibiio.

What could be the source of this issue? A bad profile? A bad jesd204 configuration?

do I have to change jesd204 parameters when I disable channels with `adi,obs-settings-obs-rx-channels-enable` for example?

I tried booting my zcu102 image with a my values for  `adi,obs-settings-obs-rx-channels-enable` and `adi,tx-settings-tx-channels` and things seem to be working fine.

Also, can booting Linux with unrouted channels enabled damage the device?

Thanks for your help,

Liam

  • ADI North America will be on summer shutdown starting August 24, 2023; perhaps another community member can assist you until our return on September 5th.
  • Hi Liam,

    Besides the VCXO frequency are there any other differences?

    What is the diff between your custom devicetree and the one from the zcu102 design?

    Also, can booting Linux with unrouted channels enabled damage the device?

    I don't think so.

    -Michael

  • Hi ,

    I'm using a lanerate of 250MHz, to match with the updated VCXO frequency.

    I also updated the devicetree to use the output of the Profile wizard assuming that I had to do that because of my new lanerate. I've attached a dtsi I use with the default devicetree to override some of the parameters.

     

    #if AD9528_VCXO_FREQ == 100000000
    #define AD9528_REF_DIV		2
    #define AD9528_PLL1_FB_DIV	5
    #define AD9528_PLL2_N2_DIV	5
    #define AD9528_SYSREF_K_DIV	20
    #elif AD9528_VCXO_FREQ == 125000000
    #define AD9528_REF_DIV		8
    #define AD9528_PLL1_FB_DIV	25
    #define AD9528_PLL2_N2_DIV	4
    #define AD9528_SYSREF_K_DIV	25
    #else
    #error "Unsupported AD9528 VCXO Frequency"
    #endif
    
    &clk0_ad9528 {
    	adi,vcxo-freq = <AD9528_VCXO_FREQ>;
    
    	adi,refa-enable;
    	adi,refa-diff-rcv-enable;
    	/delete-property/ adi,refa-in-cmos-neg-inp-enable;
    	adi,refa-r-div = <AD9528_REF_DIV>;
    
    	adi,refb-enable;
    	/delete-property/ adi,refb-diff-rcv-enable;
    	adi,refb-in-cmos-neg-inp-enable;
    	adi,refb-r-div = <AD9528_REF_DIV>;
    
    	/* adi,ref-mode = <REF_MODE_EXT_REF>; */
    	adi,ref-mode = <REF_MODE_SELECT_REFA>;
    
    	/delete-property/ adi,osc-in-cmos-neg-inp-enable;
    
    
    	adi,pll1-feedback-div = <AD9528_PLL1_FB_DIV>;
    
    	/* PLL2 output set to 1GHz */
    	adi,pll2-vco-div-m1 = <4>;
    	adi,pll2-n2-div = <AD9528_PLL2_N2_DIV>;
    	adi,pll2-freq-doubler-enable;
    
    	adi,sysref-k-div = <AD9528_SYSREF_K_DIV>;
    };
    
    &ad9528_0_c13 {
    	adi,channel-divider = <4>;
    };
    &ad9528_0_c1 {
    	adi,channel-divider = <4>;
    };
    &ad9528_0_c12 {
    	adi,channel-divider = <4>;
    };
    &ad9528_0_c3 {
    	adi,channel-divider = <4>;
    };
    
    &trx0_adrv9009 {
    	/* RX */
    
    	adi,rx-profile-rx-fir-gain_db = <(-6)>;
    	adi,rx-profile-rx-fir-num-fir-coefs = <48>;
    	adi,rx-profile-rx-fir-coefs = /bits/ 16
    		<(-5) (-16) (24) (39) (-57) (-92) (123) (179) (-230) (-323)
    		(400) (543) (-657) (-875) (1040) (1378) (-1618) (-2181) (2539)
    		(3604) (-4339) (-7197) (9305) (31179) (31179) (9305) (-7197)
    		(-4339) (3604) (2539) (-2181) (-1618) (1378) (1040) (-875)
    		(-657) (543) (400) (-323) (-230) (179) (123) (-92) (-57) (39)
    		(24) (-16) (-5)>;
    	adi,rx-profile-rx-fir-decimation = <2>;
    	adi,rx-profile-rx-dec5-decimation = <4>;
    	adi,rx-profile-rhb1-decimation = <1>;
    	adi,rx-profile-rx-output-rate_khz = <250000>;
    	adi,rx-profile-rf-bandwidth_hz = <200000000>;
    	adi,rx-profile-rx-bbf3d-bcorner_khz = <200000>;
    	adi,rx-profile-rx-adc-profile = /bits/ 16
    		<(184) (138) (169) (90) (1280) (921) (1331) (87) (1367) (44)
    		(1025) (20) (48) (48) (37) (207) (0) (0) (0) (0) (52) (0) (7)
    		(6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0)
    		(0) (165) (44) (31) (905)>;
    	adi,rx-profile-rx-ddc-mode = <0>;
    	adi,rx-nco-shifter-band-a-input-band-width_khz = <0>;
    	adi,rx-nco-shifter-band-a-input-center-freq_khz = <0>;
    	adi,rx-nco-shifter-band-a-nco1-freq_khz = <0>;
    	adi,rx-nco-shifter-band-a-nco2-freq_khz = <0>;
    	adi,rx-nco-shifter-band-binput-band-width_khz = <0>;
    	adi,rx-nco-shifter-band-binput-center-freq_khz = <0>;
    	adi,rx-nco-shifter-band-bnco1-freq_khz = <0>;
    	adi,rx-nco-shifter-band-bnco2-freq_khz = <0>;
    	adi,rx-settings-rx-channels = <3>;
    
    	/* ORX */
    
    	adi,orx-profile-rx-fir-gain_db = <(-6)>;
    	adi,orx-profile-rx-fir-num-fir-coefs = <48>;
    	adi,orx-profile-rx-fir-coefs = /bits/ 16
    		<(-5) (-15) (23) (38) (-54) (-88) (102) (139) (-246) (-302)
    		(405) (514) (-654) (-832) (1028) (1312) (-1596) (-2080) (2514)
    		(3463) (-4281) (-6896) (9413) (30864) (30864) (9413) (-6896)
    		(-4281) (3463) (2514) (-2080) (-1596) (1312) (1028) (-832)
    		(-654) (514) (405) (-302) (-246) (139) (102) (-88) (-54) (38)
    		(23) (-15) (-5)>;
    	adi,orx-profile-rx-fir-decimation = <2>;
    	adi,orx-profile-rx-dec5-decimation = <4>;
    	adi,orx-profile-rhb1-decimation = <1>;
    	adi,orx-profile-orx-output-rate_khz = <250000>;
    	adi,orx-profile-rf-bandwidth_hz = <200000000>;
    	adi,orx-profile-rx-bbf3d-bcorner_khz = <225000>;
    	adi,orx-profile-orx-low-pass-adc-profile = /bits/ 16
    		<(184) (138) (169) (90) (1280) (921) (1331) (87) (1367) (44)
    		(1025) (20) (48) (48) (37) (207) (0) (0) (0) (0) (52) (0) (7)
    		(6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0)
    		(0) (165) (44) (31) (905)>;
    	adi,orx-profile-orx-band-pass-adc-profile = /bits/ 16
    		<(184) (138) (169) (90) (1280) (921) (1331) (87) (1367) (44)
    		(1025) (20) (48) (48) (37) (207) (0) (0) (0) (0) (52) (0) (7)
    		(6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0)
    		(0) (165) (44) (31) (905)>;
    	adi,orx-profile-orx-ddc-mode = <0>;
    	adi,obs-settings-obs-rx-channels-enable = <3>;
    
    	/* TX */
    
    	adi,tx-profile-tx-fir-gain_db = <6>;
    	adi,tx-profile-tx-fir-num-fir-coefs = <20>;
    	adi,tx-profile-tx-fir-coefs = /bits/ 16
    		<(30) (-76) (126) (-168) (190) (-139) (-132) (1056) (-3124)
    		(20299) (-3124) (1056) (-132) (-139) (190) (-168) (126) (-76)
    		(30) (0)>;
    	adi,tx-profile-dac-div = <1>;
    	adi,tx-profile-tx-fir-interpolation = <1>;
    	adi,tx-profile-thb1-interpolation = <2>;
    	adi,tx-profile-thb2-interpolation = <2>;
    	adi,tx-profile-thb3-interpolation = <2>;
    	adi,tx-profile-tx-int5-interpolation = <1>;
    	adi,tx-profile-tx-input-rate_khz = <250000>;
    	adi,tx-profile-primary-sig-bandwidth_hz = <75000000>;
    	adi,tx-profile-rf-bandwidth_hz = <200000000>;
    	adi,tx-profile-tx-dac3d-bcorner_khz = <200000>;
    	adi,tx-profile-tx-bbf3d-bcorner_khz = <100000>;
    	adi,tx-profile-loop-back-adc-profile = /bits/ 16
    		<(240) (140) (179) (90) (1280) (473) (1274) (36) (1316) (22)
    		(804) (35) (48) (48) (30) (172) (0) (0) (0) (0) (43) (0) (7)
    		(6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0)
    		(0) (165) (44) (31) (905)>;
    	adi,tx-settings-tx-channels = <3>;
    
    	/* Clocks */
    
    	adi,dig-clocks-device-clock_khz = <250000>;
    	adi,dig-clocks-clk-pll-vco-freq_khz = <10000000>;
    	adi,dig-clocks-clk-pll-hs-div = <1>;
    };
    
    &axi_adrv9009_adxcvr_tx {
    	adi,sys-clk-select = <XCVR_QPLL>;
    };
    &axi_adrv9009_adxcvr_rx {
    	adi,sys-clk-select = <XCVR_QPLL>;
    };
    &axi_adrv9009_adxcvr_rx_os {
    	adi,sys-clk-select = <XCVR_QPLL>;
    };

    Note that I haven't changed any of the firmware files.

    Thanks,
    Liam

  • Hi Liam,

    Can you write this to a file and attach here?

    root@analog:/# grep "" /sys/bus/platform/drivers/axi-jesd204*/*/status /sys/bus/platform/drivers/axi-jesd204*/*/lane* /sys/bus/platform/drivers/axi-jesd204*/*/encoder

    root@analog:/# cat /sys/kernel/debug/clk/clk_summary

    root@analog:/# iio_info

    -Michael