Hi Dor, There are 2 arguments that can control the integer-N step size: the int_n_step tune arg and the dboard_clock_rate device arg. The int_n_step tune arg will explicitly change the step size by changing the R divider value, which will break phase coherency between channels. The 'dboard_clock_rate' value in the device args controls the reference clock rate, which will keep the R divider set to 1 and support phase coherency between channels. Both will change the PFD frequency for the PLL. The UBX was designed for a PFD frequency of 50 MHz, which is why 50 MHz is the default reference clock rate and the default R value is 1. Reducing the PFD frequency will result in more phase noise. My recommendation is to set the 'mode_n=integer' in the tune args, let the DSP tuning take care of the offset by leaving the DSP tuning policy to the default (POLICY_AUTO), and use the highest dboard_clock_rate possible (up to 50 MHz). The highest 'dboard_clock_rate' can be achieved based on the required bandwidth of the application by using the formula:
dbaord_clock_rate = (160 MHz - bandwidth) / 2 I hope this helps. Best regards, Michael E. West On Mon, Mar 6, 2023 at 3:07 PM Marcus D. Leech <patchvonbr...@gmail.com> wrote: > On 06/03/2023 17:13, Dor Ratz wrote: > > Hey, > > Thanks a lot. > > *Several questions after thinking about it:* > > > 1. Do you mean R&D of Ettus or GNURadio? Can you address me to the > relevant email address? > > This thread really belongs on the usrp-users mailing list now, rather than > discuss-gnuradio, i have copied usrp-users, and > removed discuss-gnuradio. > > > > > > 2. Let me see if I get it right for USRP X310 with UBX-160: > > > - Motherboard clock = MCR =master_clock_rate = main clock rate = > default value is 200MHz. The 10MHz REFCLK is used to set it. > - Daughterboard Clock Rate in Hz = dboard_clock_rate = default value > is 50MHz, need to change it to 20MHz for center frequencies under 1GHz do > decrease spurs. > This is actually the clock that the motherboard injects into the > daughterboard , i.e it is the reference clock of the MAX2871 PLL which is > on the daughterboard. > - According to this link > <http://www.radio-science.net/2017/12/adventures-in-usrp-tuning.html>, > if I set "mode_n=integer","int_n_step=100e3", in Device Address parameter > in USRP Sink block, then the frequency resolution on the PLL is: > frequency resolution [Hz] = int_n_step [Hz] = dboard_clock_rate [Hz] / > (R divider [-]) > > For example: > 100e3 [Hz] = 50e6 [Hz] / 500 > > So ->* the frequency resolution of the PLL is set by the "int_n_step" > parameter* -> it calculates the R divider [-] in the PLL relating to > dboard_clock_rate and desired int_n__step. > I guess that the result must be in the range of allowed PLL's R > divider values from 1 to 1023. > > 3. Do I must set the "int_n_step" parameter as follows? > > 4. Does the frequency resolution range from 50MHz when R divider= 1[-] up > to 0.05[MHz] when R divider = 1000[-] ? > > Referring to this sentence in max2871 PLL datasheet > <https://www.analog.com/media/en/technical-documentation/data-sheets/max2871.pdf> > : > ""The minimum R counter divide ratio is 1, and the maximum divide ratio is > 1023" > > > 5. Where can I find the relevant source code? I've looked here > <https://github.com/EttusResearch/uhd> but I'm not sure where the > daughterboard code/relevant code is. > > Thanks > Dor > > > בתאריך יום ב׳, 6 במרץ 2023 ב-19:10 מאת Marcus D. Leech < > patchvonbr...@gmail.com>: > >> On 06/03/2023 08:54, Dor Ratz wrote: >> >> Hey Marcus, >> >> Thanks a lot. >> >> I'm using external 10 MHz reference clock (REFCLK) with 1e-12[Hz] >> frequency resolution -> it feeds my PLL in the UBX-160 daughterboard in the >> X310 USRP. >> >> The REFCLCK input to the X310 is used to control the master-clock(s) on >> the motherboard, which, in turn produce clocks for >> the daughtercards--but the daughtercards never see your external clock >> directly. >> >> >> So, *when defining "mode_n=integer"* in the Device Address parameter of >> the UHD: USRP Sink block in GNURadio to set PLL in integer-N mode, *what >> is exactly R-DIVIDER= reference divider of the PLL*? >> >> I've looked in the PLL (max2871) datasheet: >> >> https://www.analog.com/media/en/technical-documentation/data-sheets/max2871.pdf >> >> According to it: >> "The minimum R counter divide ratio is 1, and the maximum divide ratio is >> 1023" >> >> I understand that if for example, the R counter=(R-DIVIDER)=1000 -> the >> frequency resolution is 10MHz/1000 = 0.01MHz= 10KHz, correct? >> >> But I don't know what is the R-DIVIDER chosen in the PLL with the >> settings in gnuradio. >> >> Thanks, >> >> Dor >> >> You'd have to go looking through the source code. Unless someone from >> R&D happens to know off the top of their heads. >> 10 years ago, I kept all of this in my head--when there were FAR fewer >> products to keep track of and the codebase was >> more modest. >> >> >> >> >> >> >> >> >> בתאריך יום ה׳, 2 במרץ 2023 ב-21:55 מאת Marcus D. Leech < >> patchvonbr...@gmail.com>: >> >>> On 02/03/2023 13:09, Dor Ratz wrote: >>> >>> Hey, >>> >>> Do you know how to assess the RF PLL resolution in integer-N mode? >>> >>> I've looked in ANALOG max2871 PLL datasheet - not sure I found the >>> answer there. >>> >>> https://www.analog.com/media/en/technical-documentation/data-sheets/max2871.pdf >>> >>> The Ettus team is CC here too - it will be helpful to know what you >>> suggest. >>> >>> Thanks, >>> Dor >>> >>> It will depend on the REFCLK that is being used by that board (I do not >>> happen to know off the top of my head), and by >>> whatever flexibility in reference divider the PLL has. >>> >>> In an Integer-N PLL (and you can spend quite a bit of time learning how >>> PLL synthesizers work online), the "step size" is >>> dependent on the REFCLK, which itself may have a divider on it. So, >>> let's say your REFCLK is 10MHz and there's a divider >>> that can divide the reference clock by up to 10000, then your minimum >>> step size is 1kHz. This is in tension with the >>> fact that having a high ratio between the desired frequency and the >>> reference frequency tends to create signal-quality issues, >>> like, as I recall, phase noise. But I'd research the datasheet and >>> the overall concept of PLL synthesis. >>> >>> My recollection on the X310 is that the reference-clock frequency is >>> 100MHz, but that's just a hazy memory. >>> >>> >>> >>> >>> >>> בתאריך יום ד׳, 1 במרץ 2023 ב-21:10 מאת Marcus D. Leech < >>> patchvonbr...@gmail.com>: >>> >>>> On 01/03/2023 13:14, Dor Ratz wrote: >>>> >>>> Hey Marcus, How are you? >>>> >>>> Not sure if you got my email. >>>> >>>> Do you know anyway I can change transmitted frequency using PMT message >>>> when doing your solution? >>>> >>>> >>>> In addition, something that seemed to help me: >>>> >>>> I used this: >>>> >>>> >>>> https://lists.gnu.org/archive/html/discuss-gnuradio/2011-09/msg00309.html >>>> >>>> >>>> In the USRP Sinc block, in center frequency parameter, I've put this: >>>> >>>> uhd.tune_request(target_freq=1003e6, dsp_freq=0, >>>> dsp_freq_policy=uhd.tune_request.POLICY_MANUAL) >>>> >>>> >>>> With this, the transmitted 1003MHz signal is cleaner and the spur is >>>> now further away at 16KHz offset with amplitude of 60dBc below the signal. >>>> >>>> This alone cleans the spectrum! >>>> >>>> In addition, I type "mode_n=integer" in the >>>> Device Address parameter of the UHD: USRP Sink block, but it doesn't >>>> seem to affect. The tuning without DSP correction in the FPGA seems to just >>>> be sufficient to clean the spectrum. >>>> >>>> Why is that? Do you recommend using something else? >>>> >>>> Thanks >>>> >>>> Dor >>>> >>>> Note that only works if the underlying RF PLL has enough "resolution" >>>> to make that work--particularly in integer-N mode. >>>> >>>> I'm surprised that the DDC/DUC have such significant "close in" >>>> spurs. I don't know if there's anyone from the R&D team >>>> on here who can authoritatively comment, but this is a bit of a >>>> surprise. >>>> >>>> >>>> >>>> >>>> >>>> בתאריך יום ב׳, 27 בפבר׳ 2023 ב-15:08 מאת Dor Ratz < >>>> dorrat...@gmail.com>: >>>> >>>>> Hi Marcus, >>>>> >>>>> Can I pass the desired center frequency with a PMT message? >>>>> I want to dynamically change the transmitted center frequency of UHD: >>>>> USRP Sink block. >>>>> >>>>> So static frequency in the block is not sufficient. >>>>> >>>>> Thanks >>>>> Dor >>>>> >>>>> בתאריך יום ב׳, 27 בפבר׳ 2023 ב-13:44 מאת Marcus Müller < >>>>> marcus.muel...@ettus.com>: >>>>> >>>>>> Hi Dor, >>>>>> >>>>>> > 1. How to change the to integer_n tuning? Should I just type >>>>>> "mode_n=integer" in the >>>>>> > Device Address parameter of the UHD: USRP Sink block in the grc? >>>>>> >>>>>> yes. Or, better, instead of just tuning to the target frequency, you >>>>>> can pass a >>>>>> uhd.tune_request_t to uhd_usrp_{sink,source}.set_center_frequency, >>>>>> like this: >>>>>> >>>>>> my_uhd_block.set_center_frequency(uhd.tune_request_t( >>>>>> target_freq = 2.4e9, >>>>>> args="mode_n=integer")) >>>>>> >>>>>> (you can also use a uhd.tune_request_t in the RF frequency fields of >>>>>> the GRC block) >>>>>> >>>>>> Note that you're probably best off using tune_request_t anyway, as it >>>>>> allows you to tune >>>>>> your LO far away from your band of interest, given the analog >>>>>> bandwidth allows for that, >>>>>> using `target_freq=` and `rf_freq` or `dsp_freq`. >>>>>> >>>>>> For more information on tuning, see the UHD manual [1] >>>>>> >>>>>> > 2. How to know for sure what the mode(integer of fractional) of >>>>>> the NCO is? Can I print >>>>>> > its status/get it somehow? >>>>>> >>>>>> looking at the UHD source code: the routines responsible for tuning >>>>>> just themselves check >>>>>> for "mode_n" being set to "integer" in the device or tune request >>>>>> arguments. >>>>>> >>>>>> Best regards, >>>>>> Marcus >>>>>> >>>>>> [1] https://files.ettus.com/manual/page_general.html#general_tuning >>>>>> >>>>> >>>> >>> >> >
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com