diff options
Diffstat (limited to 'contrib/ntp/html/driver36.htm')
-rw-r--r-- | contrib/ntp/html/driver36.htm | 1285 |
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±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±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±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±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 <mills@udel.edu></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 +<mills@udel.edu></a></address> +</body> +</html> + |