[time-nuts] Help w/integration problem

John Miles jmiles at pop.net
Mon Jan 2 02:59:48 EST 2006


Does anyone have a piece of C (BASIC, whatever) code that turns an array of
dBc/Hz values into integrated RMS noise?

I'm trying to use a simple rectangular integrator to divide a log-log plot
into "bins":

  for (i=L_column; i < U_column-1; i++)
     {
     sum += ((value[i] - ((value[i] - value[i+1]) / 2.0)) *
(frequency[i+1] - frequency[i]));
     }

This just takes the midpoint dBc/Hz value between successive columns of a
phase-noise plot, multiplies it by the frequency step between the columns in
question, and sums the result for all columns in the range of interest.

The output of this process, when I feed a typical noise graph with values
around -110 dBc/Hz to it, with frequency values at the lower and upper
limits of 1000 and 10000 Hz, is around -1E+6.  What I'd *like* is a value
corresponding to the "-63 dBc" value cited on pages 7 and 8 in this Zarlink
app note:

http://assets.zarlink.com/CA/Phase_Noise_and_Jitter_Article.pdf

In this note, the author shows a noise curve similar to the ones I'm working
with, and magically pulls -63 dBc out of the ether with no explanation of
the integration process that obtained it.  (What does it mean, in the
author's words, to take the area "under" a phase-noise curve, anyway?
What's the bottom dBc/Hz value?)

Being from the instant-gratification generation, I really don't want (and
won't understand) a calculus lecture.  I want the 5 lines of code that do
the integration. :-)  This is for the next release of my freeware GPIB
noise-measurement app, so your karma will be integrated along with the noise
if you're able to help!

-- john, KE5FX





More information about the time-nuts mailing list