2001-08-29 14:35:15 +00:00
|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta name="generator" content="HTML Tidy, see www.w3.org">
|
|
|
|
<title>PPS Clock Discipline</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h3>PPS Clock Discipline</h3>
|
|
|
|
|
|
|
|
<hr>
|
|
|
|
<h4>Synopsis</h4>
|
|
|
|
|
|
|
|
Address: 127.127.22.<i>u</i> <br>
|
|
|
|
Reference ID: <tt>PPS</tt> <br>
|
|
|
|
Driver ID: <tt>PPS</tt> <br>
|
|
|
|
Serial or Parallel Port: <tt>/dev/pps<i>u</i></tt> <br>
|
|
|
|
Requires: PPSAPI interface
|
|
|
|
|
|
|
|
<p>Note: This driver supersedes an older one of the same name. The
|
|
|
|
older driver operated with several somewhat archaic signal
|
|
|
|
interface devices, required intricate configuration and was poorly
|
|
|
|
documented. This driver operates only with the PPSAPI interface
|
|
|
|
proposed as an IETF standard. Note also that the <tt>pps</tt>
|
|
|
|
configuration command has been obsoleted by this driver.</p>
|
|
|
|
|
|
|
|
<h4>Description</h4>
|
|
|
|
|
|
|
|
<p>This driver furnishes an interface for the pulse-per-second
|
|
|
|
(PPS) produced by a cesium clock, radio clock or related equipment.
|
|
|
|
It can be used to augment the serial timecode generated by a GPS
|
|
|
|
receiver, for example. It can be used to remove accumulated jitter
|
|
|
|
and re-time a secondary server when synchronized to a primary
|
|
|
|
server over a congested, wide-area network and before
|
|
|
|
redistributing the time to local clients. The driver includes
|
|
|
|
extensive signal sanity checks and grooming algorithms. A range
|
|
|
|
gate and frequency discriminator reject noise and signals with
|
|
|
|
incorrect frequency. A multiple-stage median filter rejects jitter
|
|
|
|
due to hardware interrupt and operating system latencies. A
|
|
|
|
trimmed-mean algorithm determines the best time samples. With
|
|
|
|
typical workstations and processing loads, the incidental jitter
|
|
|
|
can be reduced to less than a microsecond.</p>
|
|
|
|
|
|
|
|
<p>While this driver can discipline the time and frequency relative
|
|
|
|
to the PPS source, it cannot number the seconds. For this purpose a
|
|
|
|
auxiliary source is required, ordinarily a radio clock operated as
|
|
|
|
a primary reference (stratum 1) source; however, another NTP time
|
|
|
|
server can be used as well. For this purpose, the auxiliary source
|
|
|
|
is marked as the prefer peer, as described in the <a href=
|
|
|
|
"prefer.htm">Mitigation Rules and the <tt>prefer</tt> Keyword</a>
|
|
|
|
page.</p>
|
|
|
|
|
|
|
|
<p>The driver requires the PPSAPI interface<sup>1</sup>, which is a
|
|
|
|
proposed IETF standard. The interface consists of the <tt>
|
|
|
|
timepps.h</tt> header file and associated kernel support. Support
|
|
|
|
for this interface is included in current versions of FreeBSD and
|
|
|
|
Linux and proprietary versions for Digital/Compaq Tru64 (Alpha),
|
|
|
|
Sun Solaris and Sun SunOS. See the <a href="pps.htm">
|
|
|
|
Pulse-per-second (PPS) Signal Interfacing</a> page for further
|
|
|
|
information.</p>
|
|
|
|
|
|
|
|
<p>The PPS source can be connected via a serial or parallel port,
|
|
|
|
depending on the hardware and operating system. The port can be
|
|
|
|
dedicated to the PPS source or shared with another device. A radio
|
|
|
|
clock is usually connected via a serial port and the PPS source
|
|
|
|
connected via a level converter to the data carrier detect (DCD)
|
|
|
|
pin (DB-9 pin 1, DB-25 pin 8) of the same connector. In some
|
|
|
|
systems where a parallel port and driver are available, the PPS
|
|
|
|
signal can be connected directly to the ACK pin (pin 10) of the
|
|
|
|
connector. Whether the PPS signal is connected via a dedicated port
|
|
|
|
or shared with another device, the driver opens the device <tt>
|
|
|
|
/dev/pps%d</tt>, where <tt>%d</tt> is the unit number. As with
|
|
|
|
other drivers, links can be used to redirect the logical name to
|
|
|
|
the actual physical device.</p>
|
|
|
|
|
|
|
|
<p>The driver normally operates like any other driver and uses the
|
|
|
|
same mitigation algorithms and PLL/FLL clock discipline
|
|
|
|
incorporated in the daemon. If kernel PLL/FLL support is available,
|
|
|
|
the kernel PLL/FLL clock discipline is used instead. The default
|
|
|
|
behavior is not to use the kernel PPS clock discipline, even if
|
|
|
|
present. This driver incorporates a good deal of signal processing
|
|
|
|
to reduce jitter using the median filter and trimmed average
|
|
|
|
algorithms in the driver interface. As the result, performance with
|
|
|
|
minpoll and maxpoll configured at the minimum 4 (16s) is generally
|
|
|
|
better than the kernel PPS clock discipline. However, fudge flag 3
|
|
|
|
can be used to enable this discipline if necessary.</p>
|
|
|
|
|
|
|
|
<p>Note that the PPS source is considered reachable only if the
|
|
|
|
auxiliary source is the prefer peer, is reachable and is selected
|
|
|
|
to discipline the system clock. The stratum assigned to the PPS
|
|
|
|
source is automatically determined. If the auxiliary source is
|
|
|
|
unreachable or inoperative, the stratum is set to 16; otherwise it
|
|
|
|
is set to match the stratum of the auxiliary source. Since the
|
|
|
|
stratum is determined dynamically, it is not possible to assign
|
|
|
|
another stratum using the <tt>fudge</tt> command as in other
|
|
|
|
drivers.</p>
|
|
|
|
|
|
|
|
<h4>Fudge Factors</h4>
|
|
|
|
|
|
|
|
<dl>
|
|
|
|
<dt><tt>time1 <i>time</i></tt></dt>
|
|
|
|
|
|
|
|
<dd>Specifies the time offset calibration factor, in seconds and
|
|
|
|
fraction, with default 0.0.dd></dd>
|
|
|
|
|
|
|
|
<dt><tt>time2 <i>time</i></tt></dt>
|
|
|
|
|
|
|
|
<dd>Not used by this driver.</dd>
|
|
|
|
|
|
|
|
<dt><tt>stratum <i>number</i></tt></dt>
|
|
|
|
|
|
|
|
<dd>Specifies the driver stratum, in decimal from 0 to 15, with
|
|
|
|
default 0.</dd>
|
|
|
|
|
|
|
|
<dt><tt>refid <i>string</i></tt></dt>
|
|
|
|
|
|
|
|
<dd>Specifies the driver reference identifier, an ASCII string from
|
|
|
|
one to four characters, with default <tt>PPS</tt>.</dd>
|
|
|
|
|
|
|
|
<dt><tt>flag1 0 | 1</tt></dt>
|
|
|
|
|
|
|
|
<dd>Not used by this driver.</dd>
|
|
|
|
|
|
|
|
<dt><tt>flag2 0 | 1</tt></dt>
|
|
|
|
|
|
|
|
<dd>Specifies the PPS signal on-time edge: 0 for assert (default),
|
|
|
|
1 for clear.</dd>
|
|
|
|
|
|
|
|
<dt><tt>flag3 0 | 1</tt></dt>
|
|
|
|
|
|
|
|
<dd>Controls the kernel PPS discipline: 0 for disable (default), 1
|
|
|
|
for enable.</dd>
|
|
|
|
|
|
|
|
<dt><tt>flag4 0 | 1</tt></dt>
|
|
|
|
|
|
|
|
<dd>Not used by this driver.</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
<p>Additional Information</p>
|
|
|
|
|
|
|
|
<p><a href="refclock.htm">Reference Clock Drivers</a></p>
|
|
|
|
|
|
|
|
<p>Reference</p>
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
<li>Mogul, J., D. Mills, J. Brittenson, J. Stone and U. Windl.
|
|
|
|
Pulse-per-second API for Unix-like operating systems, version 1.
|
|
|
|
Request for Comments RFC-2783, Internet Engineering Task Force,
|
|
|
|
March 2000, 31 pp.</li>
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
<hr>
|
|
|
|
<a href="index.htm"><img align="left" src="pic/home.gif" alt=
|
|
|
|
"gif"></a>
|
|
|
|
|
|
|
|
<address><a href="mailto:mills@udel.edu">David L. Mills
|
|
|
|
<mills@udel.edu></a></address>
|
|
|
|
</body>
|
|
|
|
</html>
|
1999-12-09 13:01:21 +00:00
|
|
|
|