Post Go back to editing

Harmonics over the BIST

Category: Software

Im using AD9364 with Spartan 7 FPGA ,I configured the register values for BIST and tsent the BIST tone signal (480 KHz) to the TX Chain of AD9364 ,and observed the BIST signal over the spectrum analyser ,and i got the spectrum as below,

                                                                                 

But when i try to push the BIST signal to FPGA , and when i loopback these received data to AD9364 again , and transmit the signal via AD9364 , and then when I observed the spectrum , But I am observing lot of harmonics , as attached below.

                                                                                                   

Note : I'm using Filter , by using AD9364 Filter Wizard , and i have attached my filter coefficients below for your reference.

Can i have some Suggestions to solve this issue .

// Data Sample Frequency = 7860000 Hz

AD9361_RXFIRConfig rx_fir_config = {

                              3, // rx

                              -12, // rx_gain

                              4, // rx_dec

                              {104,-50,182,-22,138,-45,5,-170,-178,-305,-283,-306,-201,-122,29,114,195,172,113,-26,-152,-271,-301,-259,-115,66,256,370,386,266,54, -211,-429,-540,-480,-262,75,421,675,732,558,172,-317,-769,-1022,

-972,-586,52,772,1346,1562,1282,511,-596,-1742,-2560,-2692,-1897, -120,2470,5500,8459,10811,12113,12113,10811,8459,5500,2470,-120,

  -1897,-2692,-2560,-1742,-596,511,1282,1562,1346,772,52,-586,-972,   -1022,-769,-317,172,558,732,675,421,75,-262,-480,-540,-429,-211,54,

    266,386,370,256,66,-115,-259,-301,-271,-152,-26,113,172,195,114,29,-122,  -201,-306,-283,-305,-178,-170,5,-45,138,-22,182,-50,104}, 

{983040000,245760000,122880000,61440000,30720000,7680000}, // rx_path_clks[6]

 200000,//6455171 // rx_bandwidth

};

 

AD9361_TXFIRConfig tx_fir_config = {

                              3, // tx

                              0, // tx_gain

                              4, // tx_int

  {47,-39,57,-65,-27,-150,-171,-283,-308,-360,-319,-269,-144,-24,

  117,202,245,201,107,-39,-173,-273,-288,-220,-69,113,283, 375,361,225,5,-244,-439,-516,-432,-200,126,448,663,686,489,105,

 -361,-770,-978,-893,-498,120,793,1309,1471,1165,405,-652,-1719, -2450,-2515,-1697,49,2552,5455,8277,10514,11750,11750,10514,8277,

 5455,2552,49,-1697,-2515,-2450,-1719,-652,405,1165,1471,1309,793,120,-498,-893,-978,-770,-361,105,489,686,663,448,126,-200,-432,-516,

 -439,-244,5,225,361,375,283,113,-69,-220,-288,-273,-173,-39,107,201,245,202,117,-24,-144,-269,-319,-360,-308,-283,-171,-150,-27,-65,57,-39,47},

{983040000,245760000,122880000,61440000,30720000,7680000}, // tx_path_clks[6]

  200000, //6455146 // tx_bandwidth

};

Regards,

Mark



Parents
  • You should be able to reduce the spur levels by optimizing the power supply . If the bandwidth requirement is small , you can reduce the filter bandwidth and get some rejection for the spur. 

    The harmonics seen looks to be because of Tx path saturation , Can you reduce the power going into Tx and check ? 

  • Hi  ,

    Here , I am  sending the BIST signal From AD9364 , at the amplitude of Fs/2 , by making 0X3F4 register {D5:D4} as "01" , as mentioned in the datasheet to FPGA , and from the  FPGA , Im just looping back(Sending back , all the data im receiving from AD9364) , so On FPGA , i don't have any control over the amplitude and power level of the BIST signal back to the TX of AD9364. .
                                                        

    Also , if the Power level (Amplitude) is the one of the factor , when i feed the BIST signal directly to TX of AD9364 ,can i know  why the spectrum looks bit clean , without much spurs/harmonics , as in the previous message in this thread.?

    I am sharing AD9364 Filter Wizard configuration , with you below, can you help me in configuring for better output ?

                                                                     

    Regards,

    Paras ADT-Blr Team

  • You can check the interface tuning , its part of the drivers . So you should be doing this already . 

    wiki.analog.com/.../interface_timing_validation

    Do you see similar issue of the Rx side as well.? 

    If you are sending tone from FPGA , can you try reducing the tone power by 6dB (-6dBFS) or 9dB , to ensure that Tx DAC is not getting saturated.

  • Hi ,

    I am not performing Interface Timing Validation as this process is associated with the AD9361_Conv file, which requires AXI files. Given that our architecture does not incorporate AXI files, we have excluded this testing. However, we have conducted BIST testing and Data Loopback.

    Additionally, regarding the tone signal, I am currently transmitting data at a power level of -10 dB.

    Regards,

    Paras ADT BLR Team

  • The issue that you are seeing could be because of any of the below ,

    • Power supply going below the tolerance limit during initialization. Balun supply being noisy. 
    • Interface timing issue : Manually tune the data clk delay (reg 0x006) 
    • Noisy reference clock. 
    • wrong sampling rate for the input signal

    Without sending any signal how is the Tx output noise floor. ?

    If the input tone power is -10dBFs , DAC saturation can be ruled out. 

  • Hi ,

    • Could you please explain how manually tuning the DataClk delay can result in a better spectrum?

    • Is there any relationship between the sampling rate within the FPGA and the sampling rate inside the AD9364? Additionally,

      "wrong sampling rate for the input signal" Represents?

    • Tx Noise floor , without sending any signal looks as below

                                               

    Regards,

    Paras ADT BLR Team

  • Without input signal, spectrum noise floor looks good. You can try sending tone at different power levels (say -40dBFS, -30 ,-20 etc) and check when the noise floor starts to degrade. 

    On sampling rate , its the rate at which you are sending data from FPGA and that should be same as the input FIR clock. 

    In below example the sampling rate is 61.44 MHz, I guess your case its 30.72 MHz. 

        {983040000,245760000,122880000,61440000,61440000,61440000}, // tx_path_clks[6]

    FYR  RE: Sampling frequency in fmcomms3-ebz 

  • Hi  ,

    1) Yes, we are fixing the FIR clock and the rate at which FPGA is sending the data is same.

    2)Consider , if my TX_path_Clks are set set as below ,

    {983040000,245760000,122880000,61440000,30720000,7680000}, // tx_path_clks[6]

    Now , the sampling rate inside AD9364 will be 30.72  ,But the sampling rate inside FPGA , we have set is 7.68 , which is also the FIR input clock rate.Is this sampling configuration at both the ends that we are following is fine ?

    3) I tested TX noise floor ,by transmitting a constant signal of 0x7FF and observed the spectrum for the span of 100 KHz  as below, which is pretty clean as compared to sine wave .

                                               

    However, when I transmit a sine wave, it remains unchanged. Upon examining the noise floor by varying the attenuation rate, I observe that the noise floor also attenuates as we adjust the attenuation factor. Unfortunately, the main signal also experiences an equivalent level of attenuation.

    Could you provide some insights on identifying the issue and mitigating the spurious distortions observed in the sine wave? I have attached the transmission spectrum result at 456 KHz below, where I observe peaks at the local oscillator (LO) frequency, as well as at +456 KHz and -456 KHz, accompanied by significant disturbances.

                                               

    Regards,

    PARAS ADT_BLR_Team

  • What is the difference in the tone signal between the above two screen captures,? How are you generating sine wave? So looks like your configuration is correct and issue is with the waveform.

    Now , the sampling rate inside AD9364 will be 30.72  ,But the sampling rate inside FPGA , we have set is 7.68 , which is also the FIR input clock rate.Is this sampling configuration at both the ends that we are following is fine ?

    The sampling rate in above example is 30.72 MHz. So from what you shared your sampling rate is 7.68 and matches with FPGA rate , If i understand correctly

    {983040000,245760000,122880000,61440000,30720000,7680000}, // tx_path_clks[6]

  • Hi ,

    1st Screen capture that you are seeing above is just a constant signal 0x7FF ,Whereas 2nd Screen capture reprsents a sine wave  of 456 KHz , which is being generated in MATLAB , and I'm feeding the IQ values to Block RAM in vivado and pushing it to LVDS.

    Regards,

    PARAS ADT_BLR Team

  • Are you upsampling the sinewave at 456KHz to 7.68 MHz in FPGA before sending over the interface to AD9361 ? You need to do that. 

  • Hi ,

    Yes, i am sampling the sine wave at MATLAB itself and creating the IQ samples, then only im feeding into Block RAM.

    Regrads,

    PARAS ADT_BLR Team

Reply Children