[list.ntp] More on WWV/WWVH timecode generators

clements@BBN.COM (02/27/90)

My call for interest in building the new WWV/WWVH time code generators
has produced a total of one other enthusiast from the bushes.  He's on
the left coast and I'm on the right coast, but we're talking about it.

I got the spec from the procurement office.  It has 58 pages of legalistic
boiler plate, with many more pages included by reference, and 15 pages
of technical spec.  This has convinced me that it would be silly to
try to form the "Friends of WWV/WWVH, Inc." that I suggested to build
the TCGs.  The legalisms are far too intimidating for me.  But we might
just build them anyway as a gift to the government if there is no
bidder that they can afford.  It turns out the deadline for bidders to
reply is this Thursday.

Anyhow, here is a portion of the spec of direct relevance to NTP-ers.
It describes how the WWV/WWVH time code will be enhanced to deal better
with Daylight Saving Time and with Leap Seconds.  FYI.


[Excerpt from spec, Attachment 1 to Department of Commerce Solicitation
number 52RANB00C059, issued 1-23-90]

Attachment 1
Page 1 of 15

Revised 11/22/89

    SPECIFICATIONS

    TIME CODE GENERATOR/PROGRAMMER

1.0 Scope

    This specification establishes the requirements for two time code
    generator/programmer systems that will be used to generate precision
    timing signals for use by NIST standard time and frequency stations WWV
    and WWVH.  Each of these systems will consist of:

    (1) Three (3) time code generator/programmer units, and

    (2) Software and interfacing hardware to provide for entering commands
        to the time code generators through a computer.

[...]

2.5.6   Time Code Generator - BCD Format Table

    Second      Data

    00          low subcarrier
    01          0
    02          0
    03          0
    04          0
    05          0
    06          0
    07          0
    08          0
    09          position marker 1
    10          minute 1
    11          minute 2
    12          minute 4
    13          minute 8
    14          0
    15          minute 10
    16          minute 20
    17          minute 40
    18          0
    19          position marker 2
    20          hour 1
    21          hour 2
    22          hour 4
    23          hour 8
    24          0
    25          hour 10
    26          hour 20
    27          0
    28          0
    29          position marker 3
    30          day 1
    31          day 2
    32          day 4
    33          day 8
    34          0
    35          day 10
    36          day 20
    37          day 40
    38          day 80
    39          position marker 4
    40          day 100
    41          day 200
    42          0
    43  (new)   leap second warning
    44  (new)   Daylight Saving Time indicator #2
    45  (new)   year 1
    46  (new)   year 2
    47  (new)   year 4
    48  (new)   year 8
    49          position marker 5
    50          UT1 sign
    51  (new)   year 10
    52  (new)   year 20
    53  (new)   year 40
    54  (new)   year 80
    55          Daylight Saving Time indicator #1
    56          UT1 .1
    57          UT1 .2
    58          UT1 .4
    59          position marker 0

Note:   Daylight Saving Time indicator bits #1 and #2 are scheduled for
	change by the operator.  The normal procedure is for DST indicator
	bit #1 to change at 0000 UTC on the day of a change to or from
	Daylight Saving Time and DST indicator bit #2 to change in the same
	way 24 hours later at 0000 UTC on the day after the time change.
	When both bits are set to "0", standard time is in effect and it is
	not a day of time change; when both bits are set to "1", Daylight
	Saving Time is in effect and it is not a day of time change.  Each
	receiver can then interpret these bits unambiguously so as to change
	onto or off of Daylight Saving Time at 2:00 AM receiver local time.

Note:   Leap seconds are always inserted/deleted at the last second of the
	UTC month.  Leap second warning is scheduled to be turned on at any
	time during the month to which a leap second is being added, and is
	automatically turned off immediately after the leap second.  The UT1
	bits also automatically change after a leap second.  Incremental UT1
	changes may be scheduled by the operator at any time.

[End of excerpt from spec.]

Again, the above is the spec for the NEW generators, not what exists
today.  Today the DUT1 stuff doesn't change automatically, for example.
And there is no leap second warning or year info.

Not clear how a single leap second warning bit helps you when the
leap second is negative.  Does anyone know whether negative leap
seconds are expected to be needed in the next century or so?

/Rcc
Bob Clements, K1BC, clements@bbn.com

Mills@udel.edu (02/27/90)

Bob,

Tnx for the info. As for negative leaps, it does not seem likely
during our lives or the lives of the timecode generator that such
would happen barring impact of a very large meteorite, in shich
case there may be nothing left to broadcast timecodes to.

I'd like to find out if this is in fact the format allegedly used
on WWVB now. I'd also like to find out what codes are used in
Europe.

Dave

clements@BBN.COM (02/28/90)

> [...] I'd like to find out if this is in fact the format allegedly used
> on WWVB now. [...]
> Dave

WWVB's format is quite different.  The MSB-to-LSB of each digit is
reversed, the UT1 sign bit is three bits, and all the fields are
in different parts of the minute.

As to whether the Leap and Year info is there, I have tried again
to read WWVB under the line noise, under different local weather
(moisture) conditions and had no luck.

/Rcc

William Armitage <wja%computer-science.nottingham.ac.uk@NSFnet-Relay.AC.UK> (02/28/90)

 > I'd like to find out if this is in fact the format allegedly used
 > on WWVB now. I'd also like to find out what codes are used in
 > Europe.

Here's the header file describing the layout of the codes on Rugby MSF 60KHz.
This is the slow code consisting of keying off the carrier for 100 or 200ms
each second. Some seconds carry a second bit by keying from 200ms to 300ms
off the second. Data is BCD with the Most significant bit first.
The data sequence is spread over a minute with the minute marked
by the 01111110 pattern, the data is for the following minute mark.
There's a fast code burst on the minute but i don't
have anything to decode it with, the slow code is going into a modem port on
a sun. Currently the signal is too noisy for production use.

------------------------ msf.h ---------------------------------

/*
 *  Layout of slow code transmited by the Rugby 60Khz MSF
 *
 * taken from the Rewbichron2 constriuction article in
 * Radio and Electronics World
 *
 * Anybody have a description of the DUT1 code?
 *
 * William Armitage <wja@cs.nott.ac.uk> July 89
 */

#define MSF_FASTCODE	0	/* high speed data */

/*
 * first level data bits
 * 100ms to 200ms after keyup - on = 0
 *
 * date information - starts at second 17, there are some DUT codes first
 */

#define MSFS1_YEAR_MSB  17	/* year - since 1900 (Most significan BCD)*/
#define MSFS1_YEAR_MSBLEN 4
#define MSFS1_YEAR_LSB  21			/* least significant BCD */
#define MSFS1_YEAR_LSBLEN 4
#define MSFS1_MONTH_MSB	25	/* month - (1 - 12) */
#define MSFS1_MONTH_MSBLEN 1
#define MSFS1_MONTH_LSB	26
#define MSFS1_MONTH_LSBLEN 4
#define MSFS1_DAY_MSB	30	/* day of month */
#define MSFS1_DAY_MSBLEN  2
#define MSFS1_DAY_LSB	32
#define MSFS1_DAY_LSBLEN  4
#define MSFS1_DOW_LSB	36	/* day of week (sun = 0) */
#define MSFS1_DOW_LSBLEN  3
#define MSFS1_HOUR_MSB	39	/* hour */
#define MSFS1_HOUR_MSBLEN 2
#define MSFS1_HOUR_LSB	41
#define MSFS1_HOUR_LSBLEN 4
#define MSFS1_MIN_MSB	45	/* minute */
#define MSFS1_MIN_MSBLEN  3
#define MSFS1_MIN_LSB	48
#define MSFS1_MIN_LSBLEN  4
#define MSFS1_SYNC	52	/* framing pattern 01111110 */
#define MSFS1_SYNCLAST  59	/* final zero */
#define MSFS1_SYNC_LEN	8

/*
 * second level data bits
 * 200ms to 300ms after keyup - on = 0
 *
 * parity checks and British summer time bits,
 * starts on second 54 in minute
 * parity is odd
 */
#define MSFS2_YEAR_CHECK 54
#define MSFS2_DAYMONTH_CHECK 55
#define MSFS2_DOW_CHECK 56
#define MSFS2_HOURMIN_CHECK 57
#define MSFS2_BST	58