Hi

Please could you advise me on the ad9361_calculate_ rf_clock_chain function in the No-OS driver code for the FMCOMMS2/3 FPGA reference design.

I understand the constraints for the BBPLL (needs to be 715 to 1.43GHz) and the Data Output (sample rate) max (2 RX & TX ports enabled, FDD, DDR) is 30.72MSPS.

I am trying to understand the methods of setting up the BBPLL and all other clocks including the sample rate clock. I can see two methods of configuring the sample rate:

1) Using the console to enter desired sample rate

2) Editing the init structure in main.c

In both cases, what is the profile used for programming the ADC clock, i.e. for the console entry, does the ad9361_calculate_ rf_clock_chain function try to program the ADC & DAC clocks to the highest frequency possible? At what point should the function decide it needs to use half band filters? Are there any profile guides available (power, performance, etc.) ?

I'm no software expert, but can the ad9361_calculate_ rf_clock_chain function be given a preference how to configure the chain? Does is consider the bandwidth requirement? E.g. is HB1 enabled prior to HB2?

Alsothe BBPLL divider can be up to 128, therefore in the reference design why wouldn't I choose to divide BBPLL_CLK by 32 to derive the 30.72MHz ADC_CLK if I wish to save power (if high bandwidth is not a requirement)? Is this possible?

Other questions that are related:

What is the performance of the ADC/DAC v clock frequency?

Is there an optimum performance and max/min frequency limits for the ADC and DAC?

What is the Baseband performance with & without the digital filter chain?

Kind Regards,

Andy

Hi Andy,

Let me try to answer your questions:

1) This function is designed to set up Tx and Rx clock rate properly given a sampling rate. Since there are many aspects of performance concerning the signal chain, this function may not be optimized on each of them. It really depends on what you are looking for.

2) Yes, it tries to program the ADC & DAC clocks to the highest frequency possible. If the ADC & DAC clocks =

N * sampling rate, it means you need to use the half band filters. It is basically guided by the interpolation or decimation rate.

If you look at this function: https://github.com/analogdevicesinc/linux/blob/xcomm_zynq/drivers/iio/adc/ad9361.c

The half band rates are defined on Line 3132.

3) The preference of the half band filters is specified in Line 3132. Given a total interpolation or decimation rate, there is a specific combination of the half band filters to be used.

Let us know whether it solves your questions. If not, Michael can provide you with more insights when he is back to office next week.

Greetings,

Di