ILKYOUNG KWOUN wrote:
and fed the outputs to both USRP and USRP2 boxes.
relatively more important in general between a lower noise level
(probably be able to detect weaker signals) and a better SNR when you
plan to build a signal detect solution?
What you are seeing here is the effect of the PGA (programmable gain
amplifier) on the USRP. In your usrp_fft plot you can see it is set to
10dB. The USRP2 does not have an equivalent to this PGA, so to make a
better comparison, you should set the slider to 0dB manually, or use “-g
0” on the command line. Bringing the gain down will also lower the
noise floor of the USRP1, but not down to the level of the USRP2.
In general, the USRP2 will have a lower noise floor, and lower spurious
due to the 14-bit ADC.
Also, I think that the two python programs you are using will have the
same number of points in the FFT, but you should make sure if you are
trying to compare them. Remember, you can keep lowering the height of
the apparent noise floor by using more points in your FFT. The real
amount of noise will be the same, but you will be dividing it into more
and more bins. 1024 is a good number to use, since it is comparable to
the resolution of your screen.
- I can see that the USRP has a bit more flatten noise floor shape
but USRP2 has less spurious signals. Are those because of different
performances of different ADCs or actually the two signals fed to each
boxes are different although I branched from a single source?
The spurs you see are from a variety of causes. You didn’t say what
signal level you are feeding in to the boards, but about 9dBm will clip
in the USRP2 and in the USRP1 with gain set to 0. Your gain is set to
10dB, so -1dB would be the clipping point. ADCs are typically spec’ed
at “-1dBFS” which means a sinusoidal signal 1dB lower than full scale,
so try 8dBm. Signal generators may only be accurate to .2 to .5 dB, so
you may have to adjust in 0.1dB increments.
Also, the non-flat noise floor in the USRP2 may be a real part of the
signal you are looking at. It is very easy to see the phase noise of
the signal generator you are using. I actually wasted a couple of days
trying to figure out why I was seeing that much phase noise, until I
realized it was the noise of the generator and not the USRP2. I had
assumed that a high quality signal generator from Rohde and Schwarz
would have better phase noise than the USRP2, but that actually isn’t
the case at low frequencies like this. Once I got a better signal
generator with the “low phase noise option” I saw it go down quite a
bit.
- I can see a rather strong peak of 12.3MHz signal in the USRP. I
guess this is out of the local oscilator signal from CORDIC in the
FPGA. However, I don’t see the signal in the USRP2. Is this a leakage
from the FPGA to ADC for the USRP unit?
If then, is there any good way to get rid of this?
Another cause of your spurs is probably harmonics from the signal
generator aliasing into the passband. Remember, the BasicRX does not
have any filtering, and the ADCs will respond to signals well past 400
MHz. Even a very good signal generator may have 2nd and 3rd harmonics
which are only 50 dB down, and even higher order harmonics are
measurable. Use a lowpass filter to get a purer tone.
In testing the USRP2, I use a very high quality signal generator
followed by a lowpass filter with more than 35 dB of harmonic rejection,
and even then, the harmonics from the generator are still at a roughly
comparable level to the USRP2s own harmonic performance.
- I know that the relative signal level can be changed according to
the numbers of FFT sizes. How do you guys calibrate the level? What I
can think instantly is to measure a reference signal of know level
(ie, 0 dBm) and put some codes to calibrate the signal level. Just
wonder if there is any better method used in general.
We automatically scale so that the height of the peak for the fft of a
sinusoid (or any of the discrete spurs) should stay the same no matter
how many points in the FFT. Anything which is wideband, like noise,
will show up at reduced levels when you have more points. To calibrate
to an absolute signal level, it is easiest to just do as you said and
put in a known amplitude. You could also do your computations based on
the gains of everything in the signal chain, but that is more work.
Thank you for performing these tests. It is good to have many people
measuring these things.
Matt