mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-07-31 21:22:27 -04:00
------------------------------------------------------------------------ r8060 | k1jt | 2017-09-01 13:51:42 +0100 (Fri, 01 Sep 2017) | 2 lines Add a link to G3WDG doc on using QRA64 for microwave EME. ------------------------------------------------------------------------ r8061 | k1jt | 2017-09-01 17:22:19 +0100 (Fri, 01 Sep 2017) | 1 line Fix a misspelled word. ------------------------------------------------------------------------ r8062 | bsomervi | 2017-09-01 21:10:35 +0100 (Fri, 01 Sep 2017) | 7 lines Rationalize NA contest mode Generic message packing and unpacking routines now understand antipode grid contest messages. These messages are now recognized as standard messages in message response processing and dealt with appropriately when contest mode is selected and applicable (currently FT8 and MSK144 only). ------------------------------------------------------------------------ r8063 | bsomervi | 2017-09-01 21:43:45 +0100 (Fri, 01 Sep 2017) | 1 line Fix issue compiling with Qt older than v5.7 ------------------------------------------------------------------------ r8064 | bsomervi | 2017-09-01 22:29:02 +0100 (Fri, 01 Sep 2017) | 7 lines Fix issues with type 2 compound calls in contest mode Message generation in contest mode now generates the correct Tx3 for type 2 calls. "<type-2> 73" is a free text so needed special handling in message processing. ------------------------------------------------------------------------ r8065 | bsomervi | 2017-09-01 23:22:20 +0100 (Fri, 01 Sep 2017) | 11 lines Improved message generation for type 2 calls in contest mode These attempt to ensure that a prefix is logged by the QSO partner even if the compound call holder user Tx3 to tail-end a QSO. The type 2 message generation options are largely overridden in contest mode as only a few options make sense. Key is that Tx1 may use only the base call when calling split is necessary, this requires that both Tx3 and Tx4 have the full compound call otherwise the QSO partner will never see the full call until it is possibly too late i.e. post logging. ------------------------------------------------------------------------ r8066 | bsomervi | 2017-09-02 00:28:44 +0100 (Sat, 02 Sep 2017) | 5 lines Fix erroneous auto stop critera for auto reply in FT8 We cannot assume that a "DE <dx-call> <anything>" is or is not for us so we must continue calling and risk possible QRM. Calling split avoids this issue. ------------------------------------------------------------------------ git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx-1.8@8067 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
338 lines
16 KiB
Plaintext
338 lines
16 KiB
Plaintext
[[PROTOCOL_OVERVIEW]]
|
||
=== Overview
|
||
|
||
All QSO modes except ISCAT use structured messages that compress
|
||
user-readable information into fixed-length packets of 72 bits. Each
|
||
message consists 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 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/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. Information
|
||
payloads in FT8 include 3 additional bits (75 bits total), with
|
||
definitions yet to be defined.
|
||
|
||
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 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 FT8 and MSK144 modes support a special feature allowing convenient
|
||
transmission and acknowledgment of four-character grid locators, the
|
||
required exchanges in most North American VHF contests. With this
|
||
Contest Mode enabled, _WSJT-X_ supports messages of the form `W9XYZ
|
||
K1ABC R FN42` by converting the grid locator to that of its
|
||
diametrically opposite point on Earth. The receiving program
|
||
recognizes a locator implying a distance greater than 10,000 km, does
|
||
the reverse transformation, and inserts the implied "`R`". Obviously,
|
||
this mode should not be used on the HF bands or under other
|
||
circumstances where world-wide propagation is possible.
|
||
|
||
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
|
||
|
||
[[FT8PRO]]
|
||
==== FT8
|
||
|
||
Forward error correction (FEC) in FT8 uses a low-density parity check
|
||
(LDPC) code with 75 information bits, a 12-bit cyclic redundancy check
|
||
(CRC), and 87 parity bits making a 174-bit codeword. It is thus
|
||
called an LDPC (174,87) code. Synchronization uses 7×7 Costas arrays
|
||
at the beginning, middle, and end of each transmission. Modulation is
|
||
8-tone frequency-shift keying (8-FSK) at 12000/1920 = 6.25 baud. Each
|
||
transmitted symbol carries 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.
|
||
|
||
[[SLOW_SUMMARY]]
|
||
==== Summary
|
||
|
||
Table 2 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)
|
||
|FT8 |LDPC, r=1/2|(174,87)| 8| 8-FSK| 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 | -28
|
||
|===============================================================================
|
||
|
||
Submodes of JT4, JT9, JT65, and QRA64 offer wider tone spacings for
|
||
circumstances that may require them, such significant Doppler spread.
|
||
Table 3 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)
|
||
|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 4, below.
|
||
|
||
==== MSK144
|
||
|
||
Standard MSK144 messages are structured in the same way as those in
|
||
the slow modes, with 72 bits of user information. Forward error
|
||
correction is implemented by first augmenting the 72 message bits with
|
||
an 8-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 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 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,80)| 2| OQPSK| 2000 | 2400 | 0.11| 0.072
|
||
|MSK144 Sh|LDPC |(32,16) | 2| OQPSK| 2000 | 2400 | 0.20| 0.020
|
||
|=====================================================================
|