WSJT-X/doc/user_guide/en/protocols.adoc
Joe Taylor 8a5e21510d MOre edits to User Guide.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7238 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-10-26 16:44:04 +00:00

263 lines
12 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[[PROTOCOL_OVERVIEW]]
=== Overview
All QSO modes except ISCAT use structured messages that compress
user-readable information into fixed-length packets of exactly 72
bits. Each message consists of two 28-bit fields for callsigns and a
15-bit field for a grid locator, report, acknowledgment, or a "`73`"
sign-off indicator. A 72^nd^ bit flags a message containing arbitrary
alphanumeric text, up to 13 characters. Special cases allow other
information such as add-on callsign prefixes (e.g., ZA/K1ABC) or
suffixes (e.g., K1ABC/4) to be encoded. The basic aim is to compress
the most common messages used for minimally valid QSOs into a fixed
72-bit length. To be useful on channels with low signal-to-noise
ratio, this kind of lossless compression requires use of a strong
forward error correcting (FEC) code. Different codes are used for
each mode. Accurate synchronization of time and frequency is required
between transmitting and receiving stations. As an aid to the
decoders, each protocol includes a "`sync vector`" of known symbols
interspersed with the information-carrying symbols. Generated
waveforms for all of the _WSJT-X_ modes have continuous phase and
constant envelope.
[[SLOW_MODES]]
=== Slow Modes
[[JT4PRO]]
==== JT4
FEC in JT4 uses a strong convolutional code with constraint length
K=32, rate r=1/2, and a zero tail. This choice leads to an encoded
message length of (72+31) x 2 = 206 information-carrying bits.
Modulation is 4-tone frequency-shift keying (4-FSK) at 11025 / 2520 =
4.375 baud. Each symbol carries one information bit (the most
significant bit) and one synchronizing bit. The two 32-bit
polynomials used for convolutional encoding have hexadecimal values
0xf2d05351 and 0xe4613c47, and the ordering of encoded bits is
scrambled by an interleaver. The pseudo-random sync vector is the
following sequence (60 bits per line):
000011000110110010100000001100000000000010110110101111101000
100100111110001010001111011001000110101010101111101010110101
011100101101111000011011000111011101110010001101100100011111
10011000011000101101111010
[[JT9PRO]]
==== JT9
FEC in JT9 uses the same strong convolutional code as JT4: 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 nine-tone frequency-shift keying, 9-FSK at
12000.0/6912 = 1.736 baud. Eight tones are used for data, one for
synchronization. Eight data tones means that three data bits are
conveyed by each transmitted information 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. Tone spacing of
the 9-FSK modulation for JT9A is equal to the keying rate, 1.736 Hz.
The total occupied bandwidth is 9 × 1.736 = 15.6 Hz.
[[JT65PRO]]
==== JT65
A detailed description of the JT65 protocol was published in
{jt65protocol} for September-October, 2005. A Reed Solomon (63,12)
error-control code converts 72-bit user messages into sequences of 63
six-bit information-carrying symbols. These are interleaved with
another 63 symbols of synchronizing information according to the
following pseudo-random sequence:
100110001111110101000101100100011100111101101111000110101011001
101010100100000011000000011010010110101010011001001000011111111
The synchronizing tone is normally sent in each interval having a
"`1`" in the sequence. Modulation is 65-FSK at 11025/4096 = 2.692
baud. Frequency spacing between tones is equal to the keying rate for
JT65A, and 2 and 4 times larger for JT65B and JT65C. For EME QSOs the
signal report OOO is sometimes used instead of numerical signal
reports. It is conveyed by reversing sync and data positions in the
transmitted sequence. Shorthand messages for RO, RRR, and 73 dispense
with the sync vector entirely and use time intervals of 16384/11025 =
1.486 s for pairs of alternating tones. The lower frequency is the
same as that of the sync tone used in long messages, and the frequency
separation is 110250/4096 = 26.92 Hz multiplied by n for JT65A, with n
= 2, 3, 4 used to convey the messages RO, RRR, and 73.
[[QRA64_PROTOCOL]]
==== QRA64
Still to come ...
[[SLOW_SUMMARY]]
==== Summary
Table 1 provides a brief summary parameters for the slow modes in
_WSJT-X_. Parameters K and r specify the constraint length and rate
of the convolutional codes; n and k specify the sizes of the
(equivalent) block codes; Q is the alphabet size for the
information-carrying channel symbols; Sync Energy is the fraction of
transmitted energy devoted to synchronizing symbols; and S/N Threshold
is the signal-to-noise ratio (in a 2500 Hz reference bandwidth) above
which the probability of decoding is 50% or higher.
[[SLOW_TAB]]
.Parameters of Slow Modes
[width="90%",cols="3h,^3,^2,^1,^2,^2,^2,^2,^2,^2",frame=topbot,options="header"]
|===============================================================================
|Mode |FEC Type |(n,k) | Q|Modulation type|Keying rate (Baud)|Bandwidth (Hz)
|Sync Energy|Tx Duration (s)|S/N Threshold (dB)
|JT4A |K=32, r=1/2|(206,72)| 2| 4-FSK| 4.375| 17.5 |
0.50| 47.1 | -23 |JT9A |K=32, r=1/2|(206,72)| 8| 9-FSK| 1.736| 15.6 |
0.19| 49.0 | -27 |JT65A |Reed Solomon|(63,12) |64|65-FSK| 2.692| 177.6
| 0.50| 46.8 | -25 |QRA64A|Q-ary Repeat Accumulate|(63,12) |64|64-FSK|
1.736| 111.1 | 0.25| 48.4 | -26 | WSPR |K=32, r=1/2|(162,50)| 2|
4-FSK| 1.465| 5.9 | 0.50|110.6 | -29
|===============================================================================
Submodes of JT4, JT9, JT65, and QRA64 offer wider tone spacings for
circumstances that may require them, such significant Doppler spread.
Table 2 summarizes the tone spacings, bandwidths, and approximate
threshold sensitivities of the various submodes when spreading is
comparable to tone spacing.
[[SLOW_SUBMODES]]
.Parameters of Slow Submodes
[width="50%",cols="h,3*^",frame=topbot,options="header"]
|=====================================
|Mode |Tone Spacing |BW (Hz)|S/N (dB)
|JT4A |4.375| 17.5 |-23
|JT4B |8.75 | 35.0 |-22
|JT4C |17.5 | 70.0 |-21
|JT4D |39.375| 157.5 |-20
|JT4E |78.75| 315.0 |-19
|JT4F |157.5| 630.0 |-18
|JT4G |315.0| 1260.0 |-17
|JT9A |1.736| 15.6 |-27
|JT9B |3.472| 15.6 |-26
|JT9C |6.944| 15.6 |-25
|JT9D |13.889| 15.6 |-24
|JT9E |27.778| 250 |-23
|JT9F |55.556| 500 |-22
|JT9G |111.111| 2000 |-21
|JT9H |222.222| 2000 |-20
|JT65A |2.692| 177.6 |-25
|JT65B |5.383| 355.3 |-25
|JT65C |10.767| 710.6 |-25
|QRA64A|1.736| 111.1 |-26
|QRA64B|3.472| 222.2 |-26
|QRA64C|6.944| 444.4 |-26
|QRA64D|13.889| 888.8 |-26
|QRA64E|27.778|1777.8 |-26
|=====================================
[[FAST_MODES]]
=== Fast Modes
==== ISCAT
ISCAT messages are free-form, up to 28 characters in length.
Modulation is 42-tone frequency-shift keying at 11025 / 512 = 21.533
baud (ISCAT-A), or 11025 / 256 = 43.066 baud (ISCAT-B). Tone
frequencies are spaced by an amount in Hz equal to the baud rate. The
available character set is
----
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ /.?@-
----
Transmissions consist of sequences of 24 symbols: a synchronizing
pattern of four symbols at tone numbers 0, 1, 3, and 2, followed by
two symbols with tone number corresponding to (message length) and
(message length + 5), and finally 18 symbols conveying the user's
message, sent repeatedly character by character. The message always
starts with +@+, the beginning-of-message symbol, which is not
displayed to the user. The sync pattern and message-length indicator
have a fixed repetition period, recurring every 24 symbols. Message
information occurs periodically within the 18 symbol positions set
aside for its use, repeating at its own natural length.
For example, consider the user message +CQ WA9XYZ+. Including the
beginning-of-message symbol +@+, the message is 10 characters long.
Using the character sequence displayed above to indicate tone numbers,
the transmitted message will therefore start out as shown in the first
line below:
----
0132AF@CQ WA9XYZ@CQ WA9X0132AFYZ@CQ WA9XYZ@CQ W0132AFA9X ...
sync## sync## sync##
----
Note that the first six symbols (four for sync, two for message
length) repeat every 24 symbols. Within the 18 information-carrying
symbols in each 24, the user message +@CQ WA9XYZ+ repeats at its own
natural length, 10 characters. The resulting sequence is extended as
many times as will fit into a Tx sequence.
==== JT9
The JT9 slow modes all use keying rate 4.375 baud. By contrast, with
the *Fast* setting submodes JT9E-H adjust the keying rate to match the
increased tone spacings. Message durations are therefore much
shorter, and they are sent repeatedly throughout each Tx sequence.
For details see Table 3, below.
==== MSK144
Standard MSK144 messages are structured in the same way as those in
the slow modes, with a 72 bits of user information. Forward error
correction is implemented by first augmenting the 72 message bits with
an 8-bit CRC calculated from the message bits. The CRC is used to
detect and eliminate most false decodes at the receiver. The resulting
80-bit augmented message is mapped to a 128-bit codeword using a
(128,80) binary low-density-parity-check (LDPC) code designed by K9AN
specifically for this purpose. Two 8-bit synchronizing sequences are
added to make a message frame 144 bits long. Modulation is Offset
Quadrature Phase-Shift Keying (OQPSK) at 2000 baud. Even-numbered bits
are conveyed over the in-phase channel, odd-numbered bits on the
quadrature channel. Individual symbols are shaped with half-sine
profiles, thereby ensuring a generated waveform with constant
envelope, equivalent to a Minimum Shift Keying (MSK) waveform. Frame
duration is 72 ms, so the effective character transmission rate for
standard messages is up to 250 cps.
MSK144 also supports short-form messages that can be used after QSO
partners have exchanged both callsigns. Short messages consist of 4
bits encoding a signal report, R+report, RRR, or 73, together with a
12-bit hash code based on the ordered pair of "`to`" and "`from`"
callsigns. Another specially designed LDPC (32,16) code provides
error correction, and an 8-bit synchronizing vector is appended to
make up a 40-bit frame. Short-message duration is thus 20 ms, and
short messages can be decoded from very short meteor pings.
The 72 ms or 20 ms frames of MSK144 messages are repeated without gaps
for the full duration of a transmission cycle. For most purposes, a
cycle duration of 15 s is suitable and recommended for MSK144.
The modulated MSK144 signal occupies the full bandwidth of a SSB
transmitter, so transmissions are always centered at audio frequency
1500 Hz. For best results, transmitter and receiver filters should be
adjusted to provide the flattest possible response over the range
300Hz to 2700Hz. The maximum permissible frequency offset between you
and your QSO partner ± 200 Hz.
==== Summary
.Parameters of Fast Modes
[width="90%",cols="3h,^3,^2,^1,^2,^2,^2,^2,^2",frame="topbot",options="header"]
|=====================================================================
|Mode |FEC Type |(n,k) | Q|Modulation Type|Keying rate (Baud)
|Bandwidth (Hz)|Sync Energy|Tx Duration (s)
|ISCAT-A | - | - |42|42-FSK| 21.5 | 905 | 0.17| 1.176
|ISCAT-B | - | - |42|42-FSK| 43.1 | 1809 | 0.17| 0.588
|JT9E |K=32, r=1/2|(206,72)| 8| 9-FSK| 25.0 | 225 | 0.19| 3.400
|JT9F |K=32, r=1/2|(206,72)| 8| 9-FSK| 50.0 | 450 | 0.19| 1.700
|JT9G |K=32, r=1/2|(206,72)| 8| 9-FSK|100.0 | 900 | 0.19| 0.850
|JT9H |K=32, r=1/2|(206,72)| 8| 9-FSK|200.0 | 1800 | 0.19| 0.425
|MSK144 |LDPC |(128,72)| 2| OQPSK| 2000 | 2000 | 0.11| 0.072
|MSK144 Sh|LDPC |(32,16) | 2| OQPSK| 2000 | 2000 | 0.20| 0.020
|=====================================================================