[LinuxPPS] Re: PLL sensitivity
Remco den Besten
besten at gmail.com
Mon Nov 17 18:20:09 CET 2008
I don't know but I'll try to elaborate a little on this issue.
I consider the kernel as the 'oscillator' which has to be
synchronized/locked to an
external/precise reference. The normal system clock is too instable for
gaining usec or nsec resolution.
This 'oscillator' has basically two important interfaces to the 'outside'
world:
a) its output (e.g. frequency or 'time' stamp)
b) an input with which you can regulate its output (time stamps or
frequency)
Ad a. When you know what the desired frequency/time stamp has to be, you can
determine the delta and then
Ad b. On the basis of this delta a certain amount of action has to be
performed.
The mechanism between the 'delta' and the 'amount of action' has to be
filtered in order to e.g. prevent oscillation.
I consider ntpd a core mechanism to provide two things: determine the delta
and provide the 'action'.
Mostly the time constant (or filtering) is done in the oscillator itself
(i.e. the kernel) and this filter is
dimensioned on the characteristics of the oscillator itself.
A nice example is a GPS disciplined OCXO by fellow HAM G3RUH
(http://www.jrmiller.demon.co.uk/projects/ministd/manual.pdf). Here the
output of the phase comparator
('PLL", i.e. in this case one EXOR) is fed into an integrator (R1 and C1) (t
= 160.000 x 100E-6 = 16 sec). This time constant apparently is suitable for
the OCXO (this is a relatively stable oscillator and thus needs longer time
constants).
What make me think that the time constants have to be in the kernel, is the
observation that e.g. FreeBSD
reacts totally different than Linux with the same computer hardware, time
reference hardware and ntpd towards
the same 'disturbances'.
When the system is 'disturbed' e.g. by temperature or CPU load, FreeBSD
shows one overshoot and is
almost immediately 'back into business' (whereas Linux needs a lot of time
to recuperate (see today on
remco.org/ntp)) and the magnitude of the effect of the disturbance (e.g. the
offset, or how precise your
time stamps are) is much bigger with Linux than FreeBSD under the same
circumstances.
I just googled on time_pps_kcbind() (which is not implemented in LinuxPPS,
see
https://lists.ntp.org/pipermail/hackers/2008-October/003899.html) and saw
that this posting
also refers to the issue I want to raise.
From: "Udo van den Heuvel"
>> synchronized by an external (PPS) reference, but perhaps some smoothing
>> can
>> be achieved by experimenting
>> with the PLL filter(s) (e.g. timing contstants) like PI-regulation
>> (proportional/integral algorithms)?
>
> These PLL filters are in ntpd or in kernel?
More information about the LinuxPPS
mailing list