WSJT-X/jt9.txt

66 lines
3.4 KiB
Plaintext
Raw Normal View History

JT9 is a mode designed for amateur QSOs and beacon-like transmissions
at MF and LF. The mode uses the same 72-bit user messages as JT65,
augmented by a 12-bit cyclic redundancy check (CRC). Error-control
coding uses a convolutional code with constraint length K=16, rate
r=1/2, and a zero tail, leading to an encoded message length of
(72+12+15)*2 = 198 bits. Modulation is 9-FSK -- 8 tones for data, and
one for a synchronization vector. With 15 symbol intervals used for
synchronization, a transmission requires a total of 198/3 + 15 = 81
channel symbols. Tone spacing df of the 9-FSK modulation is equal to
the keying rate; symbol duration tsym = 1/df, and the total occupied
bandwidth is 9*df. Transmission length is slightly less than the T/R
sequence time, to allow for message decoding at time Tdec, a time
Tfree seconds before the next transmission starts.
Parameters of the five JT9 sub-modes are summarized in the following
table, along with S/N thresholds measured by simulation on an AWGN
(additive white Gaussian noise) channel. Parameter nsps1 is the number
of samples per symbol at sample rate 12000 Hz; nsps is the same
quantity at 750 Hz.
------------------------------------------------------------------------
Mode nsps1 nsps df tsym BW S/N* Tdec Tfree Factors
12000 750 (Hz) (s) (Hz) (dB) (s) (s) of nsps
------------------------------------------------------------------------
JT9-1 7168 448 1.674 0.60 15.1 -26.9 51.9 8.1 2^10 7
JT9-2 16000 1000 0.750 1.33 6.8 -30.2 111.5 8.5 2^7 5^3
JT9-5 42336 2646 0.283 3.53 2.5 -34.4 289.4 10.6 2^5 3^3 7^2
JT9-10 86400 5400 0.139 7.20 1.3 -37.5 586.7 13.3 2^7 3^3 5^2
JT9-30 262144 16384 0.046 21.85 0.4 -42.3 1773.4 26.6 2^18
------------------------------------------------------------------------
* Noise power measured in a 2500 Hz bandwidth.
Transmitting
------------
1. Source encode the structured message to 72 bits
2. Add 12-bit CRC
3. Convolutionally encode (K=16, r=1/2) to (72+12+15)*2 = 198 bits
4. Interleave to scramble the bit order
5. Assemble 3-bit groups to make 198/3 = 66 symbols
6. Apply Gray code to the symbol values
7. Insert 15 sync symbols ==> 66+15=81 channel symbols with values 0-8
Receiving
---------
1. Apply noise blanking with the timf2 method
2. Filter to 500 Hz bandwidth, downsample (1/16) to 750 Hz complex
using FIR filter with 61 taps. Data in array c0(1800*750) (1.35M)
3. Compute symbol-length spectra at half-symbol steps. Use for
waterfalls s(16384) and save in ss(180,16384), savg(16384)
4. At time Tdec, look for sync vectors in ss() to get estimates of DF, DT
5. Do full-length FFTs of length NFFT1=96*nsps
6. For each candidate JT9 signal, do inverse FFT of length 1536. This
gives 16 complex samples per symbol, sync tone should be close to f=0.
7. Use afc65b method to get improved values of DF, DT.
8. Tweak freq and time offset to 0.
9. Compute 8-bin spectra of 66 data symbols: s2(8,66). Re-order the
bins by removing Gray code.
10. Compute soft symbols for 198 bits
11. Re-order the bits by removing interleaving.
12. Pack bits into bytes, send to Viterbi decoder ==> 72-bit message,
12-bit CRC, and metric.
13. Declare erasure if CRC check fails
14. If CRC is good, remove source encoding and display user message.