2014-01-23 22:13:32 +00:00
|
|
|
|
// Status=review
|
|
|
|
|
//Needs work!
|
|
|
|
|
|
|
|
|
|
JT9 is a mode designed for making minimal QSOs at LF, MF, and HF. It
|
2014-01-24 20:09:47 +00:00
|
|
|
|
uses 72-bit structured messages nearly identical (at the user level)
|
|
|
|
|
to those in JT65. Error control coding (ECC) uses a strong
|
2014-01-23 22:13:32 +00:00
|
|
|
|
convolutional code with constraint length K=32, rate r=1/2, and a zero
|
|
|
|
|
tail, leading to an encoded message length of (72+31) × 2 = 206
|
|
|
|
|
information-carrying bits. Modulation is 9-FSK: eight tones are used
|
2014-01-24 20:09:47 +00:00
|
|
|
|
for data, one for synchronization. Thus, three data bits or one
|
|
|
|
|
synchronization bit are conveyed by each transmitted symbol. Sixteen
|
|
|
|
|
symbol intervals are devoted to synchronization, so a transmission
|
|
|
|
|
requires a total of 206 / 3 + 16 = 85 (rounded up) channel
|
|
|
|
|
symbols. The sync symbols are those numbered 1, 2, 5, 10, 16, 23, 33,
|
|
|
|
|
35, 51, 52, 55, 60, 66, 73, 83, and 85 in the transmitted sequence.
|
2014-01-23 22:13:32 +00:00
|
|
|
|
|
|
|
|
|
Each symbol lasts for 6912 sample intervals at 12000 samples per
|
|
|
|
|
second, or about 0.576 s. Tone spacing of the 9-FSK modulation is
|
|
|
|
|
12000/6912 = 1.736 Hz, the inverse of the symbol duration. The total
|
2014-01-24 20:09:47 +00:00
|
|
|
|
occupied bandwidth is 9 × 1.736 = 15.6 Hz. A generated JT9 signal has
|
|
|
|
|
continuous phase and constant amplitude. There are no key clicks, and
|
|
|
|
|
the transmitter's power amplifier need not be highly linear.
|
2014-01-23 22:13:32 +00:00
|
|
|
|
|
|
|
|
|
.Transmitting
|
|
|
|
|
|
|
|
|
|
Immediately before the start of a transmission WSJT-X encodes a
|
|
|
|
|
user’s message and computes the sequence of tones to be sent. The
|
|
|
|
|
transmitted audio waveform is computed on-the-fly, using 16-bit
|
|
|
|
|
integer samples at a 48000 Hz rate. The digital samples are converted
|
2014-01-24 20:09:47 +00:00
|
|
|
|
to an analog waveform in the sound card or equivalent D/A interface.
|
2014-01-23 22:13:32 +00:00
|
|
|
|
|
|
|
|
|
.Receiving and Decoding
|
|
|
|
|
|
|
|
|
|
WSJT-X acquires 16-bit integer samples from the sound card at a 48000
|
2014-01-24 20:09:47 +00:00
|
|
|
|
Hz rate, and immediately downsamples the stream to 12000 Hz. Spectra
|
|
|
|
|
from overlapping segments are computed for the waterfall display and
|
|
|
|
|
saved at intervals of 0.188 s, half the JT9 symbol length. As shown
|
|
|
|
|
in screen shots earlier in this guide, a JT9 signal appears in the
|
|
|
|
|
*Cumulative* spectrum as a nearly rectangular shape about 16 Hz wide.
|
|
|
|
|
Although there is no clearly visible “sync tone” like the one at the
|
|
|
|
|
low-frequency edge of a JT65 signal, by convention the nominal
|
2014-01-23 22:13:32 +00:00
|
|
|
|
frequency of a JT9 signal is taken to be that of the lowest tone, at
|
|
|
|
|
the left edge of the spectrum.
|
|
|
|
|
|
|
|
|
|
At the end of a reception sequence, about 50 seconds into the UTC
|
|
|
|
|
minute, received data samples are forwarded to the decoder. For
|
|
|
|
|
operator convenience the decoder goes through its full procedure
|
|
|
|
|
twice: first at the selected Rx frequency, and then in the full
|
|
|
|
|
displayed frequency range (or in JT9+JT65 mode, the displayed range
|
|
|
|
|
above the blue *JT65 nnnn JT9* marker). Decoding of clean JT9 signals
|
2014-01-24 20:09:47 +00:00
|
|
|
|
in a white-noise background starts to fail below signal-to-noise
|
2014-01-23 22:13:32 +00:00
|
|
|
|
ratio –25 dB and reaches 50% copy at -26 dB.
|
|
|
|
|
|
|
|
|
|
Each decoding pass can be described as a sequence of discrete blocks.
|
2014-01-24 20:09:47 +00:00
|
|
|
|
The blocks are labeled here with the names of functional procedures in
|
|
|
|
|
the code.
|
2014-01-23 22:13:32 +00:00
|
|
|
|
|
|
|
|
|
sync9: Use sync symbols to find candidate JT9 signals
|
|
|
|
|
in the specified frequency range
|
|
|
|
|
|
|
|
|
|
Then, at the frequency of each plausible candidate:
|
|
|
|
|
|
|
|
|
|
downsam9: Mix, filter and downsample to 16 complex
|
|
|
|
|
samples/symbol
|
|
|
|
|
|
|
|
|
|
peakdt9: Using sync symbols, time-align to start of JT9 symbol
|
|
|
|
|
sequence
|
|
|
|
|
|
|
|
|
|
afc9: Measure frequency offset and any possible drift
|
|
|
|
|
|
|
|
|
|
twkfreq: Remove frequency offset and drift
|
|
|
|
|
|
|
|
|
|
symspec2: Compute 8-bin spectra for 69 information-carrying
|
|
|
|
|
symbols, using the time- and frequency-aligned data;
|
|
|
|
|
transform to yield 206 single-bit soft symbols
|
|
|
|
|
|
|
|
|
|
interleave9: Remove single-bit symbol interleaving imposed at the
|
|
|
|
|
transmitter
|
|
|
|
|
|
|
|
|
|
decode9: Retrieve a 72-bit user message using the sequential
|
|
|
|
|
Fano algorithm for convolutional codes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unpackmsg: Unpack a human-readable message from the 72-bit
|
|
|
|
|
compressed format
|
|
|
|
|
|
|
|
|
|
With marginal or unrecognizable signals the sequential Fano algorithm
|
2014-01-24 20:09:47 +00:00
|
|
|
|
can take exponentially long times. If the +sync9+ step in the above
|
2014-01-23 22:13:32 +00:00
|
|
|
|
sequence finds many seemingly worthy candidate signals, and if many of
|
2014-01-24 20:09:47 +00:00
|
|
|
|
them turn out to be undecodable, the decoding loop can take a very
|
|
|
|
|
long time. For this reason the step labeled +decode9+ is programmed
|
|
|
|
|
to “time out” and report failure if it is taking too long. The
|
|
|
|
|
choices *Fast | Normal | Deepest* on the Decode menu provide a
|
|
|
|
|
three-step adjustment of this timeout limit.
|