EttusResearch / uhd

The USRP™ Hardware Driver Repository
http://uhd.ettus.com
Other
942 stars 644 forks source link

DDC frequency resolution/programming accuracy? #763

Open jmfriedt opened 1 week ago

jmfriedt commented 1 week ago

The DDC of the X310 is not programmed with the right frequency/DDC DDS resolution?

A X310 fitted with two BasicRX (no frequency conversion before sampling and FPGA DDC) is externally clocked by an Octoclock fed by the output of a microstepper generating a 10 MHz and 1-PPS output. This same 10 MHz reference feeds a Rohde & Schwarz SMA100A synthesizer and HP 53131A frequency counter. The synthesizer is programmed to output a 70 MHz continuous wave, validated with the frequency counter:

IMG_20240624_101259_904small

The X310 is set to a sampling rate of 200/40=5 MS/s and the LO frequency of the DDC set to 70 MHz. The spectrum of the signal recorded for 5 seconds (0.2 Hz resolution) is as follows:

70MHz

An obvious offset of 5 Hz is seen. It is unclear whether this offset is within the DDC DDS resolution which seems to be 200 MHz/2^24=12 Hz but sounds a poor resolution (see discussion on chat.gnuradio.org): could this resolution be confirmed?

Repeating the measurement at 143.05 MHz and using the second Nyquist zone, so setting the DDC frequency to 56.95 MHz and feeding the X310 with a synthesized signal

IMG_20240624_101338_467small

leads to

143d05MHz_GRAVES

The reason for the Issue is that this behaviour is observed with 4.5.0.0 but not with 4.1.0: with the latter, the 70 MHz signal is measured with sub-Hz error, so a behaviour changed in between.

Setup Details

The flowchart is as attached

x310_2

with external time and frequency selected on the X310, only one of the two channels used in this experiment, stored in file and post-processed with GNU Octave running

fs=5E6;
x=read_cshort_binary('fichier.bin',50e6);
x1=x(1:2:end)/32767;
x2=x(2:2:end)/32767;
freq=linspace(-fs/2,fs/2-fs/length(x2),length(x2));
plot(freq,abs(fftshift(fft(x2))));