DSP phase noise measurement with an SDR

I found this paper about measuring phase noise with just an ADC following by DSP.

formatting link

I tried a simplified single channel experiment using an FPGA eval board:

sig. gen. => ADC

I = nco.cos() * ADC Q = nco.sin() * ADC I_baseband = CIC_LPF_Decimate(I) Q_baseband = CIC_LPF_Decimate(Q) angle = CORDIC_arctan(I_baseband, Q_baseband) spectrum = FFT(angle)

ADC rate was 1Msps. Sig. gen. output frequency was 100 kHz. nco frequency was also 100 kHz to convert down to baseband. Decimation was by R=4 down to 250ksps. The final FFT step was performed on a PC.

I then put some FM modulation on the sig. gen. and checked the sideband levels on a spectrum analyzer: carrier = 100kHz fmod = 1kHz (sine) peak deviation = 60Hz

1st sideband pair @ -30dBc 2nd sideband pair @ -67dBc

But, although the noise floor is down at -120dBc, the FFT plot only shows the first sideband pair at 1kHz.

I tried different fmod/deviation; but no matter what I do, the FFT only shows the fundamental (1st) sideband.

Why does the FFT not show 2nd and higher order sidebands, as the spectrum analyser does?

It occurred to me that I've just made a PM receiver and the output should be a pure sine wave! But this method of phase noise measurement is widely used, so it must work??

Where is my error?

TIA

Reply to
Andrew Holme
Loading thread data ...

DSP is one of those things where:

If you don't get it nobody can explain it to you and when you do get it nobody needs to explain it to you

Reply to
djlocher56

ng by DSP.

l_PN_measurement.pdf

:

levels on a spectrum analyzer:

ws the first sideband pair at 1kHz.

shows the fundamental (1st) sideband.

um analyser does?

ld be a pure sine wave! But this method of phase noise measurement is wide ly used, so it must work??

obody needs to explain it to you

One of my colleagues pointed out that it might have something to do with th e fundamental difference between magnitude, as displayed by a spectrum anal yser, and power spectral density of phase, as computed by the DSP.

I thought it was possible to view phase noise on a spectrum analyser (albei t perhaps not with such a low noise floor) but does it only work for signal s of a certain class e.g. noise-like? My test signal in this case comprise d discrete spurs (FM sidebands) rather than a continuous power density.

I could modify the DSP to compute a complex FFT of I, Q, or, sqrt(I^2+Q^2) and perhaps then it would agree with the spectrum analyser.

So the DSP is working correctly, in displaying true PSD of phase, and my mi stake was not realising the difference between this and what the SA shows.

My remaining slight confusion is how to know what is valid when viewing pha se noise on an SA. For instance, the DSP and the SA both show a -65 dBc sp ur at the 50 Hz power line frequency; and the amplitude of the 1st FM sideb ands agree; but the 2nd FM sidebands shown by the SA are not valid ??

Reply to
Andrew Holme

eit perhaps not with such a low noise floor) but does it only work for sign als of a certain class e.g. noise-like? My test signal in this case compri sed discrete spurs (FM sidebands) rather than a continuous power density.

Awesome question!

I think you have figured it out.

Your DSP method contains a phase demodulation so the spectrum you see is th e original modulating tone alone. This is the spectrum on the MODULATING si gnal.

The SA on the other hand shows the MODULATED signal which for FM and PM als o contains the high order sidebands.

Now in practice, we very often use a simple SA and look at the MODULATED sp ectrum directly and call that phase noise but as you see, it is not exactly correct. But usually the first order sideband is very low and the higher order sidebands are very very low so for all practical purposes, it is the phase noise.

So your DSP method is correct. The SA is approximately correct and is ofte n used in practice. The SA method has another error, in that it shows also the AM component which is not technically part of phase noise. Again in p ractice, the AM component is usually much less than the PM component and th e error is small.

Mark

Reply to
makolber

On Wednesday, January 25, 2017 at 1:14:41 PM UTC-5, snipped-for-privacy@yahoo.com wrote :

lbeit perhaps not with such a low noise floor) but does it only work for si gnals of a certain class e.g. noise-like? My test signal in this case comp rised discrete spurs (FM sidebands) rather than a continuous power density.

the original modulating tone alone. This is the spectrum on the MODULATING signal.

lso contains the high order sidebands.

spectrum directly and call that phase noise but as you see, it is not exact ly correct. But usually the first order sideband is very low and the highe r order sidebands are very very low so for all practical purposes, it is th e phase noise.

ten used in practice. The SA method has another error, in that it shows al so the AM component which is not technically part of phase noise. Again in practice, the AM component is usually much less than the PM component and the error is small.

PS ask this question at comp.dsp and you may get a better answer.

Reply to
makolber

You may be seeing the equivalent of FM capture effect. The big signals, passed through a comparator (or an ADC, same thing) wipe out the little ones.

What happens if you delete the 1st sb and keep the 2nd? And play with the sb level? Maybe a nonlinearity will become visible.

--

John Larkin         Highland Technology, Inc 
picosecond timing   precision measurement  

jlarkin att highlandtechnology dott com 
http://www.highlandtechnology.com
Reply to
John Larkin

spectrum directly and call that phase noise but as you see, it is not exact ly correct. But usually the first order sideband is very low and the highe r order sidebands are very very low so for all practical purposes, it is th e phase noise.

Thank you! That is exactly what I was missing. It makes sense to me now.

Reply to
Andrew Holme

Oh Lordy, you should have gotten a better answer before now, even though this isn't the DSP group.

To a first-order approximation, phase noise shows up as noise which is quadrature to the carrier. Mathematically, this is because

d/dp cos(w*t + p) = -p * sin(w*t + p)

However, this is still only an approximation -- the real situation is that you get something hugely complicated. If p(t) is a sine wave, then the spectrum is calculated with a Bessel function, if it's something more complicated then people mumble in front of a white board for a while then dive for a simulator.

The notion behind just using the quadrature part of the off-carrier noise as a measurement of phase noise is that phase noise is (we sincerely hope, at least) very small. With the 'p' term in the above equation small, we expect second- and higher-order effects to vanish.

This make sense now?

--
Tim Wescott 
Control systems, embedded software and circuit design 
I'm looking for work!  See my website if you're interested 
http://www.wescottdesign.com
Reply to
Tim Wescott

There are no errors.

By definition, the phase noise is one half of the one-sided spectral density of the instantaneous phase departure from a nominal phase. What you got doing the downconversion and then computing the phase of the resulting signal is the instantaneous phase departure from the NCO phase. Its (scaled) spectrum *is* the phase noise.

What you see on a spectrum analyzer is the signal *power spectrum*. As pointed out by others, if you have a carrier with a weak frequency modulation then the signal power spectrum and the phase deviation spectrum are similar.

The modulation index, h, of your test signal is not quite small, as it is 60/1000. As you likely already know, the amplitude of the "modulation sidebands" in the power spectrum is given by the Bessel functions of the first kind; for the n-th sideband the amplitude is given by An = bessel_j(n, h) For your signal A0 = 20*log10(besselj(0, 60/1000)) = -0.0078191 dB (the carrier) A1 = 20*log10(besselj(1, 60/1000)) = -30.461 dB A2 = 20*log10(besselj(2, 60/1000)) = -66.938 dB which agrees quite well with what the spectrum analyzer shows. note that for small h, bessel_j(1, h) ~= h/2, bessel_j(1, h) ~= h^2/8 and higher orders decrease even faster.

For more than you ever wanted to know about phase noise and friends you could also ask the time-nuts mailing list,

formatting link

Reply to
Hephaestus

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.