diff options
Diffstat (limited to 'contrib/ntp/html/driver7.htm')
-rw-r--r-- | contrib/ntp/html/driver7.htm | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/contrib/ntp/html/driver7.htm b/contrib/ntp/html/driver7.htm new file mode 100644 index 0000000..0394fbf --- /dev/null +++ b/contrib/ntp/html/driver7.htm @@ -0,0 +1,227 @@ +<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>Canadian CHU Radio Modem/Audio Decoder +</TITLE> +</HEAD> +<BODY> + +<H3> +CHU Audio/Modem Decoder</H3> + +<HR> +<H4> +Synopsis</H4> +Address: 127.127.7.<I>u</I> +<BR>Reference ID: <TT>CHU</TT> +<BR>Driver ID: <TT>CHU</TT> +<BR>Serial Port: <TT>/dev/chu<I>u</I></TT>; 300 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 radio +transmissions from Canadian time/frequency station CHU in Ottawa, Ontario. +Transmissions are made continuously on 3330 kHz, 7335 kHz and 14670 kHz +in upper sideband, compatible AM mode. 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 using the <TT>minimuf</TT> and +<TT>icom</TT> programs as propagation conditions change throughout the +day and night. + +<P>This driver replaces an earlier one built by Dennis Ferguson in 1988. +The earlier driver required a special line discipline which preprocessed +the signal in order to improve accuracy and avoid errors. The new driver +includes more powerful algorithms implemented directly in the driver and +requires no line discipline. It decodes the data using a maximum-likelihood +technique which exploits the considerable degree of redundancy available +to maximize accuracy and minimize errors. + +<P>While there are currently no known commercial CHU receivers, a simple +but effective receiver/demodulator can be constructed from an ordinary +shortwave receiver and Bell 103 compatible, 300-bps modem or modem chip, +as described in the <A HREF="file:///J|/ntp4/html/pps.htm">Pulse-per-second +(PPS) Signal Interfacing</A> page. The driver can be compiled to use this +modem to receive the radio signal and demodulate the data. Alternatively, +the driver can be compiled to use the audio codec of the Sun workstation +or another with compatible audio drivers. In the latter case, the driver +implements the modem using DSP routines, so the radio can be connected +directly to either the microphone on line input port. + +<P>The CHU time broadcast includes an audio signal compatible with the +Bell 103 modem standard (mark = 2225 Hz, space = 2025 Hz). It consist of +nine, ten-character bursts transmitted at 300 bps and beginning each second +from second 31 to second 39 of the minute. Each character consists of eight +data bits plus one start bit and two stop bits to encode two hex digits. +The burst data consist of five characters (ten hex digits) followed by +a repeat of these characters. In format A, the characters are repeated +in the same polarity; in format B, the characters are repeated in the opposite +polarity. + +<P>Format A bursts are sent at seconds 32 through 39 of the minute in hex +digits + +<P><TT> 6dddhhmmss6dddhhmmss</TT> + +<P>The first ten digits encode a frame marker (<TT>6</TT>) followed by +the day (<TT>ddd</TT>), hour (<TT>hh </TT>in UTC), minute (<TT>mm</TT>) +and the second (<TT>ss</TT>). Since format A bursts are sent during the +third decade of seconds the tens digit of <TT>ss </TT>is always 3. The +driver uses this to determine correct burst synchronization. These digits +are then repeated with the same polarity. + +<P>Format B bursts are sent at second 31 of the minute in hex digits + +<P><TT> xdyyyyttaaxdyyyyttaa</TT> + +<P>The first ten digits encode a code (<TT>x </TT>described below) followed +by the DUT1 (<TT>d </TT>in deciseconds), Gregorian year (<TT>yyyy</TT>), +difference TAI - UTC (<TT>tt</TT>) and daylight time indicator (<TT>aa</TT>) +peculiar to Canada. These digits are then repeated with inverted polarity. + +<P>The <TT>x </TT>is coded + +<P>1 Sign of DUT (0 = +) +<BR>2 Leap second warning. One second will be added. +<BR>4 Leap second warning. One second will be subtracted. +This is not likely to happen in our universe. +<BR>8 Even parity bit for this nibble. + +<P>By design, the last stop bit of the last character in the burst coincides +with 0.5 second. Since characters have 11 bits and are transmitted at 300 +bps, the last stop bit of the first character coincides with 0.5 - 10 * +11/300 = 0.133 second. Depending on the UART, character interrupts can +vary somewhere between the beginning of bit 9 and end of bit 11. These +eccentricities can be corrected along with the radio propagation delay +using <TT>fudge time1</TT>. +<H4> +Debugging aids</H4> +The timecode format used for debugging and data recording includes data +helpful in diagnosing problems with the radio signal and serial connections. +With debugging enabled (<TT>-d -d -d</TT> on the <TT>ntpd </TT>command +line), the driver produces one line for each burst in two formats corresponding +to format A and B. Following is format A: + +<P><TT> n b f s m code</TT> + +<P>where <TT>n </TT>is the number of characters in the burst (0-11), <TT>b +</TT>the burst distance (0-40), <TT>f </TT>the field alignment (-1, 0, +1), <TT>s </TT>the synchronization distance (0-16), <TT>m </TT>the burst +number (2-9) and <TT>code </TT>the burst characters as received. Note that +the hex digits in each character are reversed, so the burst + +<P><TT> 10 38 0 16 9 06851292930685129293</TT> + +<P>is interpreted as containing 11 characters with burst distance 38, field +alignment 0, synchronization distance 16 and burst number 9. The nibble-swapped +timecode shows day 58, hour 21, minute 29 and second 39. + +<P>When the audio driver is compiled, format A is preceded by the gain +(0-255) and relative signal level (0-9999). The receiver volume control +should be set so that the gain is near the middle of the range 0-255, which +results in a signal level near 1000. + +<P>Following is format B: + +<P><TT> n b s code</TT> + +<P>where <TT>n </TT>is the number of characters in the burst (0-11), <TT>b +</TT>the burst distance (0-40), <TT>s </TT>the synchronization distance +(0-40) and <TT>code </TT>the burst characters as received. Note that the +hex digits in each character are reversed and the last ten digits inverted, +so the burst + +<P> <TT>11 40 1091891300ef6e76ecff</TT> + +<P>is interpreted as containing 11 characters with burst distance 40. The +nibble-swapped timecode shows DUT1 +0.1 second, year 1998 and TAI - UTC +31 seconds. + +<P>In addition to the above, the reference timecode is updated and written +to the clockstats file and debug score after the last burst received in +the minute. The format is + +<P> <TT> qq yyyy ddd hh:mm:ss nn dd tt</TT> + +<P>where <TT>qq </TT>are the error flags, as described below, <TT>yyyy +</TT>is the year, <TT>ddd </TT>the day, <TT>hh:mm:ss </TT>the time of day, +<TT>nn </TT>the number of format A bursts received during the previous +minute, <TT>dd </TT>the decoding distance and <TT>tt </TT>the number of +timestamps. The error flags are cleared after every update. + +<P>For accuracy better than the low milliseconds, the <TT>fudge time1</TT> +variable can be used to set the propagation delay and compensate for inherent +latencies in the serial port hardware and operating system. This can be +done conveniently using the <TT>minimuf</TT> program. +<H4> +Monitor Data</H4> +When enabled by the <TT>flag4</TT> fudge flag, every received timecode +burst in both format A or format B is written to the <TT>clockstats</TT> +file. +<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>CHU</TT>.</DD> + +<DT> +<TT>flag1 0 | 1</TT></DT> + +<DD> +Not used by this driver.</DD> + +<DT> +<TT>flag2 0 | 1</TT></DT> + +<DD> +When the audio driver is compiled, this flag selects the audio input +port, where 0 is the mike port (default) and 1 is the line-in port. It +does not seem useful to select the compact disc player port.</DD> + +<DT> +<TT>flag3 0 | 1</TT></DT> + +<DD> +When the audio driver is compiled, this flag 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="file:///J|/ntp4/html/refclock.htm">Reference Clock Drivers</A> +<HR> +<ADDRESS> +David L. Mills (mills@udel.edu)</ADDRESS> + +</BODY> +</HTML> |