This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AFE7900EVM: Query regarding the variable input RF frequency

Part Number: AFE7900EVM
Other Parts Discussed in Thread: AFE7900

Hello, 

I am planning to use AFE7990EVM with ZCU102 FPGA Evalutaion board. My input frequency is not a fixed frequency. It will be inside a range and will vary based on the requirement inside the applicable frequency range. 

So, By using AFE7900VM DDC , So, based on my input RF frequency, NCO selection needs to be done to generate baseband I , Q.

So, every time based on change in my RF input frequency, Do I need to manual change of NCO frequency or Is there any way ( by using Latte) to change the NCO frequency based on the input RF frequency to generate I.Q.

For example, Input RF = 30 MHz  with bandwidth = 1 MHz, NCO FREQ. requirement = 30 MHz and generation of I,Q by using decimation filters . Now my input RF frequency is being changed to let's say 50 MHz and now NCO freq setting requirement = 50 MHz to generate baseband. So, Is it possible to make an implementation in latte , to change the NCO frequency same as RF input frequency to generate I,Q ?

As NCO is programmable, so, basically, I want to make NCO programmable with respect to input frequency range to generate constant baseband I,Q. For which there has to be one logic that change the NCO frequency same based on input RF frequency. 

Awaited your support and guidance on the above,

  • Hi Maitry,

    Thank you for your question. I will tag an expert so you can get the best answer on this very technical question.

    Best,

    Drew

  • Hi Maitry,

    The AFE does not have a feature to automatically update the NCO frequency based on the input frequency. Updating the AFEs NCO frequency will have to be done manually. 

    Regards,

    David Chaparro

  • Hello,

    I know, that there is no readily available mechanism for updating AFEs NCO frequency, but by using Latte , if we try to implement the logic, So Is there any possible way to automate that?

    I think, first we need to detect the input frequency. once the input frequency is known , based on that , we can develop some implementation tos et NCO frequency. So, I am asking that in Latte , if we want to implement some logic for the above requirement, is that possible ? 

    Awaited your support.

  • Hi Maitry,

    If the input signal is out of DDC bandwidth, it will not show up in the DDC output. So unless we know the band within which the signal is guaranteed to be with-in, signal band cannot directly detected to switch the NCO.

    One way to do this would be to keep incrementing NCO until signal is found. This essentially is like scanning the entire possible BW for signal. 

    When planning possible frequency bands for signal, please note that ADC in AFE can only support operation in one Nyquist zone in one bringup. 

    Regards,

    Vijay

  • Hi Vijay,

    I think , I got your point . You mean to say that, We need to fix one frequency band for example let's say my frequency band of interest is 35-60 MHz and it is guaranteed that the input signal will be within the range of 35-60 MHz only with the fixed bandwidth of the signal +/-1 MHz. 

    Then, we need to scan the NCO for this range only until ,we got the baseband output at 0 Hz , right?

    Please verify weather my understanding is correct or not?

    Also, One more thing is that , 

    Our input frequency may be variable in between +/- 1 MHz bandwidth , then what will be the NCO accuracy and speed to match up with the input signal and generate baseband output 0 Hz? 

    Basically, I want to know the speed and time duration required by NCO hopping and scanning the entire +/1 MHz bandwidth and match the frequency with input carrier frequency .

    Kindly request you to provide the response ASAP.

  • Hi Vijay,

    I think , I got your point . You mean to say that, We need to fix one frequency band for example let's say my frequency band of interest is 35-60 MHz and it is guaranteed that the input signal will be within the range of 35-60 MHz only with the fixed bandwidth of the signal +/-1 MHz. 

    Then, we need to scan the NCO for this range only until ,we got the baseband output at 0 Hz , right?

    Please verify weather my understanding is correct or not?

    Also, One more thing is that , 

    Our input frequency may be variable in between +/- 1 MHz bandwidth , then what will be the NCO accuracy and speed to match up with the input signal and generate baseband output 0 Hz? 

    Basically, I want to know the speed and time duration required by NCO hopping and scanning the entire +/1 MHz bandwidth and match the frequency with input carrier frequency .

    Kindly request you to provide the response ASAP.

  • Hi Vijay,

    Is there any update on the above. Request you to provide guidance.

  • Hi Maitry,

    When the signal is out of DDC bandwidth, we don't know where it is. For that case NCO frequency has to be incremented in steps to 'scan' for the signal. 

    If signal is within the DDC bandwidth, difference between signal frequency and NCO frequency can be directly calculated from FFT and NCO can be updated to signal frequency. 

    NCO frequency is set by a 32-bit frequency control word. So, frequency resolution is (ADC/DAC sample rate)/ (2^32).

    To updated the NCO frequency word through SPI, about 8 SPI writes are needed. Assuming 20 MHz SPI clock, each SPI write takes 1.2us. For 8 SPI writes, time taken will be 9.6us.

    Regards,

    Vijay

  • Hi Vijay,

    Actually, our requirement is little stringent in terms of NCO frequency selection based on the input frequency variation. 

    From your above response, I have below queries. 

    1) First , as I said before, the input frequency variation would be within the range of +/-1 MHz every time , so for let's say selected frequency of 50 MHz, variation would be 49 MHz to 50 Mhz.

    So, +/-1 MHz would be with the DDC bandwidth range, right? So, scanning would not be required as signal will be within the DDC range. So, the option 2 that you have suggested that difference can be calculated from FFT and set the NCO frequency accordingly would be the solution, right?

    2) So, now every time we need to constantly calculate the difference from FFT and update the NCO frequency from SPI write , these both procedure will be done like below as per my understanding. 

    Constantly SPI read of the difference from FFT and SPI write the new updated frequency from NCO. Please suggest , Is my understanding correct?

    3) If yes to 2, also we would have a requirement to have NCO frequency update within a nS range , here you have given the example of 20 MHz SPI clock. but what if we increase the SPI clock to reduce the NCO frequency 8 SPI writes ? Is it possible ? What is the max SPI clock at which NCO is capable to update the frequency word by 8 SPI writes?

    Kindly request you to provide the support, suggestion and guidance on reducing the NCO frequency update time as low as possible ? As the input frequency variation is known within +/- 1 MHz only, so there  is no much drastic change in NCO frequency update. 

    As All other our requirements are fulfilled with the AFE7900EVM board and it is perfectly suitable to our application, only this NCO frequency update time is the only thing we need to finalize. so, please support every possible way to reduce the NCO frequency update faster so that we can have  a complete suitable transceiver.  

    Also, I don't understand the calculation that you have given , if we assume 20 MHz SPI clock, then each SPI write will take 1/20 MHz = 0.05 uS , How 1.2 uS you have taken, can you  please elaborate the same.

    Awaited your positive response.

  • Hi Vijay,

    Is there any update on the above. Kindly request you to provide guidance ASAP.

  • Hi Maitry,

    Yes, if the input frequency is within the bandwidth then you can calculate the difference in frequency from the FFT and constantly update the NCO frequency by SPI.

    For SPI writes the maximum SCLK frequency is 40MHz, calculated form the SCLK minimum period in the datasheet. Each SPI write consists of 24 SCLKs, so each write can be as low as 24*25ns = 0.6us. For 8 SPI writes this would come out to 4.8us. 

    Regards,

    David Chaparro

  • Hello David,

    Thanks for your response. I got the calculation now. 

    So, if we calculate It is possible to read the difference in frequency from FFT via SPI read or any other faster way ? As you know , we need to automate this full process of constantly calculating the difference in frequency and update the NCO frequency and that to with the faster time possible. 

    Is there any other possible way to faster the NCO frequency update within +/-1 MHz bandwidth range , then please provide the details.  There is one NCO switching functionality , is it useful to faster the above requirement?

    I am really grateful to you support and guidance regarding the queries raised. It would be great if there is any chance or way possible to further faster the process of NCO  frequency update.

    Awaited your quick response.

  • Hello David,

    Thanks for your response. I got the calculation now. 

    So, if we calculate It is possible to read the difference in frequency from FFT via SPI read or any other faster way ? As you know , we need to automate this full process of constantly calculating the difference in frequency and update the NCO frequency and that to with the faster time possible. 

    Is there any other possible way to faster the NCO frequency update within +/-1 MHz bandwidth range , then please provide the details.  There is one NCO switching functionality , is it useful to faster the above requirement?

    Also, My input frequency variation would be remain same for all4 simultaneous ADC channels as same input frequency is given to all 4 simultaneous ADC channels. so, there is no requirement to update the NCO for each channel with different frequency.

    I am really grateful to you support and guidance regarding the queries raised. It would be great if there is any chance or way possible to further faster the process of NCO  frequency update.

    Awaited your quick response.

  • Hi Maitry,

    I am checking with my team to see if it is possible to update the NCO faster. I hope to have a response early next week.

    Regards,

    David Chaparro

  • Hi David,

    Is there any update on the above case. Awaited your positive feedback.

  • Hi David,

    When can I expect the support and guidance on the above case? It is really important for us to get the guidance on above. Your response and guidance would be really helpful for us to further expedite our project.  

    Also In parallel, I have come across TI's very knowledgeable application note on reduction of frequency hopping technique also,

    https://www.ti.com/lit/an/slaa870/slaa870.pdf?HQS=asc-dc-hsc-afe74xx-blog-mc-frequencyhopping-wwe&ts=1655958673520

    https://e2e.ti.com/blogs_/b/analogwire/posts/how-to-achieve-fast-frequency-hopping

    From that I understand is that , using GPIO to switch between NCO is very fast technique. also , AFE7900 single band has total 16 programmable NCO , but also current Latte version only supports 2. so, if it is possible to use 16 NCO , then it may be possible to reduce the time, what are your views?

    Also, another thing I have observed that for SPI read, max clock freq. is lower, which is 20 MHz , so to read anything from SPI would take higher time . 

    So, What I thought is as below.

    1. Algorithm for constant calculation of difference in frequency from DDC output in Latte using python scripting.

    2. As there are many GPIO available in the AFE7900 which are not predefined. So, we can use one GPIO pin to read the constant frequency difference instead of SPI. As using GPIO , GPIO function is faster than SPI and it would may be take nsec time.

    3. Based on the GPIO read when found frequency difference, update NCO , that to with the best possible faster time( if we could use preprogrammed NCO or any other way that you can suggest) 

    The above is my understanding based on the study. You can please suggest your views, support and guidance on the above requirement.

    I hope , we together can make a positive solution from all the available options inside AFE7900.

    Awaited your valuable response.

  • Hi Maitry,

    Using the 16 NCO frequencies is possible and is supported in Latte. If you set these 16 NCO frequencies you can quickly change between them but if you need a NCO frequency that was not one of the originally programmed frequencies then you would have to use the SPI writes to set the new NCO frequency which would take 4.8us. This method will work if you know the required NCO frequencies beforehand. 

    For more information on frequency hopping with the AFE79xx you can use the following App Note: https://www.ti.com/lit/an/sbaa443/sbaa443.pdf 

    The calculation of the frequency difference will have to be accomplished inside the FPGA. The FPGA will have to take the the ADC data and perform a FFT and then calculate the difference in frequency.

    Regards,

    David Chaparro 

  • Hi David,

    Thank you for your response.

    I will try to use 16 NCO pre-programmed frequency, which is supported by Latte.