Post Go back to editing

AD9375: Mixing between TX and RX LO

Category: Hardware
Product Number: AD9375

Hello

I have custom hardware. It is mostly an exact copy of the ADRV9375 evaluation board except that it has custom RX and TX signal conditioning / filtering.

I am testing my custom hardware on the ZCU102. It is functionally working.

However, I have discovered an issue where I am seeing mixing between the AD9375 TX LO and RX LO. 

For example, if I set the TX LO to 4.8GHz and the RX LO to 4.8001 GHz (100kHz offset), I see my RX input signal is modulated by the 100kHz offset between the TX and RX LO and I see a large number of sideband spurs.

If I separate the TX LO from the RX LO by a large amount (10MHz), then I no longer see this problem.

If I set both the TX LO and RX LO to the exact same frequency (4.8GHz), I can see that the LOs sometimes 'beat' with each other. The result is that my RX input signal has very bad phase noise.

My end application is a TDD application where the TX and RX LO frequency will be required to be the same and both will need to run continuously.

I have two questions about this:

1) Is it possible for the TX and RX LO to share a single LO? In this case I only configure one LO and set both the TX and RX signal chains to use the single LO.

2) I think the mixing may be happening through power supply coupling. I used the exact same power supply filter configuration (ferrite and decoupling caps) as the evaluation board. If I am seeing mixing between the LOs because of power supply coupling, which of the following power supplies are the most likely culprits:

VDDA_RXLO / VDDA_TXLO

VDDA_RXSYNTH / VDDA_TXSYNTH

VDDA_RXVCO / VDDA_TXVCO

Based on this I can focus on ensuring good isolation on the most likely culprit power supply.

3) DO you have any other advice to reduce the mixing between the AD9375 TX LO and RX LO?

Thanks

gavin

Parents Reply Children
  • 1) Is it possible for the TX and RX LO to share a single LO? In this case I only configure one LO and set both the TX and RX signal chains to use the single LO.

    No, We cannot use same internal LO for both TX and RX .

    My end application is a TDD application where the TX and RX LO frequency will be required to be the same and both will need to run continuously.

    If its a TDD application , TX and RX channels will not run continuously. You should not see any LO coupling issues in this case .

  • Hello Vanitha

    In terms of the TDD operation:

    If you disable the TX channel (using the TX_ENABLE inputs), does the TX LO continue to run?

    If you disable the RX channel (using the RX_ENABLE inputs), does the RX LO continue to run?

    Thank you.

  • If you disable the TX channel (using the TX_ENABLE inputs), does the TX LO continue to run?

    If you disable the RX channel (using the RX_ENABLE inputs), does the RX LO continue to run?

    If the TX channel is disabled , TX LO will not run . And it applies the same for RX as well .

  • Hello Vanitha

    I have done some testing on the AD9375 evaluation board. I have it configured for pin control mode (TDD). I am driving the RX ENABLE pin high so that I can capture RX channel data. I am driving TX ENABLE pin low so the TX is disabled (I confirmed this on a spectrum analyser).

    However, my results are contradicting what you are saying.

    I am tuning the RX LO to 4.8GHz and the TX LO to 4.8001GHz (100kHz difference). Since the TX is disabled, the TX LO should not be running. But I am still seeing sideband spurs with a 200kHz offset (100kHz x 2) on the RX input signal:

    I repeated the test by tuning the RX LO to 4.8GHz and the TX LO to 4.801GHz (1MHz difference).I am seeing sideband spurs with a 2MHz offset (1MHz x 2):

    Please can you verify the TX LO behaviour while TX is disabled. What is the behaviour of the TX VCO when TX is disabled?

    Thank you.

  • We are looking into this issue , will get back to you asap.

  • We also see the similar behaviour with CW tone.

    However, when you use a modulated signal which is the real application, we don't expect any problem with the spur/ demodulation performance. See below for the capture with modulated signal where in we don't observe any spurious or unexpected behavior.

    FYI- The TX and RX LO spaced 100kHz apart

  • Hello Vanitha

    Unfortunately this is still an issue for us. Please can you do your best to answer the following questions:

    1) The level of the sideband mixing spurs seems to be a function of how close the TX and RX LO frequency are. What is the LO loop filter bandwidth inside the AD9375? I suspect that if the difference in frequency is within this bandwidth, then the mixing occurs. If the difference in frequency is outside this range then the mixing does not occur. I would like to know what is the minimum separation between the TX and RX LO frequencies that I can safely operate at so as not to get mixing spurs.

    2) Please confirm that the AD9375 does not include any support for synchronising the RX and TX LO.

    3) I think the mixing may be happening through power supply coupling. I used the exact same power supply filter configuration (ferrite and decoupling caps) as the evaluation board. If I am seeing mixing between the LOs because of power supply coupling, which of the following power supplies are the most likely culprits:

    VDDA_RXLO / VDDA_TXLO

    VDDA_RXSYNTH / VDDA_TXSYNTH

    VDDA_RXVCO / VDDA_TXVCO

    Based on this I can focus on ensuring good isolation on the most likely culprit power supply.

    Thank you.

  • What is the LO loop filter bandwidth inside the AD9375?

    The Loop Filter Bandwidth defaults are 50 kHz for the Rx, Tx, and ORx synthesizers, and 350 kHz for the clock synthesizer.

    what is the minimum separation between the TX and RX LO frequencies that I can safely operate at so as not to get mixing spurs.

    50MHz would be the minimum separation between the TX and RX LO .

    2) Please confirm that the AD9375 does not include any support for synchronising the RX and TX LO.

    AD9371 does not support RF phase sync. Each time you boot , the RF phase between the chains can be different and you need to do external phase calibration.

    Can you try keeping the TX and RX LO frequencies 50MHz apart , tune the RX NCO accordingly with the help of attached script and see if it helps with your requirement?

    ########################
    #ADI Demo Python Script
    ########################
    #Gui Version:2.0.68	DLL Version:1.5.2.3566	Fpga Version:46000200 ArmVersion: 5.2.2
    
    #Import Reference to the DLL
    import System
    from System import Array
    from System import Int16
    from System import UInt32
    from System import Byte
    from System import SByte
    import time
    import clr
    clr.AddReferenceToFileAndPath("C:\\Program Files (x86)\\Analog Devices\\AD9371 Transceiver Evaluation Software\\AdiCmdServerClient.dll")
    from AdiCmdServerClient import AdiCommandServerClient
    from AdiCmdServerClient import Enums
    from AdiCmdServerClient import MykDpdConfig
    from AdiCmdServerClient import MykClgcConfig
    from AdiCmdServerClient import MykVswrConfig
    from AdiCmdServerClient import TddFsmParameters_us
    from AdiCmdServerClient import MykonosProfileData
    from AdiCmdServerClient.AD9528 import AD9528Settings
    
    #Create an Instance of the Class
    Link = AdiCommandServerClient.Instance
    Mykonos = AdiCommandServerClient.Instance.Mykonos
    FpgaMykonos = AdiCommandServerClient.Instance.FpgaMykonos
    
    #Connect to the Zynq Platform
    #Connect to the Zynq Platform
    if(Link.hw.Connected == 1):
        Connect = 1
    else:
    	Connect = 0
    	Link.hw.Connect("192.168.1.40", 55555)
       
    
    
    #Read the Version
    print Link.version()
    
    Link.spiWrite(0x190, 0x03)# Enable RX1 and RX2 Channel NCO
    
    print 'Default RX FTW set'
    print Link.spiRead(0x191)
    print Link.spiRead(0x192)
    print Link.spiRead(0x192)
    
    #Combined with 0x192 and 0x193, these registers for a 24-bit number that sets the frequency of the NCO according to the following equation.  Note that the 8 LSBs are not currently used.
    
    #Calculate FTW for Rx NCO using, F_NCO = F_(PFIR_IN)×((RX_NCO_CH1_FTW[23:8])/65536)
    
    #For example, if F_(PFIR_IN) = 245.76MHz, then the frequency tuning word (FTW) NCO would be 2048.
    
    Link.spiWrite(0x191, 0x80)  #RX_NCO_CH1_FTW[23:16]
    Link.spiWrite(0x192, 0x00)  #RX_NCO_CH1_FTW[15:8]
    Link.spiWrite(0x193, 0x00)  #RX_NCO_CH1_FTW[7:0]
    
    print 'After setting the FTW NCO'
    print Link.spiRead(0x191)
    print Link.spiRead(0x192)
    print Link.spiRead(0x192)
    
    #Disconnect from the Zynq Platform
    if(Connect == 0):
        Link.hw.Disconnect()