228 lines
8.7 KiB
HTML
228 lines
8.7 KiB
HTML
<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>
|