mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 13:48:42 -05:00
396 lines
19 KiB
Plaintext
396 lines
19 KiB
Plaintext
[[PROTOCOL_OVERVIEW]]
|
||
=== Overview
|
||
|
||
All QSO modes except ISCAT use structured messages that compress
|
||
user-readable information into fixed-length packets. JT4, JT9, JT65,
|
||
and QRA64 use 72-bit payloads. Standard messages consist of two
|
||
28-bit fields normally used for callsigns and a 15-bit field for a
|
||
grid locator, report, acknowledgment, or 73. An additional bit flags
|
||
a message containing arbitrary free 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/P) to be encoded. The basic
|
||
aim is to compress the most common messages used for minimally valid
|
||
QSOs into a fixed 72-bit length.
|
||
|
||
The information payload for FT4, FT8, and MSK144 contains 77 bits.
|
||
The 5 new bits added to the original 72 are used to flag special
|
||
message types signifying special message types used for FT8 DXpedition
|
||
Mode, contesting, nonstandard callsigns, and a few other
|
||
possibilities.
|
||
|
||
A standard amateur callsign consists of a one- or two-character
|
||
prefix, at least one of which must be a letter, followed by a digit
|
||
and a suffix of one to three letters. Within these rules, the number
|
||
of possible callsigns is equal to 37×36×10×27×27×27, or somewhat over
|
||
262 million. (The numbers 27 and 37 arise because in the first and
|
||
last three positions a character may be absent, or a letter, or
|
||
perhaps a digit.) Since 2^28^ is more than 268 million, 28 bits are
|
||
enough to encode any standard callsign uniquely. Similarly, the number
|
||
of 4-digit Maidenhead grid locators on earth is 180×180 = 32,400,
|
||
which is less than 2^15^ = 32,768; so a grid locator requires 15 bits.
|
||
|
||
Some 6 million of the possible 28-bit values are not needed for
|
||
callsigns. A few of these slots have been assigned to special message
|
||
components such as `CQ`, `DE`, and `QRZ`. `CQ` may be followed by three
|
||
digits to indicate a desired callback frequency. (If K1ABC transmits
|
||
on a standard calling frequency, say 50.280, and sends `CQ 290 K1ABC
|
||
FN42`, it means that s/he will listen on 50.290 and respond there to
|
||
any replies.) A numerical signal report of the form `–nn` or
|
||
`R–nn` can be sent in place of a grid locator. (As originally
|
||
defined, numerical signal reports `nn` were required to fall between -01
|
||
and -30 dB. Recent program versions accommodate reports between
|
||
-50 and +49 dB.) A country prefix or portable suffix may be
|
||
attached to one of the callsigns. When this feature is used the
|
||
additional information is sent in place of the grid locator or by
|
||
encoding additional information into some of the 6 million available
|
||
slots mentioned above.
|
||
|
||
As a convenience for sending directed CQ messages, the 72-bit
|
||
compression algorithm supports messages starting with `CQ AA` through
|
||
`CQ ZZ`. These message fragments are encoded internally as if they
|
||
were the callsigns `E9AA` through `E9ZZ`. Upon reception they are
|
||
converted back to the form `CQ AA` through `CQ ZZ`, for display to the
|
||
user.
|
||
|
||
The new FT4, FT8, and MSK144 protocols use a different lossless
|
||
compression algorithm with features to generate and recognize the
|
||
special messages used for contesting and the like. (More to come,
|
||
here ...)
|
||
|
||
To be useful on channels with low signal-to-noise ratio, this kind of
|
||
lossless message 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
|
||
|
||
[[FT4PRO]]
|
||
==== FT4
|
||
|
||
Forward error correction (FEC) in FT4 uses a low-density parity check
|
||
(LDPC) code with 77 information bits, a 14-bit cyclic redundancy check
|
||
(CRC), and 83 parity bits making a 174-bit codeword. It is thus
|
||
called an LDPC (174,91) code. Synchronization uses four 4×4 Costas
|
||
arrays, and ramp-up and ramp-down symbols are inserted at the start
|
||
and end of each transmission. Modulation is 4-tone frequency-shift
|
||
keying (4-GFSK) with Gaussian smoothing of frequency transitions. The
|
||
keying rate is 12000/576 = 20.8333 baud. Each transmitted symbol
|
||
conveys two bits, so the total number of channel symbols is 174/2 + 16
|
||
+ 2 = 105. The total bandwidth is 4 × 20.8333 = 83.3 Hz.
|
||
|
||
[[FT8PRO]]
|
||
==== FT8
|
||
|
||
FT8 uses the same LDPC (174,91) code as FT4. Modulation is 8-tone
|
||
frequency-shift keying (8-GFSK) at 12000/1920 = 6.25 baud.
|
||
Synchronization uses 7×7 Costas arrays at the beginning, middle, and
|
||
end of each transmission. Transmitted symbols carry three bits, so
|
||
the total number of channel symbols is 174/3 + 21 = 79. The total
|
||
occupied bandwidth is 8 × 6.25 = 50 Hz.
|
||
|
||
[[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
|
||
|
||
QRA64 is intended for EME and other extreme weak-signal applications.
|
||
Its internal code was designed by IV3NWV. The protocol uses a (63,12)
|
||
**Q**-ary **R**epeat **A**ccumulate code that is inherently better
|
||
than the Reed Solomon (63,12) code used in JT65, yielding a 1.3 dB
|
||
advantage. A new synchronizing scheme is based on three 7 x 7 Costas
|
||
arrays. This change yields another 1.9 dB advantage.
|
||
|
||
In most respects the current implementation of QRA64 is operationally
|
||
similar to JT65. QRA64 does not use two-tone shorthand messages, and
|
||
it makes no use of a callsign database. Rather, additional
|
||
sensitivity is gained by making use of already known information as a
|
||
QSO progresses -- for example, when reports are being exchanged and
|
||
you have already decoded both callsigns in a previous transmission.
|
||
QRA64 presently offers no message averaging capability, though that
|
||
feature may be added. In early tests, many EME QSOs were made using
|
||
submodes QRA64A-E on bands from 144 MHz to 24 GHz.
|
||
|
||
[[WSPR_PROTOCOL]]
|
||
==== WSPR
|
||
|
||
WSPR is designed for probing potential radio propagation paths using
|
||
low power beacon-like transmissions. WSPR signals convey a callsign,
|
||
Maidenhead grid locator, and power level using a compressed data
|
||
format with strong forward error correction and narrow-band 4-FSK
|
||
modulation. The protocol is effective at signal-to-noise ratios as low
|
||
as –31 dB in a 2500 Hz bandwidth.
|
||
|
||
WSPR messages can have one of three possible formats illustrated by
|
||
the following examples:
|
||
|
||
- Type 1: K1ABC FN42 37
|
||
- Type 2: PJ4/K1ABC 37
|
||
- Type 3: <PJ4/K1ABC> FK52UD 37
|
||
|
||
Type 1 messages contain a standard callsign, a 4-character Maidenhead
|
||
grid locator, and power level in dBm. Type 2 messages omit the grid
|
||
locator but include a compound callsign, while type 3 messages replace
|
||
the callsign with a 15-bit hash code and include a 6-character locator
|
||
as well as the power level. Lossless compression techniques squeeze
|
||
all three message types into exactly 50 bits of user
|
||
information. Standard callsigns require 28 bits and 4-character grid
|
||
locators 15 bits. In Type 1 messages, the remaining 7 bits convey the
|
||
power level. In message types 2 and 3 these 7 bits convey power level
|
||
along with an extension or re-definition of fields normally used for
|
||
callsign and locator. Together, these compression techniques amount to
|
||
“source encoding” the user message into the smallest possible number
|
||
of bits.
|
||
|
||
WSPR uses a convolutional code with constraint length K=32 and rate
|
||
r=1/2. Convolution extends the 50 user bits into a total of (50 + K –
|
||
1) × 2 = 162 one-bit symbols. Interleaving is applied to scramble the
|
||
order of these symbols, thereby minimizing the effect of short bursts
|
||
of errors in reception that might be caused by fading or interference.
|
||
The data symbols are combined with an equal number of synchronizing
|
||
symbols, a pseudo-random pattern of 0’s and 1’s. The 2-bit
|
||
combination for each symbol is the quantity that determines which of
|
||
four possible tones to transmit in any particular symbol
|
||
interval. Data information is taken as the most significant bit, sync
|
||
information the least significant. Thus, on a 0 – 3 scale, the tone
|
||
for a given symbol is twice the value (0 or 1) of the data bit, plus
|
||
the sync bit.
|
||
|
||
[[SLOW_SUMMARY]]
|
||
==== Summary
|
||
|
||
Table 7 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)
|
||
|FT4 |LDPC, r=1/2|(174,91)| 4| 4-GFSK| 20.8333 | 83.3 | 0.15| 5.04 | -17.5
|
||
|FT8 |LDPC, r=1/2|(174,91)| 8| 8-GFSK| 6.25 | 50.0 | 0.27| 12.6 | -21
|
||
|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 | -31
|
||
|===============================================================================
|
||
|
||
Submodes of JT4, JT9, JT65, and QRA64 offer wider tone spacings for
|
||
circumstances that may require them, such as significant Doppler spread.
|
||
Table 8 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)
|
||
|FT4 |20.8333 | 83.3 |-17.5
|
||
|FT8 |6.25 | 50.0 |-21
|
||
|JT4A |4.375| 17.5 |-23
|
||
|JT4B |8.75 | 30.6 |-22
|
||
|JT4C |17.5 | 56.9 |-21
|
||
|JT4D |39.375| 122.5 |-20
|
||
|JT4E |78.75| 240.6 |-19
|
||
|JT4F |157.5| 476.9 |-18
|
||
|JT4G |315.0| 949.4 |-17
|
||
|JT9A |1.736| 15.6 |-27
|
||
|JT9B |3.472| 29.5 |-26
|
||
|JT9C |6.944| 57.3 |-25
|
||
|JT9D |13.889| 112.8 |-24
|
||
|JT9E |27.778| 224.0 |-23
|
||
|JT9F |55.556| 446.2 |-22
|
||
|JT9G |111.111|890.6 |-21
|
||
|JT9H |222.222|1779.5|-20
|
||
|JT65A |2.692| 177.6 |-25
|
||
|JT65B |5.383| 352.6 |-25
|
||
|JT65C |10.767| 702.5 |-25
|
||
|QRA64A|1.736| 111.1 |-26
|
||
|QRA64B|3.472| 220.5 |-25
|
||
|QRA64C|6.944| 439.2 |-24
|
||
|QRA64D|13.889| 876.7 |-23
|
||
|QRA64E|27.778|1751.7 |-22
|
||
|=====================================
|
||
|
||
[[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 12000/6912 = 1.736 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 9, below.
|
||
|
||
==== MSK144
|
||
|
||
Standard MSK144 messages are structured in the same way as in FT8,
|
||
with 77 bits of user information. Forward error correction is
|
||
implemented by first augmenting the 77 message bits with a 13-bit
|
||
cyclic redundancy check (CRC) calculated from the message bits. The
|
||
CRC is used to detect and eliminate most false decodes at the
|
||
receiver. The resulting 90-bit augmented message is mapped to a
|
||
128-bit codeword using a (128,90) 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 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,90)| 2| OQPSK| 2000 | 2400 | 0.11| 0.072
|
||
|MSK144 Sh|LDPC |(32,16) | 2| OQPSK| 2000 | 2400 | 0.20| 0.020
|
||
|=====================================================================
|