diff options
Diffstat (limited to 'contrib/ntp/html/driver6.htm')
-rw-r--r-- | contrib/ntp/html/driver6.htm | 431 |
1 files changed, 210 insertions, 221 deletions
diff --git a/contrib/ntp/html/driver6.htm b/contrib/ntp/html/driver6.htm index a728a54..9fac978 100644 --- a/contrib/ntp/html/driver6.htm +++ b/contrib/ntp/html/driver6.htm @@ -1,253 +1,242 @@ -<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> +<html><head><title> +IRIG Audio Decoder +</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. +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 some +workstations. 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 port. 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 interference. + +<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=driver36.htm>Radio WWV/H Audio +Demodulator/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 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. +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. +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. +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> +<LI>The peak carrier amplitude is less than 100 units. This usually +means dead IRIG signal source, broken cable or wrong input port.</LI> + +<LI>The frequency error is greater than ±250 PPM (.025 percent). +This usually means broken codec hardware or wrong codec +configuration.</LI> + +<LI>The modulation index is less than 0.5. This usually means overdriven +IRIG signal or wrong IRIG format.</LI> -<DD> -Specifies the time offset calibration factor, in seconds and fraction, -with default 0.0.</DD> +<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> -<DT> -<TT>time2 <I>time</I></TT></DT> +<LI>A data decoding error has occured. This usually means wrong IRIG +signal format.</LI> -<DD> -Not used by this driver.</DD> +<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> -<DT> -<TT>stratum <I>number</I></TT></DT> +<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> -<DD> -Specifies the driver stratum, in decimal from 0 to 15, with default 0.</DD> +</OL> -<DT> -<TT>refid <I>string</I></TT></DT> +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> -<DD> -Specifies the driver reference identifier, an ASCII string from one to -four characters, with default <TT>IRIG</TT>.</DD> +Other devices set these elements to zero. -<DT> -<TT>flag1 0 | 1</TT></DT> +<H4>Performance</H4> -<DD> -Not used by this driver.</DD> +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 <font +face=symbol>m</font>s 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> -<DT> -<TT>flag2 0 | 1</TT></DT> +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 on the ntpd command line), the +driver produces one line for each timecode in the following format: + +<p><tt>00 1 98 23 19:26:52 721 143 0.694 47 20 0.083 66.5 +3094572411.00027</tt> + +<p>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> -<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> +<DL> -<DT> -<TT>flag3 0 | 1</TT></DT> +<DT><TT>time1 <I>time</I></TT></DT> +<DD>Specifies the time offset calibration factor, in seconds and +fraction, with default 0.0.</DD> -<DD> -Enables audio monitoring of the input signal. For this purpose, the speaker -volume must be set before the driver is started.</DD> +<DT><TT>time2 <I>time</I></TT></DT> +<DD>Not used by this driver.</DD> -<DT> -<TT>flag4 0 | 1</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> -Enable verbose <TT>clockstats</TT> recording if set.</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> +<H4>Additional Information</H4> + +<A HREF="refclock.htm">Reference Clock Drivers</A> +<br><A HREF="audio.htm">Reference Clock Audio Drivers</A> -</BODY> -</HTML> +<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> |