summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/html/driver36.htm
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/html/driver36.htm')
-rw-r--r--contrib/ntp/html/driver36.htm1285
1 files changed, 688 insertions, 597 deletions
diff --git a/contrib/ntp/html/driver36.htm b/contrib/ntp/html/driver36.htm
index 6f70dcc..2c74646 100644
--- a/contrib/ntp/html/driver36.htm
+++ b/contrib/ntp/html/driver36.htm
@@ -1,581 +1,634 @@
-<html><head><title>
-Radio WWV/H Audio Demodulator/Decoder
-</title></head><body><h3>
-Radio WWV/H Audio Demodulator/Decoder
-</h3><hr>
-
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+<head>
+<meta name="generator" content="HTML Tidy, see www.w3.org">
+<title>Radio WWV/H Audio Demodulator/Decoder</title>
+</head>
+<body>
+<h3>Radio WWV/H Audio Demodulator/Decoder</h3>
+
+<hr>
<h4>Synopsis</h4>
-Address: 127.127.36.<I>u</I>
-<br>Reference ID: <tt>WWV</tt> or <tt>WWVH</tt>
-<br>Driver ID: <tt>WWV_AUDIO</tt>
-<br>Autotune Port: <tt>/dev/icom</tt>; 9600 baud, 8-bits, no parity
-<br>Audio Device: <tt>/dev/audio</tt> and <tt>/dev/audioctl</tt>
+Address: 127.127.36.<i>u</i> <br>
+Reference ID: <tt>WWV</tt> or <tt>WWVH</tt> <br>
+Driver ID: <tt>WWV_AUDIO</tt> <br>
+Autotune Port: <tt>/dev/icom</tt>; 1200/9600 baud, 8-bits, no
+parity <br>
+Audio Device: <tt>/dev/audio</tt> and <tt>/dev/audioctl</tt>
<h4>Description</h4>
This driver synchronizes the computer time using data encoded in
-shortwave radio transmissions from NIST time/frequency stations WWV in
-Ft. Collins, CO, and WWVH in Kauai, HI. Transmissions are made
+shortwave radio transmissions from NIST time/frequency stations WWV
+in Ft. Collins, CO, and WWVH in Kauai, HI. Transmissions are made
continuously on 2.5, 5, 10, 15 and 20 MHz. An ordinary shortwave
-receiver can be tuned manually to one of these frequencies or, in the
-case of ICOM receivers, the receiver can be tuned automatically by the
-driver as propagation conditions change throughout the day and night.
-The performance of this driver when tracking one of the stations is
-ordinarily better than 1 ms in time with frequency drift less than 0.5
-PPM when not tracking either station.
+receiver can be tuned manually to one of these frequencies or, in
+the case of ICOM receivers, the receiver can be tuned automatically
+by the driver as propagation conditions change throughout the day
+and night. The performance of this driver when tracking one of the
+stations is ordinarily better than 1 ms in time with frequency
+drift less than 0.5 PPM when not tracking either station.
<p>The demodulation and decoding algorithms used by this driver are
-based on a machine language program developed for the TAPR DSP93 DSP
-unit, which uses the TI 320C25 DSP chip. The analysis, design and
-performance of the program running on this unit is described in: Mills,
-D.L. A precision radio clock for WWV transmissions. Electrical
-Engineering Report 97-8-1, University of Delaware, August 1997, 25 pp.
-Available from <a href=http://www.eecis.udel.edu/~mills/reports.htm>
-www.eecis.udel.edu/~mills/reports.htm</a>. For use in this driver, the
-original program was rebuilt in the C language and adapted to the NTP
-driver interface. The algorithms have been modified somewhat to improve
-performance under weak signal conditions and to provide an automatic
-station identification feature.
-
-<p>This driver incorporates several features in common with other audio
-drivers such as described in the <a href=driver7.htm>Radio CHU Audio
-Demodulator/Decoder</a> and the <a href=driver6.htm>IRIG Audio
-Decoder</a> pages. They include automatic gain control (AGC), selectable
-audio codec port and signal monitoring capabilities. For a discussion of
-these common features, as well as a guide to hookup, debugging and
-monitoring, see the <a href=audio.htm>Reference Clock Audio Drivers</a>
-page.
-
-<p>The WWV signal format is described in NIST Special Publication 432
-(Revised 1990). It consists of three elements, a 5-ms, 1000-Hz pulse,
-which occurs at the beginning of each second, a 800-ms, 1000-Hz pulse,
-which occurs at the beginning of each minute, and a pulse-width
-modulated 100-Hz subcarrier for the data bits, one bit per second. The
-WWVH format is identical, except that the 1000-Hz pulses are sent at
-1200 Hz. Each minute encodes nine BCD digits for the time of century
-plus seven bits for the daylight savings time (DST) indicator, leap
-warning indicator and DUT1 correction.
+based on a machine language program developed for the TAPR DSP93
+DSP unit, which uses the TI 320C25 DSP chip. The analysis, design
+and performance of the program running on this unit is described
+in: Mills, D.L. A precision radio clock for WWV transmissions.
+Electrical Engineering Report 97-8-1, University of Delaware,
+August 1997, 25 pp. Available from <a href=
+"http://www.eecis.udel.edu/~mills/reports.htm">
+www.eecis.udel.edu/~mills/reports.htm</a>. For use in this driver,
+the original program was rebuilt in the C language and adapted to
+the NTP driver interface. The algorithms have been modified
+somewhat to improve performance under weak signal conditions and to
+provide an automatic station identification feature.</p>
+
+<p>This driver incorporates several features in common with other
+audio drivers such as described in the <a href="driver7.htm">Radio
+CHU Audio Demodulator/Decoder</a> and the <a href="driver6.htm">
+IRIG Audio Decoder</a> pages. They include automatic gain control
+(AGC), selectable audio codec port and signal monitoring
+capabilities. For a discussion of these common features, as well as
+a guide to hookup, debugging and monitoring, see the <a href=
+"audio.htm">Reference Clock Audio Drivers</a> page.</p>
+
+<p>The WWV signal format is described in NIST Special Publication
+432 (Revised 1990). It consists of three elements, a 5-ms, 1000-Hz
+pulse, which occurs at the beginning of each second, a 800-ms,
+1000-Hz pulse, which occurs at the beginning of each minute, and a
+pulse-width modulated 100-Hz subcarrier for the data bits, one bit
+per second. The WWVH format is identical, except that the 1000-Hz
+pulses are sent at 1200 Hz. Each minute encodes nine BCD digits for
+the time of century plus seven bits for the daylight savings time
+(DST) indicator, leap warning indicator and DUT1 correction.</p>
<h4>Program Architecture</h4>
-<p>As in the original program, the clock discipline is modelled as a
-Markov process, with probabilistic state transitions corresponding to a
-conventional clock and the probabilities of received decimal digits. The
-result is a performance level which results in very high accuracy and
-reliability, even under conditions when the minute beep of the signal,
-normally its most prominent feature, can barely be detected by ear with
-a shortwave receiver.
-
-<p>The analog audio signal from the shortwave radio is sampled at 8000
-Hz and converted to digital representation. The 1000/1200-Hz pulses and
-100-Hz subcarrier are first separated using two IIR filters, a 600-Hz
-bandpass filter centered on 1100 Hz and a 150-Hz lowpass filter. The
-minute sync pulse is extracted using a 800-ms synchronous matched filter
-and pulse grooming logic which discriminates between WWV and WWVH
-signals and noise. The second sync pulse is extracted using a 5-ms FIR
-matched filter and 8000-stage comb filter.
-
-<p>The phase of the 100-Hz subcarrier relative to the second sync pulse
-is fixed at the transmitter; however, the audio highpass filter in most
-radios affects the phase response at 100 Hz in unpredictable ways. The
-driver adjusts for each radio using two 170-ms synchronous matched
-filters. The I (in-phase) filter is used to demodulate the subcarrier
-envelope, while the Q (quadrature-phase) filter is used in a tracking
-loop to discipline the codec sample clock and thus the demodulator
-phase.
+<p>As in the original program, the clock discipline is modelled as
+a Markov process, with probabilistic state transitions
+corresponding to a conventional clock and the probabilities of
+received decimal digits. The result is a performance level which
+results in very high accuracy and reliability, even under
+conditions when the minute beep of the signal, normally its most
+prominent feature, can barely be detected by ear with a shortwave
+receiver.</p>
+
+<p>The analog audio signal from the shortwave radio is sampled at
+8000 Hz and converted to digital representation. The 1000/1200-Hz
+pulses and 100-Hz subcarrier are first separated using two IIR
+filters, a 600-Hz bandpass filter centered on 1100 Hz and a 150-Hz
+lowpass filter. The minute sync pulse is extracted using a 800-ms
+synchronous matched filter and pulse grooming logic which
+discriminates between WWV and WWVH signals and noise. The second
+sync pulse is extracted using a 5-ms FIR matched filter and
+8000-stage comb filter.</p>
+
+<p>The phase of the 100-Hz subcarrier relative to the second sync
+pulse is fixed at the transmitter; however, the audio highpass
+filter in most radios affects the phase response at 100 Hz in
+unpredictable ways. The driver adjusts for each radio using two
+170-ms synchronous matched filters. The I (in-phase) filter is used
+to demodulate the subcarrier envelope, while the Q
+(quadrature-phase) filter is used in a tracking loop to discipline
+the codec sample clock and thus the demodulator phase.</p>
<p>The data bit probabilities are determined from the subcarrier
envelope using a threshold-corrected slicer. The averaged envelope
-amplitude 30 ms from the beginning of the second establishes the minimum
-(noise floor) value, while the amplitude 200 ms from the beginning
-establishes the maximum (signal peak) value. The slice level is midway
-between these two values. The negative-going envelope transition at the
-slice level establishes the length of the data pulse, which in turn
-establish probabilities for binary zero (P0) or binary one (P1). The
-values are established by linear interpolation between the pulse lengths
-for P0 (300 ms) and P1 (500 ms) so that the sum is equal to one. If the
-driver has not synchronized to the minute pulse, or if the data bit
-amplitude, signal/noise ratio (SNR) or length are below thresholds, the
-bit is considered invalid and all three probabilities are set to zero.
-
-<p>The difference between the P1 and P0 probabilities, or likelihood,
-for each data bit is exponentially averaged in a set of 60 accumulators,
-one for each second, to determine the semi-static miscellaneous bits,
-such as DST indicator, leap second warning and DUT1 correction. In this
-design, an average value larger than a positive threshold is interpreted
-as a hit on one and a value smaller than a negative threshold as a hit
-on zero. Values between the two thresholds, which can occur due to
-signal fades or loss of signal, are interpreted as a miss, and result in
-no change of indication.
-
-<p>The BCD digit in each digit position of the timecode is represented
-as four data bits, all of which must be valid for the digit itself to be
-considered valid. If so, the bits are correlated with the bits
-corresponding to each of the valid decimal digits in this position. If
-the digit is invalid, the correlated value for all digits in this
-position is assumed zero. In either case, the values for all digits are
-exponentially averaged in a likelihood vector associated with this
-position. The digit associated with the maximum over all of the averaged
-values then becomes the maximum likelihood selection for this position
-and the ratio of the maximum over the next lower value becomes the
-likelihood ratio.
-
-<p>The decoding matrix contains nine row vectors, one for each digit
-position. Each row vector includes the maximum likelihood digit,
-likelihood vector and other related data. The maximum likelihood digit
-for each of the nine digit positions becomes the maximum likelihood time
-of the century. A built-in transition function implements a conventional
-clock with decimal digits that count the minutes, hours, days and years,
-as corrected for leap seconds and leap years. The counting operation
-also rotates the likelihood vector corresponding to each digit as it
-advances. Thus, once the clock is set, each clock digit should
-correspond to the maximum likelihood digit as transmitted.
-
-<p>Each row of the decoding matrix also includes a compare counter and
-the difference (modulo the radix) between the current clock digit and
-most recently determined maximum likelihood digit. If a digit likelihood
-exceeds the decision level and the difference is constant for a number
-of successive minutes in any row, the maximum likelihood digit replaces
-the clock digit in that row. When this condition is true for all rows
-and the second epoch has been reliably determined, the clock is set (or
-verified if it has already been set) and delivers correct time to the
-integral second. The fraction within the second is derived from the
-logical master clock, which runs at 8000 Hz and drives all system timing
-functions.
-
-<p>The logical master clock is derived from the audio codec clock. Its
-frequency is disciplined by a frequency-lock loop (FLL) which operates
-independently of the data recovery functions. At averaging intervals
-determined by the measured jitter, the frequency error is calculated as
-the difference between the most recent and the current second epoch
-divided by the interval. The sample clock frequency is then corrected by
-this amount using an exponential average. When first started, the
-frequency averaging interval is eight seconds, in order to compensate
-for intrinsic codec clock frequency offsets up to 125 PPM. Under most
-conditions, the averaging interval doubles in stages from the initial
-value to over 1000 seconds, which results in an ultimate frequency
-precision of 0.125 PPM, or about 11 ms/day.
+amplitude 30 ms from the beginning of the second establishes the
+minimum (noise floor) value, while the amplitude 200 ms from the
+beginning establishes the maximum (signal peak) value. The slice
+level is midway between these two values. The negative-going
+envelope transition at the slice level establishes the length of
+the data pulse, which in turn establish probabilities for binary
+zero (P0) or binary one (P1). The values are established by linear
+interpolation between the pulse lengths for P0 (300 ms) and P1 (500
+ms) so that the sum is equal to one. If the driver has not
+synchronized to the minute pulse, or if the data bit amplitude,
+signal/noise ratio (SNR) or length are below thresholds, the bit is
+considered invalid and all three probabilities are set to zero.</p>
+
+<p>The difference between the P1 and P0 probabilities, or
+likelihood, for each data bit is exponentially averaged in a set of
+60 accumulators, one for each second, to determine the semi-static
+miscellaneous bits, such as DST indicator, leap second warning and
+DUT1 correction. In this design, an average value larger than a
+positive threshold is interpreted as a hit on one and a value
+smaller than a negative threshold as a hit on zero. Values between
+the two thresholds, which can occur due to signal fades or loss of
+signal, are interpreted as a miss, and result in no change of
+indication.</p>
+
+<p>The BCD digit in each digit position of the timecode is
+represented as four data bits, all of which must be valid for the
+digit itself to be considered valid. If so, the bits are correlated
+with the bits corresponding to each of the valid decimal digits in
+this position. If the digit is invalid, the correlated value for
+all digits in this position is assumed zero. In either case, the
+values for all digits are exponentially averaged in a likelihood
+vector associated with this position. The digit associated with the
+maximum over all of the averaged values then becomes the maximum
+likelihood selection for this position and the ratio of the maximum
+over the next lower value becomes the likelihood ratio.</p>
+
+<p>The decoding matrix contains nine row vectors, one for each
+digit position. Each row vector includes the maximum likelihood
+digit, likelihood vector and other related data. The maximum
+likelihood digit for each of the nine digit positions becomes the
+maximum likelihood time of the century. A built-in transition
+function implements a conventional clock with decimal digits that
+count the minutes, hours, days and years, as corrected for leap
+seconds and leap years. The counting operation also rotates the
+likelihood vector corresponding to each digit as it advances. Thus,
+once the clock is set, each clock digit should correspond to the
+maximum likelihood digit as transmitted.</p>
+
+<p>Each row of the decoding matrix also includes a compare counter
+and the difference (modulo the radix) between the current clock
+digit and most recently determined maximum likelihood digit. If a
+digit likelihood exceeds the decision level and the difference is
+constant for a number of successive minutes in any row, the maximum
+likelihood digit replaces the clock digit in that row. When this
+condition is true for all rows and the second epoch has been
+reliably determined, the clock is set (or verified if it has
+already been set) and delivers correct time to the integral second.
+The fraction within the second is derived from the logical master
+clock, which runs at 8000 Hz and drives all system timing
+functions.</p>
+
+<p>The logical master clock is derived from the audio codec clock.
+Its frequency is disciplined by a frequency-lock loop (FLL) which
+operates independently of the data recovery functions. At averaging
+intervals determined by the measured jitter, the frequency error is
+calculated as the difference between the most recent and the
+current second epoch divided by the interval. The sample clock
+frequency is then corrected by this amount using an exponential
+average. When first started, the frequency averaging interval is
+eight seconds, in order to compensate for intrinsic codec clock
+frequency offsets up to 125 PPM. Under most conditions, the
+averaging interval doubles in stages from the initial value to over
+1000 seconds, which results in an ultimate frequency precision of
+0.125 PPM, or about 11 ms/day.</p>
<p>It is important that the logical clock frequency is stable and
-accurately determined, since in most applications the shortwave radio
-will be tuned to a fixed frequency where WWV or WWVH signals are not
-available throughout the day. In addition, in some parts of the US,
-especially on the west coast, signals from either or both WWV and WWVH
-may be available at different times or even at the same time. Since the
-propagation times from either station are almost always different, each
-station must be reliably identified before attempting to set the clock.
-
-<p>Station identification uses the 800-ms minute pulse transmitted by
-each station. In the acquisition phase the entire minute is searched
-using both the WWV and WWVH using matched filters and a pulse gate
-discriminator similar to that found in radar acquisition and tracking
-receivers. The peak amplitude found determines a range gate and window
-where the next pulse is expected to be found. The minute is scanned
-again to verify the peak is indeed in the window and with acceptable
-amplitude, SNR and jitter. At this point the receiver begins to track
-the second sync pulse and operate as above until the clock is set.
-
-<p>Once the minute is synchronized, the range gate is fixed and only
-energy within the window is considered for the minute sync pulse. A
-compare counter increments by one if the minute pulse has acceptable
-amplitude, SNR and jitter and decrements otherwise. This is used as a
-quality indicator and reported in the timecode and also for the autotune
-function described below.
+accurately determined, since in most applications the shortwave
+radio will be tuned to a fixed frequency where WWV or WWVH signals
+are not available throughout the day. In addition, in some parts of
+the US, especially on the west coast, signals from either or both
+WWV and WWVH may be available at different times or even at the
+same time. Since the propagation times from either station are
+almost always different, each station must be reliably identified
+before attempting to set the clock.</p>
+
+<p>Station identification uses the 800-ms minute pulse transmitted
+by each station. In the acquisition phase the entire minute is
+searched using both the WWV and WWVH using matched filters and a
+pulse gate discriminator similar to that found in radar acquisition
+and tracking receivers. The peak amplitude found determines a range
+gate and window where the next pulse is expected to be found. The
+minute is scanned again to verify the peak is indeed in the window
+and with acceptable amplitude, SNR and jitter. At this point the
+receiver begins to track the second sync pulse and operate as above
+until the clock is set.</p>
+
+<p>Once the minute is synchronized, the range gate is fixed and
+only energy within the window is considered for the minute sync
+pulse. A compare counter increments by one if the minute pulse has
+acceptable amplitude, SNR and jitter and decrements otherwise. This
+is used as a quality indicator and reported in the timecode and
+also for the autotune function described below.</p>
<h4>Performance</h4>
-<p>It is the intent of the design that the accuracy and stability of the
-indicated time be limited only by the characteristics of the propagation
-medium. Conventional wisdom is that synchronization via the HF medium is
-good only to a millisecond under the best propagation conditions. The
-performance of the NTP daemon disciplined by the driver is clearly
-better than this, even under marginal conditions. Ordinarily, with
-marginal to good signals and a frequency averaging interval of 1024 s,
-the frequency is stabilized within 0.1 PPM and the time within 125 <font
-face=Symbol>m</font>s. The frequency stability characteristic is highly
-important, since the clock may have to free-run for several hours before
-reacquiring the WWV/H signal.
-
-<p>The expected accuracy over a typical day was determined using the
-DSP93 and an oscilloscope and cesium oscillator calibrated with a GPS
-receiver. With marginal signals and allowing 15 minutes for initial
-synchronization and frequency compensation, the time accuracy determined
-from the WWV/H second sync pulse was reliably within 125 <font
-face=Symbol>m</font>s. In the particular DSP-93 used for program
-development, the uncorrected CPU clock frequency offset was
-45.8&plusmn;0.1 PPM. Over the first hour after initial synchronization,
-the clock frequency drifted about 1 PPM as the frequency averaging
-interval increased to the maximum 1024 s. Once reaching the maximum, the
-frequency wandered over the day up to 1 PPM, but it is not clear whether
-this is due to the stability of the DSP-93 clock oscillator or the
-changing height of the ionosphere. Once the frequency had stabilized and
-after loss of the WWV/H signal, the frequency drift was less than 0.5
-PPM, which is equivalent to 1.8 ms/h or 43 ms/d. This resulted in a step
-phase correction up to several milliseconds when the signal returned.
-
-<p>The measured propagation delay from the WWV transmitter at Boulder,
-CO, to the receiver at Newark, DE, is 23.5&plusmn;0.1 ms. This is
-measured to the peak of the pulse after the second sync comb filter and
-includes components due to the ionospheric propagation delay, nominally
-8.9 ms, communications receiver delay and program delay. The propagation
-delay can be expected to change about 0.2 ms over the day, as the result
-of changing ionosphere height. The DSP93 program delay was measured at
-5.5 ms, most of which is due to the 400-Hz bandpass filter and 5-ms
-matched filter. Similar delays can be expected of this driver.
+<p>It is the intent of the design that the accuracy and stability
+of the indicated time be limited only by the characteristics of the
+propagation medium. Conventional wisdom is that synchronization via
+the HF medium is good only to a millisecond under the best
+propagation conditions. The performance of the NTP daemon
+disciplined by the driver is clearly better than this, even under
+marginal conditions. Ordinarily, with marginal to good signals and
+a frequency averaging interval of 1024 s, the frequency is
+stabilized within 0.1 PPM and the time within 125 <font face=
+"Symbol">m</font>s. The frequency stability characteristic is
+highly important, since the clock may have to free-run for several
+hours before reacquiring the WWV/H signal.</p>
+
+<p>The expected accuracy over a typical day was determined using
+the DSP93 and an oscilloscope and cesium oscillator calibrated with
+a GPS receiver. With marginal signals and allowing 15 minutes for
+initial synchronization and frequency compensation, the time
+accuracy determined from the WWV/H second sync pulse was reliably
+within 125 <font face="Symbol">m</font>s. In the particular DSP-93
+used for program development, the uncorrected CPU clock frequency
+offset was 45.8&plusmn;0.1 PPM. Over the first hour after initial
+synchronization, the clock frequency drifted about 1 PPM as the
+frequency averaging interval increased to the maximum 1024 s. Once
+reaching the maximum, the frequency wandered over the day up to 1
+PPM, but it is not clear whether this is due to the stability of
+the DSP-93 clock oscillator or the changing height of the
+ionosphere. Once the frequency had stabilized and after loss of the
+WWV/H signal, the frequency drift was less than 0.5 PPM, which is
+equivalent to 1.8 ms/h or 43 ms/d. This resulted in a step phase
+correction up to several milliseconds when the signal returned.</p>
+
+<p>The measured propagation delay from the WWV transmitter at
+Boulder, CO, to the receiver at Newark, DE, is 23.5&plusmn;0.1 ms.
+This is measured to the peak of the pulse after the second sync
+comb filter and includes components due to the ionospheric
+propagation delay, nominally 8.9 ms, communications receiver delay
+and program delay. The propagation delay can be expected to change
+about 0.2 ms over the day, as the result of changing ionosphere
+height. The DSP93 program delay was measured at 5.5 ms, most of
+which is due to the 400-Hz bandpass filter and 5-ms matched filter.
+Similar delays can be expected of this driver.</p>
<h4>Program Operation</h4>
-The driver begins operation immediately upon startup. It first searches
-for one or both of the stations WWV and WWVH and attempts to acquire
-minute sync. This may take some fits and starts, as the driver expects
-to see three consecutive minutes with good signals and low jitter. If
-the autotune function is active, the driver will rotate over all five
-frequencies and both WWV and WWVH stations until three good minutes are
-found.
-
-<p>The driver then acquires second sync, which can take up to several
-minutes, depending on signal quality. At the same time the driver
-accumulates likelihood values for each of the nine digits of the clock,
-plus the seven miscellaneous bits included in the WWV/H transmission
-format. The minute units digit is decoded first and, when five
-repetitions have compared correctly, the remaining eight digits are
-decoded. When five repetitions of all nine digits have decoded
-correctly, which normally takes 15 minutes with good signals and up to
-an hour when buried in noise, and the second sync alarm has not been
-raised for two minutes, the clock is set (or verified) and is selectable
-to discipline the system clock.
-
-<p>As long as the clock is set or verified, the system clock offsets are
-provided once each second to the reference clock interface, where they
-are saved in a buffer. At the end of each minute, the buffer samples are
-groomed by the median filter and trimmed-mean averaging functions. Using
-these functions, the system clock can in principle be disciplined to a
-much finer resolution than the 125-<font face=Symbol>m</font>s sample
-interval would suggest, although the ultimate accuracy is probably
-limited by propagation delay variations as the ionspheric height varies
-throughout the day and night.
-
-<p>As long as signals are available, the clock frequency is disciplined
-for use during times when the signals are unavailable. The algorithm
-refines the frequency offset using increasingly longer averaging
-intervals to 1024 s, where the precision is about 0.1 PPM. With good
-signals, it takes well over two hours to reach this degree of precision;
-however, it can take many more hours than this in case of marginal
-signals. Once reaching the limit, the algorithm will follow frequency
-variations due to temperature fluctuations and ionospheric height
-variations.
-
-<p>It may happen as the hours progress around the clock that WWV and
-WWVH signals may appear alone, together or not at all. When the driver
-is first started, the NTP reference identifier appears as <tt>NONE</tt>.
-When the driver has acquired one or both stations and mitigated which
-one is best, it sets the station identifier in the timecode as described
-below. In addition, the NTP reference identifier is set to the station
-callsign. If the propagation delays has been properly set with the
-<tt>fudge time1</tt> (WWV) and <tt>fudge time2</tt> (WWVH) commands in
-the configuration file, handover from one station to the other will be
-seamless.
+The driver begins operation immediately upon startup. It first
+searches for one or both of the stations WWV and WWVH and attempts
+to acquire minute sync. This may take some fits and starts, as the
+driver expects to see three consecutive minutes with good signals
+and low jitter. If the autotune function is active, the driver will
+rotate over all five frequencies and both WWV and WWVH stations
+until three good minutes are found.
+
+<p>The driver then acquires second sync, which can take up to
+several minutes, depending on signal quality. At the same time the
+driver accumulates likelihood values for each of the nine digits of
+the clock, plus the seven miscellaneous bits included in the WWV/H
+transmission format. The minute units digit is decoded first and,
+when five repetitions have compared correctly, the remaining eight
+digits are decoded. When five repetitions of all nine digits have
+decoded correctly, which normally takes 15 minutes with good
+signals and up to an hour when buried in noise, and the second sync
+alarm has not been raised for two minutes, the clock is set (or
+verified) and is selectable to discipline the system clock.</p>
+
+<p>As long as the clock is set or verified, the system clock
+offsets are provided once each second to the reference clock
+interface, where they are saved in a buffer. At the end of each
+minute, the buffer samples are groomed by the median filter and
+trimmed-mean averaging functions. Using these functions, the system
+clock can in principle be disciplined to a much finer resolution
+than the 125-<font face="Symbol">m</font>s sample interval would
+suggest, although the ultimate accuracy is probably limited by
+propagation delay variations as the ionspheric height varies
+throughout the day and night.</p>
+
+<p>As long as signals are available, the clock frequency is
+disciplined for use during times when the signals are unavailable.
+The algorithm refines the frequency offset using increasingly
+longer averaging intervals to 1024 s, where the precision is about
+0.1 PPM. With good signals, it takes well over two hours to reach
+this degree of precision; however, it can take many more hours than
+this in case of marginal signals. Once reaching the limit, the
+algorithm will follow frequency variations due to temperature
+fluctuations and ionospheric height variations.</p>
+
+<p>It may happen as the hours progress around the clock that WWV
+and WWVH signals may appear alone, together or not at all. When the
+driver is first started, the NTP reference identifier appears as
+<tt>NONE</tt>. When the driver has acquired one or both stations
+and mitigated which one is best, it sets the station identifier in
+the timecode as described below. In addition, the NTP reference
+identifier is set to the station callsign. If the propagation
+delays has been properly set with the <tt>fudge time1</tt> (WWV)
+and <tt>fudge time2</tt> (WWVH) commands in the configuration file,
+handover from one station to the other will be seamless.</p>
<p>Once the clock has been set for the first time, it will appear
-reachable and selectable to discipline the system clock, even if the
-broadcast signal fades to obscurity. A consequence of this design is
-that, once the clock is set, the time and frequency are disciplined only
-by the second sync pulse and the clock digits themselves are driven by
-the clock state machine and ordinarily never changed. However, as long
-as the clock is set correctly, it will continue to read correctly after
-a period of signal loss, as long as it does not drift more than 500 ms
-from the correct time. Assuming the clock frequency can be disciplined
-within 1 PPM, the clock could coast without signals for some 5.8 days
-without exceeding that limit. If for some reason this did happen, the
-clock would be in the wrong second and would never resynchronize. To
-protect against this most unlikely situation, if after four days with no
-signals, the clock is considered unset and resumes the synchronization
-procedure from the beginning.
-
-<p>To work well, the driver needs a communications receiver with good
-audio response at 100 Hz. Most shortwave and communications receivers
-roll off the audio response below 250 Hz, so this can be a problem,
-especially with receivers using DSP technology, since DSP filters can
-have very fast rolloff outside the passband. Some DSP transceivers, in
-particular the ICOM 775, have a programmable low frequency cutoff which
-can be set as low as 80 Hz. However, this particular radio has a strong
-low frequency buzz at about 10 Hz which appears in the audio output and
-can affect data recovery under marginal conditions. Although not tested,
-it would seem very likely that a cheap shortwave receiver could function
-just as well as an expensive communications receiver.
+reachable and selectable to discipline the system clock, even if
+the broadcast signal fades to obscurity. A consequence of this
+design is that, once the clock is set, the time and frequency are
+disciplined only by the second sync pulse and the clock digits
+themselves are driven by the clock state machine and ordinarily
+never changed. However, as long as the clock is set correctly, it
+will continue to read correctly after a period of signal loss, as
+long as it does not drift more than 500 ms from the correct time.
+Assuming the clock frequency can be disciplined within 1 PPM, the
+clock could coast without signals for some 5.8 days without
+exceeding that limit. If for some reason this did happen, the clock
+would be in the wrong second and would never resynchronize. To
+protect against this most unlikely situation, if after four days
+with no signals, the clock is considered unset and resumes the
+synchronization procedure from the beginning.</p>
+
+<p>To work well, the driver needs a communications receiver with
+good audio response at 100 Hz. Most shortwave and communications
+receivers roll off the audio response below 250 Hz, so this can be
+a problem, especially with receivers using DSP technology, since
+DSP filters can have very fast rolloff outside the passband. Some
+DSP transceivers, in particular the ICOM 775, have a programmable
+low frequency cutoff which can be set as low as 80 Hz. However,
+this particular radio has a strong low frequency buzz at about 10
+Hz which appears in the audio output and can affect data recovery
+under marginal conditions. Although not tested, it would seem very
+likely that a cheap shortwave receiver could function just as well
+as an expensive communications receiver.</p>
<h4>Autotune</h4>
-<p>The driver includes provisions to automatically tune the radio in
-response to changing radio propagation conditions throughout the day and
-night. The radio interface is compatible with the ICOM CI-V standard,
-which is a bidirectional serial bus operating at TTL levels. The bus can
-be connected to a serial port using a level converter such as the CT-17.
-The serial port speed is presently compiled in the program, but can be
-changed in the driver source file.
-
-<p>Each ICOM radio is assigned a unique 8-bit ID select code, usually
-expressed in hex format. To activate the CI-V interface, the
-<tt>mode</tt> keyword of the <tt>server</tt> configuration command
-specifies a nonzero select code in decimal format. A table of ID select
-codes for the known ICOM radios is given below. A missing <tt>mode</tt>
-keyword or a zero argument leaves the interface disabled. The driver
-will attempt to open the device <tt>/dev/icom</tt> and, if successful
-will activate the autotune function and tune the radio to each operating
-frequency in turn while attempting to acquire minute sync from either
-WWV or WWVH. However, the driver is liberal in what it assumes of the
-configuration. If the <tt>/dev/icom</tt> link is not present or the open
-fails or the CI-V bus or radio is inoperative, the driver quietly gives
-up with no harm done.
-
-<p>Once acquiring minute sync, the driver operates as described above to
-set the clock. However, during seconds 59, 0 and 1 of each minute it
-tunes the radio to one of the five broadcast frequencies to measure the
-sync pulse and data pulse amplitudes and SNR and update the compare
-counter. Each of the five frequencies are probed in a five-minute
-rotation to build a database of current propagation conditions for all
-signals that can be heard at the time. At the end of each rotation, a
-mitigation procedure scans the database and retunes the radio to the
-best frequency and station found. For this to work well, the radio
-should be set for a fast AGC recovery time. This is most important while
-tracking a strong signal, which is normally the case, and then probing
-another frequency, which may have much weaker signals.
-
-<p>Reception conditions for each frequency and station are evaluated
-according to a metric which considers the minute sync pulse amplitude,
-SNR and jitter, as well as, the data pulse amplitude and SNR. The minute
-pulse is evaluated at second 0, while the data pulses are evaluated at
-seconds 59 and 1. The results are summarized in a scoreboard of three
-bits
+<p>The driver includes provisions to automatically tune the radio
+in response to changing radio propagation conditions throughout the
+day and night. The radio interface is compatible with the ICOM CI-V
+standard, which is a bidirectional serial bus operating at TTL
+levels. The bus can be connected to a serial port using a level
+converter such as the CT-17. The serial port speed is presently
+compiled in the program, but can be changed in the driver source
+file.</p>
+
+<p>Each ICOM radio is assigned a unique 8-bit ID select code,
+usually expressed in hex format. To activate the CI-V interface,
+the <tt>mode</tt> keyword of the <tt>server</tt> configuration
+command specifies a nonzero select code in decimal format. A table
+of ID select codes for the known ICOM radios is given below. Since
+all ICOM select codes are less than 128, the high order bit of the
+code is used by the driver to specify the baud rate. If this bit is
+not set, the rate is 9600 bps for the newer radios; if set, the
+rate is 1200 bps for the older radios. A missing <tt>mode</tt>
+keyword or a zero argument leaves the interface disabled.</p>
+
+<p>If specified, the driver will attempt to open the device <tt>
+/dev/icom</tt> and, if successful will activate the autotune
+function and tune the radio to each operating frequency in turn
+while attempting to acquire minute sync from either WWV or WWVH.
+However, the driver is liberal in what it assumes of the
+configuration. If the <tt>/dev/icom</tt> link is not present or the
+open fails or the CI-V bus or radio is inoperative, the driver
+quietly gives up with no harm done.</p>
+
+<p>Once acquiring minute sync, the driver operates as described
+above to set the clock. However, during seconds 59, 0 and 1 of each
+minute it tunes the radio to one of the five broadcast frequencies
+to measure the sync pulse and data pulse amplitudes and SNR and
+update the compare counter. Each of the five frequencies are probed
+in a five-minute rotation to build a database of current
+propagation conditions for all signals that can be heard at the
+time. At the end of each rotation, a mitigation procedure scans the
+database and retunes the radio to the best frequency and station
+found. For this to work well, the radio should be set for a fast
+AGC recovery time. This is most important while tracking a strong
+signal, which is normally the case, and then probing another
+frequency, which may have much weaker signals.</p>
+
+<p>Reception conditions for each frequency and station are
+evaluated according to a metric which considers the minute sync
+pulse amplitude, SNR and jitter, as well as, the data pulse
+amplitude and SNR. The minute pulse is evaluated at second 0, while
+the data pulses are evaluated at seconds 59 and 1. The results are
+summarized in a scoreboard of three bits</p>
<dl>
+<dt><tt>0x0001</tt></dt>
-<p><dt><tt>0x0001</tt>
-<dd>Jitter exceeded. The difference in epoches between the last minute
-sync pulse and the current one exceeds 50 ms (400 samples).</dd>
+<dd>Jitter exceeded. The difference in epoches between the last
+minute sync pulse and the current one exceeds 50 ms (400
+samples).</dd>
-<dt><tt>0x0002</tt>
-<dd>Minute pulse error. For the minute sync pulse in second 0, either
-the amplitude or SNR is below threshold (2000 and 20 dB,
-respectively).</dd>
+<dt><tt>0x0002</tt></dt>
-<dt><tt>0x0004</tt>
-<dd>Minute pulse error. For both of the data pulses in seocnds 59 and 1,
-either the amplitude or SNR is below threshold (1000 and 10 dB,
+<dd>Minute pulse error. For the minute sync pulse in second 0,
+either the amplitude or SNR is below threshold (2000 and 20 dB,
respectively).</dd>
+<dt><tt>0x0004</tt></dt>
+
+<dd>Minute pulse error. For both of the data pulses in seocnds 59
+and 1, either the amplitude or SNR is below threshold (1000 and 10
+dB, respectively).</dd>
</dl>
<p>If none of the scoreboard bits are set, the compare counter is
-increased by one to a maximum of six. If any bits are set, the counter
-is decreased by one to a minimum of zero. At the end of each minute, the
-frequency and station with the maximum compare count is chosen, with
-ties going to the highest frequency.
+increased by one to a maximum of six. If any bits are set, the
+counter is decreased by one to a minimum of zero. At the end of
+each minute, the frequency and station with the maximum compare
+count is chosen, with ties going to the highest frequency.</p>
<h4>Diagnostics</h4>
-<p>The autotune process produces diagnostic information along with the
-timecode. This is very useful for evaluating the performance of the
-algorithm, as well as radio propagation conditions in general. The
-message is produced once each minute for each frequency in turn after
-minute sync has been acquired.
+<p>The autotune process produces diagnostic information along with
+the timecode. This is very useful for evaluating the performance of
+the algorithm, as well as radio propagation conditions in general.
+The message is produced once each minute for each frequency in turn
+after minute sync has been acquired.</p>
-<p><tt>wwv5 port agc wwv wwvh</tt>
+<p><tt>wwv5 port agc wwv wwvh</tt></p>
-<p>where <tt>port</tt> and <tt>agc</tt> are the audio port and gain,
-respectively, for this frequency and <tt>wwv</tt> and <tt>wwvh</tt> are
-two sets of fields, one each for WWV and WWVH. Each of the two fields
-has the format
+<p>where <tt>port</tt> and <tt>agc</tt> are the audio port and
+gain, respectively, for this frequency and <tt>wwv</tt> and <tt>
+wwvh</tt> are two sets of fields, one each for WWV and WWVH. Each
+of the two fields has the format</p>
-<p><tt>ident score comp sync/snr/jitr</tt>
+<p><tt>ident score comp sync/snr/jitr</tt></p>
<p>where <tt>ident</tt>encodes the station (<tt>C</tt> for WWV,
-<tt>H</tt> for WWVH) and frequency (2, 5, 10, 15 and 20), <tt>score</tt>
-is the scoreboard described above, <tt>comp</tt> is the compare counter,
-<tt>sync</tt> is the minute sync pulse amplitude, <tt>snr</tt> the SNR
-of the pulse and <tt>jitr</tt> is the sample difference between the
-current epoch and the last epoch. An example is:
+<tt>H</tt> for WWVH) and frequency (2, 5, 10, 15 and 20), <tt>
+score</tt> is the scoreboard described above, <tt>comp</tt> is the
+compare counter, <tt>sync</tt> is the minute sync pulse amplitude,
+<tt>snr</tt> the SNR of the pulse and <tt>jitr</tt> is the sample
+difference between the current epoch and the last epoch. An example
+is:</p>
-<p><tt>wwv5 2 111 C20 0100 6 8348/30.0/-3 H20 0203 0 22/-12.4/8846</tt>
+<p><tt>wwv5 2 111 C20 0100 6 8348/30.0/-3 H20 0203 0
+22/-12.4/8846</tt></p>
<p>Here the radio is tuned to 20 MHz and the line-in port AGC is
-currently 111 at that frequency. The message contains a report for WWV
-(<tt>C20</tt>) and WWVH (<tt>H20</tt>). The WWV report scoreboard is
-0100 and the compare count is 6, which suggests very good reception
-conditions, and the minute sync amplitude and SNR are well above
-thresholds (2000 and 20 dB, respectively). Probably the most sensitive
-indicator of reception quality is the jitter, -3 samples, which is well
-below threshold (50 ms or 400 samples). While the message shows solid
-reception conditions from WWV, this is not the case for WWVH. Both the
-minute sync amplitude and SNR are below thresholds and the jitter is
-above threshold.
-
-<p>A sequence of five messages, one for each minute, might appear as
-follows:
-
-<p><pre>wwv5 2 95 C2 0107 0 164/7.2/8100 H2 0207 0 80/-5.5/7754
+currently 111 at that frequency. The message contains a report for
+WWV (<tt>C20</tt>) and WWVH (<tt>H20</tt>). The WWV report
+scoreboard is 0100 and the compare count is 6, which suggests very
+good reception conditions, and the minute sync amplitude and SNR
+are well above thresholds (2000 and 20 dB, respectively). Probably
+the most sensitive indicator of reception quality is the jitter, -3
+samples, which is well below threshold (50 ms or 400 samples).
+While the message shows solid reception conditions from WWV, this
+is not the case for WWVH. Both the minute sync amplitude and SNR
+are below thresholds and the jitter is above threshold.</p>
+
+<p>A sequence of five messages, one for each minute, might appear
+as follows:</p>
+
+<pre>
+wwv5 2 95 C2 0107 0 164/7.2/8100 H2 0207 0 80/-5.5/7754
wwv5 2 99 C5 0104 0 3995/21.8/395 H5 0207 0 27/-9.3/18826
wwv5 2 239 C10 0105 0 9994/30.0/2663 H10 0207 0 54/-16.1/-529
wwv5 2 155 C15 0103 3 3300/17.8/-1962 H15 0203 0 236/17.0/4873
-wwv5 2 111 C20 0100 6 8348/30.0/-3 H20 0203 0 22/-12.4/8846</pre>
+wwv5 2 111 C20 0100 6 8348/30.0/-3 H20 0203 0 22/-12.4/8846
+</pre>
-<p>Clearly, the only frequencies that are available are 15 MHz and 20
-MHz and propagation may be failing for 15 MHz. However, minute sync
-pulses are being heard on 5 and 10 MHz, even though the data pulses are
-not. This is typical of late afternoon when the maximum usable frequency
-(MUF) is falling and the ionospheric loss at the lower frequencies is
-beginning to decrease.
+<p>Clearly, the only frequencies that are available are 15 MHz and
+20 MHz and propagation may be failing for 15 MHz. However, minute
+sync pulses are being heard on 5 and 10 MHz, even though the data
+pulses are not. This is typical of late afternoon when the maximum
+usable frequency (MUF) is falling and the ionospheric loss at the
+lower frequencies is beginning to decrease.</p>
<h4>Debugging Aids</h4>
<p>The most convenient way to track the driver status is using the
-<tt>ntpq</tt> program and the <tt>clockvar</tt> command. This displays
-the last determined timecode and related status and error counters, even
-when the driver is not discipline the system clock. If the debugging
-trace feature (<tt>-d</tt> on the <tt>ntpd</tt> command line)is enabled,
-the driver produces detailed status messages as it operates. If the
-<tt>fudge flag 4</tt> is set, these messages are written to the
-<tt>clockstats</tt> file. All messages produced by this driver have the
-prefix <tt>chu</tt> for convenient filtering with the Unix <tt>grep</tt>
-command.
+<tt>ntpq</tt> program and the <tt>clockvar</tt> command. This
+displays the last determined timecode and related status and error
+counters, even when the driver is not discipline the system clock.
+If the debugging trace feature (<tt>-d</tt> on the <tt>ntpd</tt>
+command line)is enabled, the driver produces detailed status
+messages as it operates. If the <tt>fudge flag 4</tt> is set, these
+messages are written to the <tt>clockstats</tt> file. All messages
+produced by this driver have the prefix <tt>chu</tt> for convenient
+filtering with the Unix <tt>grep</tt> command.</p>
<p>In the following descriptions the units of amplitude, phase,
probability and likelihood are normalized to the range 0-6000 for
-convenience. In addition, the signal/noise ratio (SNR) and likelihood
-ratio are measured in decibels and the words with bit fields are in
-hex. Most messages begin with a leader in the following format:
+convenience. In addition, the signal/noise ratio (SNR) and
+likelihood ratio are measured in decibels and the words with bit
+fields are in hex. Most messages begin with a leader in the
+following format:</p>
-<p><tt>wwvn ss stat sigl</tt>
+<p><tt>wwvn ss stat sigl</tt></p>
-<p>where <tt>wwvn</tt> is the message code, <tt>ss</tt> the second of
-minute, <tt>stat</tt> the driver status word and <tt>sigl</tt> the
-second sync pulse amplitude. A full explanation of the status bits is
-contained in the driver source listing; however, the following are the
-most useful for debugging.
+<p>where <tt>wwvn</tt> is the message code, <tt>ss</tt> the second
+of minute, <tt>stat</tt> the driver status word and <tt>sigl</tt>
+the second sync pulse amplitude. A full explanation of the status
+bits is contained in the driver source listing; however, the
+following are the most useful for debugging.</p>
<dl>
+<dt><tt>0x0001</tt></dt>
-<p><dt><tt>0x0001</tt>
<dd>Minute sync. Set when the decoder has identified a station and
acquired the minute sync pulse.</dd>
-<p><dt><tt>0x0002</tt>
-<dd>Second sync. Set when the decoder has acquired the second sync pulse
-and within 125 <font face=Symbol>m</font>s of the correct phase.</dd>
-<p><dt><tt>0x0004</tt>
-<dd>Minute unit sync. Set when the decoder has reliably determined the
-unit digit of the minute.</dd>
+<dt><tt>0x0002</tt></dt>
+
+<dd>Second sync. Set when the decoder has acquired the second sync
+pulse and within 125 <font face="Symbol">m</font>s of the correct
+phase.</dd>
-<p><dt><tt>0x0008</tt>
-<dd>Clock set. Set when the decoder has reliably determined all nine
-digits of the timecode and is selectable to discipline the system
-clock.</dd>
+<dt><tt>0x0004</tt></dt>
+<dd>Minute unit sync. Set when the decoder has reliably determined
+the unit digit of the minute.</dd>
+
+<dt><tt>0x0008</tt></dt>
+
+<dd>Clock set. Set when the decoder has reliably determined all
+nine digits of the timecode and is selectable to discipline the
+system clock.</dd>
</dl>
-<p>With debugging enabled the driver produces messages in the following
-formats:
+<p>With debugging enabled the driver produces messages in the
+following formats:</p>
-<p>Format <tt>wwv8</tt> messages are produced once per minute by the WWV
-and WWVH station processes before minute sync has been acquired. They
-show the progress of identifying and tracking the minute pulse of each
-station.
+<p>Format <tt>wwv8</tt> messages are produced once per minute by
+the WWV and WWVH station processes before minute sync has been
+acquired. They show the progress of identifying and tracking the
+minute pulse of each station.</p>
-<p><tt>wwv8 port agc ident comp ampl snr epoch jitr offs</tt>
+<p><tt>wwv8 port agc ident comp ampl snr epoch jitr offs</tt></p>
-<p>where <tt>port</tt> and <tt>agc</tt> are the audio port and gain,
-respectively. The <tt>ident</tt>encodes the station (<tt>C</tt> for WWV,
-<tt>H</tt> for WWVH) and frequency (2, 5, 10, 15 and 20). For the
-encoded frequency, <tt>comp</tt> is the compare counter, <tt>ampl</tt>
-the pulse amplitude, <tt>snr</tt> the SNR, <tt>epoch</tt> the sample
-number of the minute pulse in the minute, <tt>jitr</tt> the change since
-the last <tt>epoch</tt> and <tt>offs</tt> the minute pulse offset
-relative to the second pulse. An example is:
+<p>where <tt>port</tt> and <tt>agc</tt> are the audio port and
+gain, respectively. The <tt>ident</tt>encodes the station
+(<tt>C</tt> for WWV, <tt>H</tt> for WWVH) and frequency (2, 5, 10,
+15 and 20). For the encoded frequency, <tt>comp</tt> is the compare
+counter, <tt>ampl</tt> the pulse amplitude, <tt>snr</tt> the SNR,
+<tt>epoch</tt> the sample number of the minute pulse in the minute,
+<tt>jitr</tt> the change since the last <tt>epoch</tt> and <tt>
+offs</tt> the minute pulse offset relative to the second pulse. An
+example is:</p>
-<p><tt> wwv8 2 127 C15 2 9247 30.0 18843 -1 1</tt>
-<br><tt>wwv8 2 127 H15 0 134 -2.9 19016 193 174</tt>
+<p><tt>wwv8 2 127 C15 2 9247 30.0 18843 -1 1</tt><br>
+<tt>wwv8 2 127 H15 0 134 -2.9 19016 193 174</tt></p>
<p>Here the radio is tuned to 15 MHz and the line-in port AGC is
-currently 127 at that frequency. The driver has not yet acquired minute
-sync, WWV has been heard for at least two minutes, and WWVH is in the
-noise. The WWV minute pulse amplitude and SNR are well above the
-threshold (2000 and 6 dB, respectively) and the minute epoch has been
-determined -1 sample relative to the last one and 1 sample relative to
-the second sync pulse. The compare counter has incrmented to two; when
-it gets to three, minute sync has been acquired.
+currently 127 at that frequency. The driver has not yet acquired
+minute sync, WWV has been heard for at least two minutes, and WWVH
+is in the noise. The WWV minute pulse amplitude and SNR are well
+above the threshold (2000 and 6 dB, respectively) and the minute
+epoch has been determined -1 sample relative to the last one and 1
+sample relative to the second sync pulse. The compare counter has
+incrmented to two; when it gets to three, minute sync has been
+acquired.</p>
+
+<p>Format <tt>wwv3</tt> messages are produced after minute sync has
+been acquired and until the seconds unit digit is determined. They
+show the results of decoding each bit of the transmitted
+timecode.</p>
+
+<p><tt>wwv3 ss stat sigl ampl phas snr prob like</tt></p>
-<p>Format <tt>wwv3</tt> messages are produced after minute sync has been
-acquired and until the seconds unit digit is determined. They show the
-results of decoding each bit of the transmitted timecode.
+<p>where <tt>ss</tt>, <tt>stat</tt> and <tt>sigl</tt> are as above,
+<tt>ampl</tt> is the subcarrier amplitude, <tt>phas</tt> the
+subcarrier phase, <tt>snr</tt> the subcarrier SNR, <tt>prob</tt>
+the bit probability and <tt>like</tt> the bit likelihood. An
+example is:</p>
-<p><tt>wwv3 ss stat sigl ampl phas snr prob like</tt>
+<p><tt>wwv3 28 0123 4122 4286 0 24.8 -5545 -1735</tt></p>
-<p>where <tt>ss</tt>, <tt>stat</tt> and <tt>sigl</tt> are as above,
-<tt>ampl</tt> is the subcarrier amplitude, <tt>phas</tt> the subcarrier
-phase, <tt>snr</tt> the subcarrier SNR, <tt>prob</tt> the bit
-probability and <tt>like</tt> the bit likelihood. An example is:
-
-<p><tt>wwv3 28 0123 4122 4286 0 24.8 -5545 -1735</tt>
-
-<p>Here the driver has acquired minute and second sync, but has not yet
-determined the seconds unit digit. However, it has just decoded bit 28
-of the minute. The results show the second sync pulse amplitude well
-over the threshold (500), subcarrier amplitude well above the threshold
-(1000), good subcarrier tracking phase and SNR well above the threshold
-(10 dB). The bit is almost certainly a zero and the likelihood of a zero
-in this second is very high.
-<p>Format <tt>wwv4</tt> messages are produced for each of the nine BCD
-timecode digits until the clock has been set or verified. They show the
-results of decoding each digit of the transmitted timecode.
-<p><tt>wwv4 ss stat sigl radx ckdig mldig diff cnt like snr</tt>
+<p>Here the driver has acquired minute and second sync, but has not
+yet determined the seconds unit digit. However, it has just decoded
+bit 28 of the minute. The results show the second sync pulse
+amplitude well over the threshold (500), subcarrier amplitude well
+above the threshold (1000), good subcarrier tracking phase and SNR
+well above the threshold (10 dB). The bit is almost certainly a
+zero and the likelihood of a zero in this second is very high.</p>
+
+<p>Format <tt>wwv4</tt> messages are produced for each of the nine
+BCD timecode digits until the clock has been set or verified. They
+show the results of decoding each digit of the transmitted
+timecode.</p>
+
+<p><tt>wwv4 ss stat sigl radx ckdig mldig diff cnt like
+snr</tt></p>
<p>where <tt>ss</tt>, <tt>stat</tt> and <tt>sigl</tt> are as above,
<tt>radx</tt> is the digit radix (3, 4, 6, 10), <tt>ckdig</tt> the
current clock digit, <tt>mldig</tt> the maximum likelihood digit,
-<tt>diff</tt> the difference between these two digits modulo the radix,
-<tt>cnt</tt> the compare counter, <tt>like</tt> the digit likelihood and
-<tt>snr</tt> the likelihood ratio. An example is:
+<tt>diff</tt> the difference between these two digits modulo the
+radix, <tt>cnt</tt> the compare counter, <tt>like</tt> the digit
+likelihood and <tt>snr</tt> the likelihood ratio. An example
+is:</p>
-<p><tt>wwv4 8 010f 5772 10 9 9 0 6 4615 6.1</tt>
+<p><tt>wwv4 8 010f 5772 10 9 9 0 6 4615 6.1</tt></p>
-<p>Here the driver has previousl set or verified the clock. It has just
-decoded the digit preceding second 8 of the minute. The digit radix is
-10, the current clock and maximum likelihood digits are both 9, the
-likelihood is well above the threshold (1000) and the likelihood
-function well above threshold (3.0 dB). Short of a hugely unlikely
-probability conspiracy, the clock digit is most certainly a 9.
+<p>Here the driver has previousl set or verified the clock. It has
+just decoded the digit preceding second 8 of the minute. The digit
+radix is 10, the current clock and maximum likelihood digits are
+both 9, the likelihood is well above the threshold (1000) and the
+likelihood function well above threshold (3.0 dB). Short of a
+hugely unlikely probability conspiracy, the clock digit is most
+certainly a 9.</p>
-<p>Format <tt>wwv2</tt> messages are produced at each master oscillator
-frequency update, which starts at 8 s, but eventually climbs to 1024 s.
-They show the progress of the algorithm as it refines the frequency
-measurement to a precision of 0.1 PPM.
+<p>Format <tt>wwv2</tt> messages are produced at each master
+oscillator frequency update, which starts at 8 s, but eventually
+climbs to 1024 s. They show the progress of the algorithm as it
+refines the frequency measurement to a precision of 0.1 PPM.</p>
-<p><tt>wwv2 ss stat sigl avint avcnt avinc jitr delt freq</tt>
+<p><tt>wwv2 ss stat sigl avint avcnt avinc jitr delt freq</tt></p>
<p>where <tt>ss</tt>, <tt>stat</tt> and <tt>sigl</tt> are as above,
-<tt>avint</tt> is the averaging interval, <tt>avcnt</tt> the averaging
-interval counter, <tt>avinc</tt> the interval increment, <tt>jitr</tt>
-the sample change between the beginning and end of the interval,
-<tt>delt</tt> the computed frequency change and <tt>freq</tt> the
-current frequency (PPM). An example is:
+<tt>avint</tt> is the averaging interval, <tt>avcnt</tt> the
+averaging interval counter, <tt>avinc</tt> the interval increment,
+<tt>jitr</tt> the sample change between the beginning and end of
+the interval, <tt>delt</tt> the computed frequency change and <tt>
+freq</tt> the current frequency (PPM). An example is:</p>
-<p><tt>wwv2 22 030f 5795 256 256 4 0 0.0 66.7</tt>
+<p><tt>wwv2 22 030f 5795 256 256 4 0 0.0 66.7</tt></p>
<p>Here the driver has acquired minute and second sync and set the
-clock. The averaging interval has increased to 256 s on the way to 1024
-s, has stayed at that interval for 4 averaging intervals, has measured
-no change in frequency and the current frequency is 66.7 PPM.
+clock. The averaging interval has increased to 256 s on the way to
+1024 s, has stayed at that interval for 4 averaging intervals, has
+measured no change in frequency and the current frequency is 66.7
+PPM.</p>
<p>If the CI-V interface for ICOM radios is active, a debug level
-greater than 1 will produce a trace of the CI-V command and response
-messages. Interpretation of these messages requires knowledge of the
-CI-V protocol, which is beyond the scope of this document.
+greater than 1 will produce a trace of the CI-V command and
+response messages. Interpretation of these messages requires
+knowledge of the CI-V protocol, which is beyond the scope of this
+document.</p>
<h4>Monitor Data</h4>
-When enabled by the <tt>filegen</tt> facility, every received timecode
-is written to the <tt>clockstats</tt> file in the following format:
+When enabled by the <tt>filegen</tt> facility, every received
+timecode is written to the <tt>clockstats</tt> file in the
+following format:
<pre>
sq yy ddd hh:mm:ss.fff ld du lset agc stn rfrq errs freq cons
@@ -599,130 +652,151 @@ is written to the <tt>clockstats</tt> file in the following format:
avgt averaging time
</pre>
-The fields beginning with <tt>year</tt> and extending through
-<tt>dut</tt> are decoded from the received data and are in fixed-length
+The fields beginning with <tt>year</tt> and extending through <tt>
+dut</tt> are decoded from the received data and are in fixed-length
format. The <tt>agc</tt> and <tt>lset</tt> fields, as well as the
-following driver-dependent fields, are in variable-length format.
+following driver-dependent fields, are in variable-length format.
<dl>
+<dt><tt>s</tt></dt>
+
+<dd>The sync indicator is initially <tt>?</tt> before the clock is
+set, but turns to space when all nine digits of the timecode are
+correctly set.</dd>
-<dt><tt>s</tt>
-<dd>The sync indicator is initially <tt>?</tt> before the clock is set,
-but turns to space when all nine digits of the timecode are correctly
-set.</dd>
+<dt><tt>q</tt></dt>
+
+<dd>The quality character is a four-bit hexadecimal code showing
+which alarms have been raised. Each bit is associated with a
+specific alarm condition according to the following:
-<dt><tt>q</tt>
-<dd>The quality character is a four-bit hexadecimal code showing which
-alarms have been raised. Each bit is associated with a specific alarm
-condition according to the following:
<dl>
+<dt><tt>0x8</tt></dt>
+
+<dd>Sync alarm. The decoder may not be in correct second or minute
+phase relative to the transmitter.</dd>
-<dt><tt>0x8</tt>
-<dd>Sync alarm. The decoder may not be in correct second or minute phase
-relative to the transmitter.</dd>
+<dt><tt>0x4</tt></dt>
-<dt><tt>0x4</tt>
<dd>Error alarm. More than 30 data bit errors occurred in the last
minute.</dd>
-<dt><tt>0x2</tt>
-<dd>Symbol alarm. The probability of correct decoding for a digit or
-miscellaneous bit has fallen below the threshold.</dd>
+<dt><tt>0x2</tt></dt>
-<dt><tt>0x1</tt>
-<dd>Decoding alarm. A maximum likelihood digit fails to agree with the
-current associated clock digit.</dd>
+<dd>Symbol alarm. The probability of correct decoding for a digit
+or miscellaneous bit has fallen below the threshold.</dd>
+<dt><tt>0x1</tt></dt>
+
+<dd>Decoding alarm. A maximum likelihood digit fails to agree with
+the current associated clock digit.</dd>
</dl>
-It is important to note that one or more of the above alarms does not
-necessarily indicate a clock error, but only that the decoder has
-detected a condition that may in future result in an error.
+It is important to note that one or more of the above alarms does
+not necessarily indicate a clock error, but only that the decoder
+has detected a condition that may in future result in an
+error.</dd>
+
+<dt><tt>yyyy ddd hh:mm:ss.fff</tt></dt>
-<dt><tt>yyyy ddd hh:mm:ss.fff</tt></tt>
-<dd>The timecode format itself is self explanatory. Since the driver
-latches the on-time epoch directly from the second sync pulse, the
-fraction <tt>fff</tt>is always zero. Although the transmitted timecode
-includes only the year of century, the Gregorian year is augmented 2000
-if the indicated year is less than 72 and 1900 otherwise.</dd>
+<dd>The timecode format itself is self explanatory. Since the
+driver latches the on-time epoch directly from the second sync
+pulse, the fraction <tt>fff</tt>is always zero. Although the
+transmitted timecode includes only the year of century, the
+Gregorian year is augmented 2000 if the indicated year is less than
+72 and 1900 otherwise.</dd>
-<dt><tt>l</tt>
-<dd>The leap second warning is normally space, but changes to <tt>L</tt>
-if a leap second is to occur at the end of the month of June or
-December.</dd>
+<dt><tt>l</tt></dt>
+
+<dd>The leap second warning is normally space, but changes to <tt>
+L</tt> if a leap second is to occur at the end of the month of June
+or December.</dd>
+
+<dt><tt>d</tt></dt>
-<dt><tt>d</tt>
<dd>The DST state is <tt>S</tt> or <tt>D</tt> when standard time or
-daylight time is in effect, respectively. The state is <tt>I</tt> or
-<tt>O</tt> when daylight time is about to go into effect or out of
-effect, respectively.</dd>
-<dt><tt>dut</tt>
-<dd>The DUT sign and magnitude shows the current UT1 offset relative to
-the displayed UTC time, in deciseconds.</dd>
-
-<dt><tt>lset</tt>
-<dd>Before the clock is set, the interval since last set is the number
-of minutes since the driver was started; after the clock is set, this
-is number of minutes since the time was last verified relative to the
-broadcast signal.</dd>
-
-<dt><tt>agc</tt>
-<dd>The audio gain shows the current codec gain setting in the range 0
-to 255. Ordinarily, the receiver audio gain control or IRIG level
-control should be set for a value midway in this range.
-
-<dt><tt>ident</tt>
+daylight time is in effect, respectively. The state is <tt>I</tt>
+or <tt>O</tt> when daylight time is about to go into effect or out
+of effect, respectively.</dd>
+
+<dt><tt>dut</tt></dt>
+
+<dd>The DUT sign and magnitude shows the current UT1 offset
+relative to the displayed UTC time, in deciseconds.</dd>
+
+<dt><tt>lset</tt></dt>
+
+<dd>Before the clock is set, the interval since last set is the
+number of minutes since the driver was started; after the clock is
+set, this is number of minutes since the time was last verified
+relative to the broadcast signal.</dd>
+
+<dt><tt>agc</tt></dt>
+
+<dd>The audio gain shows the current codec gain setting in the
+range 0 to 255. Ordinarily, the receiver audio gain control or IRIG
+level control should be set for a value midway in this range.</dd>
+
+<dt><tt>ident</tt></dt>
+
<dd>The station identifier shows the station, <tt>C</tt> for WWV or
-<tt>H</tt> for WWVH, and frequency being tracked. If neither station is
-heard on any frequency, the station identifier shows <tt>X</tt>.</dd>
-
-<dt><tt>comp</tt>
-<dd>The minute sync compare counter is useful to determine the quality
-of the minute sync signal and can range from 0 (no signal) to 5
-(best).</dd>
-
-<dt><tt>errs</tt>
-<dd>The bit error counter is useful to determine the quality of the data
-signal received in the most recent minute. It is normal to drop a couple
-of data bits under good signal conditions and increasing numbers as
-conditions worsen. While the decoder performs moderately well even with
-half the bits are in error in any minute, usually by that point the sync
-signals are lost and the decoder reverts to free-run anyway.</dd>
-
-<dt><tt>freq</tt>
-<dd>The frequency offset is the current estimate of the codec frequency
-offset to within 0.1 PPM. This may wander a bit over the day due to
-local temperature fluctuations and propagation conditions.</dd>
-
-<dt><tt>avgt</tt>
+<tt>H</tt> for WWVH, and frequency being tracked. If neither
+station is heard on any frequency, the station identifier shows
+<tt>X</tt>.</dd>
+
+<dt><tt>comp</tt></dt>
+
+<dd>The minute sync compare counter is useful to determine the
+quality of the minute sync signal and can range from 0 (no signal)
+to 5 (best).</dd>
+
+<dt><tt>errs</tt></dt>
+
+<dd>The bit error counter is useful to determine the quality of the
+data signal received in the most recent minute. It is normal to
+drop a couple of data bits under good signal conditions and
+increasing numbers as conditions worsen. While the decoder performs
+moderately well even with half the bits are in error in any minute,
+usually by that point the sync signals are lost and the decoder
+reverts to free-run anyway.</dd>
+
+<dt><tt>freq</tt></dt>
+
+<dd>The frequency offset is the current estimate of the codec
+frequency offset to within 0.1 PPM. This may wander a bit over the
+day due to local temperature fluctuations and propagation
+conditions.</dd>
+
+<dt><tt>avgt</tt></dt>
+
<dd>The averaging time is the interval between frequency updates in
powers of two to a maximum of 1024 s. Attainment of the maximum
-indicates the driver is operating at the best possible resolution in
-time and frequency.</dd>
-
+indicates the driver is operating at the best possible resolution
+in time and frequency.</dd>
</dl>
-<p>An example timecode is:
+<p>An example timecode is:</p>
-<p><tt> 0 2000 006 22:36:00.000 S +3 1 115 C20 6 5 66.4 1024</tt>
+<p><tt>0 2000 006 22:36:00.000 S +3 1 115 C20 6 5 66.4
+1024</tt></p>
-<p>Here the clock has been set and no alarms are raised. The year, day
-and time are displayed along with no leap warning, standard time and DUT
-+0.3 s. The clock was set on the last minute, the AGC is safely in the
-middle ot the range 0-255, and the receiver is tracking WWV on 20 MHz.
-Excellent reeiving conditions prevail, as indicated by the compare count
-6 and 5 bit errors during the last minute. The current frequency is 66.4
-PPM and the averaging interval is 1024 s, indicating the maximum
-precision available.
+<p>Here the clock has been set and no alarms are raised. The year,
+day and time are displayed along with no leap warning, standard
+time and DUT +0.3 s. The clock was set on the last minute, the AGC
+is safely in the middle ot the range 0-255, and the receiver is
+tracking WWV on 20 MHz. Excellent reeiving conditions prevail, as
+indicated by the compare count 6 and 5 bit errors during the last
+minute. The current frequency is 66.4 PPM and the averaging
+interval is 1024 s, indicating the maximum precision available.</p>
<h4>Modes</h4>
<p>The <tt>mode</tt> keyword of the <tt>server</tt> configuration
-command specifies the ICOM ID select code. A missing or zero argument
-disables the CI-V interface. Following are the ID select codes for the
-known radios.
-<p><table cols=6 width=100%>
+command specifies the ICOM ID select code. A missing or zero
+argument disables the CI-V interface. Following are the ID select
+codes for the known radios.</p>
+<table cols="6" width="100%">
<tr>
<td>Radio</td>
<td>Hex</td>
@@ -758,6 +832,7 @@ known radios.
<td>0x1A</td>
<td>26</td>
</tr>
+
<tr>
<td>IC751</td>
<td>0x1c</td>
@@ -766,6 +841,7 @@ known radios.
<td>0x34</td>
<td>52</td>
</tr>
+
<tr>
<td>IC761</td>
<td>0x1e</td>
@@ -792,48 +868,63 @@ known radios.
<td>0x2a</td>
<td>42</td>
</tr>
-
</table>
<h4>Fudge Factors</h4>
<dl>
+<dt><tt>time1 <i>time</i></tt></dt>
-<dt><tt>time1 <I>time</I></tt></dt>
-<dd>Specifies the propagation delay for WWV (40:40:49.0N 105:02:27.0W),
-in seconds and fraction, with default 0.0.dd>
+<dd>Specifies the propagation delay for WWV (40:40:49.0N
+105:02:27.0W), in seconds and fraction, with default 0.0.</dd>
-<dt><tt>time2 <I>time</I></tt></dt>
-<dd>Specifies the propagation delay for WWVH (21:59:26.0N 159:46:00.0W),
-in seconds and fraction, with default 0.0.
-</dd>
+<dt><tt>time2 <i>time</i></tt></dt>
-<dt><tt>stratum <I>number</I></tt></dt>
-<dd>Specifies the driver stratum, in decimal from 0 to 15, with default
-0.</dd>
+<dd>Specifies the propagation delay for WWVH (21:59:26.0N
+159:46:00.0W), in seconds and fraction, with default 0.0.</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>Ordinarily, this field specifies the driver reference
+identifier; however, the driver sets the reference identifier
+automatically as described above.</dd>
-<dt><tt>refid <I>string</I></tt></dt>
-<dd>Ordinarily, this field specifies the driver reference identifier;
-however, the driver sets the reference identifier automatically as
-described above.
<dt><tt>flag1 0 | 1</tt></dt>
+
<dd>Not used by this driver.</dd>
<dt><tt>flag2 0 | 1</tt></dt>
-<dd>Specifies the microphone port if set to zero or the line-in port if
-set to one. It does not seem useful to specify the compact disc player
-port.</dd>
+
+<dd>Specifies the microphone port if set to zero or the line-in
+port if set to one. It does not seem useful to specify the compact
+disc player port.</dd>
+
<dt><tt>flag3 0 | 1</tt></dt>
-<dd>Enables audio monitoring of the input signal. For this purpose, the
-speaker volume must be set before the driver is started.</dd>
+
+<dd>Enables audio monitoring of the input signal. For this purpose,
+the speaker volume must be set before the driver is started.</dd>
<dt><tt>flag4 0 | 1</tt></dt>
+
<dd>Enable verbose <tt>clockstats</tt> recording if set.</dd>
</dl>
+
<h4>Additional Information</h4>
-<A HREF="refclock.htm">Reference Clock Drivers</A>
-<br><A HREF="audio.htm">Reference Clock Audio Drivers</A>
-<hr><a href=index.htm><img align=left src=pic/home.gif></a><address><a
-href=mailto:mills@udel.edu> David L. Mills &lt;mills@udel.edu&gt;</a>
-</address></a></body></html>
+<a href="refclock.htm">Reference Clock Drivers</a> <br>
+<a href="audio.htm">Reference Clock Audio Drivers</a>
+
+<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
+&lt;mills@udel.edu&gt;</a></address>
+</body>
+</html>
+
OpenPOWER on IntegriCloud