Post Go back to editing

AD9361 bandwidth

Category: Datasheet/Specs
Product Number: AD9361
Software Version: VIVADO 2018.2 NO-OS

Hello, I have not been clear about some concepts of AD9361 bandwidth, I hope you can teach me.

1. Does the channel bandwidth depend on a parameter value?

2. Does it need to be set separately or is the channel bandwidth determined after the setting of which value? Is the bandwidth of the two analog filters based on rx_rf_bandwidth multiplied by the corresponding multiple?

3. whether the frequency is higher than the analog filter bandwidth signal will be filtered out?

Expecting for a positive reply. Thanks in advance.

  • Channel bandwidths from less than 200 kHz to 56 MHz are supported.

    1. Does the channel bandwidth depend on a parameter value?

    Yes, need to set the bandwidth with the parameter value.

    2. Does it need to be set separately or is the channel bandwidth determined after the setting of which value? Is the bandwidth of the two analog filters based on rx_rf_bandwidth multiplied by the corresponding multiple?

    int32_t ad9361_set_rx_rf_bandwidth

    (struct ad9361_rf_phy *phy, uint32_t bandwidth_hz)

    Sets the RF bandwidth. Receives as parameters a structure that contains the AD9361 current state and the desired bandwidth in Hz. Returns 0 in case of success, negative error code otherwise.

    Desired bandwidth can be achieved by FIR filter bandwidth.

  • Thanks for your reply! But I still have some problem and hope to be teach.

    1. If the receiver bandwidth for the implementation of my project is expected to be 30MHz, do I use the ad9361_set_rx_rf_bandwidth() function to set it to 30000000?

    2. Based on the expected bandwidth, in the case of using fir, what should I set the Fstop and RF of the filter in the MATLAB APP? Should RF not be less than 30?

    3. Is it theoretically possible that signals with frequencies greater than Fstop are filtered out before the ADC?

  • I have done the test, when using dds to generate 5MHz sine wave for self-absorption experiment, ad9361_set_rx_rf_bandwidth(phy, 3000000), ad9361_set_tx_rf_bandwidth(phy, 3000000), The sampling rate is 61440000, and the filter parameters set by Matlab-App are as follows:

    AD9361_RXFIRConfig rx_fir_config = {
        3, // rx
        -6, // rx_gain
        2, // rx_dec
        {-5,-8,-7,4,21,33,26,1,-25,-28,0,38,49,15,-43,-70,-33,47,98,61,-45,-129,-100,36,163,151,-16,-198,-214,-19,231,293,72,-260,-387,-148,280,498,253,-286,-628,-395,272,778,586,-229,-955,-845,142,1170,1207,16,-1449,-1749,-299,1854,2670,869,-2588,-4695,-2434,4748,13975,20457,20549,14207,5008,-2251,-4637,-2626,805,2638,1869,-264,-1728,-1456,-7,1191,1174,158,-833,-957,-241,576,778,281,-387,-626,-292,246,496,284,-142,-385,-263,67,291,233,-15,-212,-199,-19,149,163,38,-98,-129,-47,60,98,48,-32,-70,-43,14,49,38,0,-28,-25,1,25,33,21,5,-7,-8,-5}, // rx_coef[128]
        128, // rx_coef_size
        {983040000,491520000,245760000,122880000,61440000,30720000}, // rx_path_clks[6]
        51641372 // rx_bandwidth
    };

    AD9361_TXFIRConfig tx_fir_config = {
        3, // tx
        0, // tx_gain
        2, // tx_int
        {-4,-8,-9,-1,17,36,42,26,-6,-29,-21,16,53,51,3,-56,-70,-15,69,105,45,-70,-138,-82,68,180,135,-52,-220,-200,22,261,283,28,-296,-381,-103,322,497,207,-334,-631,-350,324,785,542,-282,-964,-801,194,1177,1162,-33,-1447,-1697,-257,1831,2598,834,-2516,-4559,-2395,4527,13485,19894,20204,14257,5381,-1832,-4443,-2735,547,2472,1920,-70,-1578,-1477,-163,1053,1174,284,-704,-941,-343,457,750,362,-278,-589,-355,148,453,329,-56,-338,-293,-7,242,250,46,-166,-206,-68,104,161,75,-60,-123,-76,24,85,64,-7,-61,-59,-13,30,37,7,-29,-44,-30,-2,22,29,22,11,3}, // tx_coef[128]
        128, // tx_coef_size
        {983040000,245760000,245760000,122880000,61440000,30720000}, // tx_path_clks[6]
        33889517 // tx_bandwidth
    };

    5MHz can still be obtained by putting the data printed from the serial port into MATLAB for FFT operation. What is the reason? I think my understanding of bandwidth is not clear enough, I hope to get your advice. Thanks in advance.

  • Can you readback the BW that is getting set using the API ad9361_get_tx_rf_bandwidth?

    I am suspecting that the filter generated BW of 33.88MHz is getting set, hence you are able to see the 5MHz at the TX output.

    The BW that is being specified is the digital BW or the FIR BW. So signal more than the specified BW will be cut off after ADC, in the digital path, before reaching the digital interface.

  • Yes, I have print the API ad9361_get_tx_rf_bandwidth: 3000000. The value printed out from the serial port is shown in the figure:

    This result is obtained:  With FFT in MATLAB, it still can get 5MHz signal. It seems to me that the filter parameter does not act as a bandwidth.

    But I try to set ad9361_set_rx_rf_bandwidth(phy, 2000000), ad9361_set_tx_rf_bandwidth(phy, 2000000).  This result is obtained, which should be consistent with RF BW is the 3dB corner, I think. Is right?

    What is the reason?

    Another, my matlab dsp.SpectrumAnalyzer only show the negative spectrum. I never found the reason. Can you tell me why it is? I hope to get your advice. Thanks in advance.

  • Are you bypassing TXFIR and RXFIR?

     You need to enable that and then check the TX output.

    To go around with negative spectrum , you can try by swapping the I and Q bits using 0x10 register. 

  • I print the parameter of bypassing TXFIR and RXFIR:  , the output result is 1.

    So I'm bypassing TXFIR and RXFIR?  How can I change it? Should I just set these two values to 1?

    What's more, I wanted to check in with you: the bandwidth of filter in the MATLAB APP is the difference between Fpass and Fstop?

     I hope to get your advice. Thanks in advance.

  • Not sure about the sequence and the settings that you are following. By default, FIR should not be bypassed. You might be setting it to 1 in your sequence. pls check the code.

    Please start by following the default settings, then try initializing the  chip with it. Send a TX tone, and check if the required BW is being set.

    Then you can try initializing with the generated custom filter settings from filter wizard tool(dont do any changes to it) and then initialize with the same settings. Then send a TX tone and check if the required BW is set.

  • Thank you very much! After enabling FIR, I successfully obtained the bandwidth of the filter I set in the Matlab APP. However, when I changed the filter parameters, the following error occurred:  .I thought my filter settings were wrong, but when I used the official LTE20(Rx & Tx) and LTE15(Rx & Tx) configurations, this error still occurred. I don't quite understand why this error occurred or how to fix it. I hope to get your guidance. Thanks in advance.

  • Please generate a file file from the filter wizard tool and then use the same settings  in the TX and RX FIR structures.