diff options
Diffstat (limited to 'contrib/ntp/html/driver6.htm')
-rw-r--r-- | contrib/ntp/html/driver6.htm | 253 |
1 files changed, 253 insertions, 0 deletions
diff --git a/contrib/ntp/html/driver6.htm b/contrib/ntp/html/driver6.htm new file mode 100644 index 0000000..a728a54 --- /dev/null +++ b/contrib/ntp/html/driver6.htm @@ -0,0 +1,253 @@ +<HTML> +<HEAD> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> + <META NAME="GENERATOR" CONTENT="Mozilla/4.01 [en] (Win95; I) [Netscape]"> + <TITLE>IRIG Audio Decoder II for Sun SPARCstation +</TITLE> +</HEAD> +<BODY> + +<H3> +IRIG Audio Decoder</H3> + +<HR> +<H4> +Synopsis</H4> +Address: 127.127.6.<I>u</I> +<BR>Reference ID: <TT>IRIG</TT> +<BR>Driver ID: <TT>IRIG_AUDIO</TT> +<BR>Audio Device: <TT>/dev/audio</TT> and <TT>/dev/audioctl</TT> + +<P>Note: This driver supersedes an older one of the same name, address +and ID which required replacing the original kernel audio driver with another +which works only on older Sun SPARCstation systems. The new driver described +here uses the stock kernel audio driver and works in SunOS 4.1.3 and Solaris +2.6 versions and probably all versions in between. The new driver requires +no modification of the operating system. While it is generic and likely +portable to other systems, it is somewhat slower than the original, since +the extensive signal conditioning, filtering and decoding is done in user +space, not kernel space. +<H4> +Description</H4> +This driver supports the Inter-Range Instrumentation Group (IRIG) standard +time distribution signal using the audio codec native to the Sun SPARCstation. +This signal is generated by several radio clocks, including those made +by Arbiter, Austron, Bancomm, Odetics, Spectracom and TrueTime, among others, +although it is often an add-on option. The signal is connected via an optional +attenuator box and cable to either the microphone or line-in ports on a +Sun SPARCstation <TT>/dev/audio</TT> audio codec device. The driver receives, +demodulates and decodes the IRIG-B and IRIG-E signal formats using internal +filters designed to reduce the effects of noise and interfering signals. + +<P>The IRIG signal format uses an amplitude-modulated carrier with pulse-width +modulated data bits. For IRIG-B, the carrier frequency is 1000 Hz and bit +rate 100 b/s; for IRIG-E, the carrier frequenchy is 100 Hz and bit rate +10 b/s. While IRIG-B provides the best accuracy, generally within a few +tens of microseconds relative to IRIG time, it can also generate a significant +load on the processor with older workstations. Generally, the accuracy +with IRIG-E is about ten times worse than IRIG-B, but the processor load +is ten times less. + +<P>The program processes 8000-Hz mu-law companded samples using separate +signal filters for IRIG-B and IRIG-E, a comb filter, envelope detector +and automatic threshold corrector. Cycle crossings relative to the corrected +slice level determine the width of each pulse and its value - zero, one +or position identifier. The data encode 20 BCD digits which determine the +second, minute, hour and day of the year and sometimes the year and synchronization +condition. The comb filter exponentially averages the corresponding samples +of successive baud intervals in order to reliably identify the reference +carrier cycle. A type-II phase-lock loop (PLL) performs additional integration +and interpolation to accurately determine the zero crossing of that cycle, +which determines the reference timestamp. A pulse-width discriminator demodulates +the data pulses, which are then encoded as the BCD digits of the timecode. +The timecode and reference timestamp are updated once each second with +IRIG-B (ten seconds with IRIG-E) and local clock offset samples saved for +later processing. At poll intervals of 64 s, the saved samples are processed +by a trimmed-mean filter and used to update the system clock. + +<P>Infinite impulse response (IIR) filters are used with both IRIG-B and +IRIG-E formats. An 800-Hz highpass filter is used for IRIG-B and a 130-Hz +lowpass filter for IRIG-E. These are intended for use with noisy signals, +such as might be received over a telephone line or radio circuit, or when +interfering signals may be present in the audio passband. The driver determines +which IRIG format is in use by sampling the amplitude of each filter output +and selecting the one with maximum signal. An automatic gain control feature +provides protection against overdriven or underdriven input signal amplitudes. +It is designed to maintain adequate demodulator signal amplitude while +avoiding occasional noise spikes. In order to assure reliable capture, +the decompanded input signal amplitude must be greater than 100 units and +the codec sample frequency error less than 250 PPM (.025 percent). + +<P>The program performs a number of error checks to protect against overdriven +or underdriven input signal levels, incorrect signal format or improper +hardware configuration. Specifically, if any of the following errors occur +for a timecode, the data are rejected. Secifically, if any of the following +errors occur for a time measurement, the data are rejected. +<OL> +<LI> +The peak carrier amplitude is less than 100 units. This usually means dead +IRIG signal source, broken cable or wrong input port.</LI> + +<BR> +<LI> +The frequency error is greater than +-250 PPM (.025 percent). This usually +means broken codec hardware or wrong codec configuration.</LI> + +<BR> +<LI> +The modulation index is less than 0.5. This usually means overdriven IRIG +signal or wrong IRIG format.</LI> + +<BR> +<LI> +A frame synchronization error has occured. This usually means wrong IRIG +signal format or the IRIG signal source has lost synchronization (signature +control).</LI> + +<BR> +<LI> +A data decoding error has occured. This usually means wrong IRIG signal +format.</LI> + +<BR> +<LI> +The current second of the day is not exactly one greater than the previous +one. This usually means a very noisy IRIG signal or insufficient CPU resources.</LI> + +<BR> +<LI> +An audio codec error (overrun) occured. This usually means insufficient +CPU resources, as sometimes happens with Sun SPARC IPCs when doing something +useful.</LI> +</OL> +Note that additional checks are done elsewhere in the reference clock interface +routines. + +<P>Unlike other drivers, which can have multiple instantiations, this one +supports only one. It does not seem likely that more than one audio codec +would be useful in a single machine. More than one would probably chew +up too much CPU time anyway. +<H4> +IRIG-B Timecode Format</H4> +The 100 elements of the IRIG timecode are numbered from 0 through 99. Position +identifiers occur at elements 0, 9, 19 and every ten thereafter to 99. +The control function (CF) elements begin at element 50 (CF 1) and extend +to element 78 (CF 27). The straight-binary-seconds (SBS) field, which encodes +the seconds of the UTC day, begins at element 80 (CF 28) and extends to +element 97 (CF 44). The encoding of elements 50 (CF 1) through 78 (CF 27) +is device dependent. This driver presently decodes the CF elements, but +does nothing with them. + +<P>Where feasible, the IRIG signal source should be operated with signature +control so that, if the signal is lost or mutilated, the source produces +an unmodulated signal, rather than possibly random digits. The driver will +automatically reject the data and declare itself unsynchronized in this +case. Some devices, in particular Spectracom radio/satellite clocks, provide +additional year and status indication in the format: +<PRE> Element CF Function + ------------------------------------- + 55 6 time sync status + 60-63 10-13 BCD year units + 65-68 15-18 BCD year tens</PRE> +Other devices set these elements to zero. +<H4> +Performance</H4> +The mu-law companded data format allows considerable latitude in signal +levels; however, an automatic gain control (AGC) function is implemented +to further compensate for varying input signal levels and to avoid signal +distortion. For proper operation, the IRIG signal source should be configured +for analog signal levels, NOT digital TTL levels. + +<P>The accuracy of the system clock synchronized to the IRIG-B source with +this driver and the <TT>ntpd</TT> daemon is 10-20 microseconds with a Sun +UltraSPARC II and maybe twice that with a Sun SPARC IPC. The processor +resources consumed by the daemon can be significant, ranging from about +1.2 percent on the faster UltraSPARC II to 38 percent on the slower SPARC +IPC. However, the overall timing accuracy is limited by the resolution +and stability of the CPU clock oscillator and the interval between clock +corrections, which is 64 s with this driver. This performance, while probably +the best that can be achieved by the daemon itself, can be improved with +assist from the PPS discipline as described elsewhere in the documentation. +<H4> +Monitor Data</H4> +The timecode format used for debugging and data recording includes data +helpful in diagnosing problems with the IRIG signal and codec connections. +With debugging enabled (-d -d -d on the ntpd command line), the driver +produces one line for each timecode in the following format: +<PRE>00 1 98 23 19:26:52 721 143 0.694 47 20 0.083 66.5 3094572411.00027</PRE> +The first field containes the error flags in hex, where the hex bits are +interpreted as below. This is followed by the IRIG status indicator, year +of century, day of year and time of day. The status indicator and year +are not produced by some IRIG devices. Following these fields are the signal +amplitude (0-8100), codec gain (0-255), field phase (0-79), time constant +(2-20), modulation index (0-1), carrier phase error (0+-0.5) and carrier +frequency error (PPM). The last field is the on-time timestamp in NTP format. +The fraction part is a good indicator of how well the driver is doing. +With an UltrSPARC 30, this is normally within a few tens of microseconds +relative to the IRIG-B signal and within a few hundred microseconds with +IRIG-E. +<H4> +Fudge Factors</H4> + +<DL> +<DT> +<TT>time1 <I>time</I></TT></DT> + +<DD> +Specifies the time offset calibration factor, in seconds and fraction, +with default 0.0.</DD> + +<DT> +<TT>time2 <I>time</I></TT></DT> + +<DD> +Not used by this driver.</DD> + +<DT> +<TT>stratum <I>number</I></TT></DT> + +<DD> +Specifies the driver stratum, in decimal from 0 to 15, with default 0.</DD> + +<DT> +<TT>refid <I>string</I></TT></DT> + +<DD> +Specifies the driver reference identifier, an ASCII string from one to +four characters, with default <TT>IRIG</TT>.</DD> + +<DT> +<TT>flag1 0 | 1</TT></DT> + +<DD> +Not used by this driver.</DD> + +<DT> +<TT>flag2 0 | 1</TT></DT> + +<DD> +Specifies the 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> + +<DT> +<TT>flag4 0 | 1</TT></DT> + +<DD> +Enable verbose <TT>clockstats</TT> recording if set.</DD> +</DL> +Additional Information + +<P><A HREF="refclock.htm">Reference Clock Drivers</A> +<HR> +<ADDRESS> +David L. Mills (mills@udel.edu)</ADDRESS> + +</BODY> +</HTML> |