WSJT-X/lib/ftrsd/ftrsd_paper/ftrsd.lyx

3290 lines
72 KiB
Plaintext

#LyX 2.1 created this file. For more info see http://www.lyx.org/
\lyxformat 474
\begin_document
\begin_header
\textclass paper
\begin_preamble
\usepackage{ragged2e}
\exhyphenpenalty=10000\hyphenpenalty=10000
\fancyhf{}
\fancyhead[L]{Franke \& Taylor: {\it Open Source Soft-Decision Decoder \ldots}}
\fancyhead[R]{\thepage}
\makeatletter
\let\ps@plain\ps@fancy % Plain page style = fancy page style
\makeatother
\usepackage{nomencl}
\usepackage{overcite}
\renewcommand{\nomname}{Sidebar: Glossary of Specialized Terms}
\end_preamble
\use_default_options true
\begin_modules
boxedfloat
\end_modules
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding auto
\fontencoding global
\font_roman lmodern
\font_sans lmss
\font_typewriter lmtt
\font_math auto
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\float_placement H
\paperfontsize 12
\spacing onehalf
\use_hyperref false
\papersize default
\use_geometry true
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification false
\use_refstyle 1
\index Index
\shortcut idx
\color #008000
\end_index
\leftmargin 1in
\topmargin 1in
\rightmargin 1in
\bottommargin 1in
\secnumdepth 3
\tocdepth 3
\paragraph_separation skip
\defskip bigskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle fancy
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Title
Open Source Soft-Decision Decoder for the JT65 (63,12) Reed-Solomon Code
\end_layout
\begin_layout SubTitle
\emph on
Under-the-hood description of the JT65 decoding procedure, including a wholly
new algorithm for its powerful error-correcting code.
\end_layout
\begin_layout Author
Steven J.
Franke, K9AN and Joseph H.
Taylor, K1JT
\end_layout
\begin_layout Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Introduction-and-Motivation"
\end_inset
Background and Motivation
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
RaggedRight
\end_layout
\end_inset
The JT65 protocol has revolutionized amateur-radio weak-signal communication
by enabling operators with small or compromise antennas and relatively
low-power transmitters to communicate over propagation paths not usable
with traditional technologies.
The protocol was developed in 2003 for Earth-Moon-Earth (EME, or
\begin_inset Quotes eld
\end_inset
moonbounce
\begin_inset Quotes erd
\end_inset
) communication
\begin_inset CommandInset citation
LatexCommand cite
key "jt65_protocol"
\end_inset
, where the scattered return signals are always weak.
It was soon found that JT65 also enables worldwide communication on the
HF bands with low power, modest antennas, and efficient spectral usage.
Thousands of amateurs now use JT65 on a regular basis, making contacts
on all bands from 160 meters through microwaves.
\end_layout
\begin_layout Standard
JT65 uses timed transmitting and receiving sequences one minute long.
Messages are short and structured so as to streamline minimal exchanges
between two amateur operators over potentially difficult radio paths.
Most messages contain two callsigns and a grid locator, signal report,
acknowledgment, or sign-off; one of the tokens CQ, QRZ, or DE may be substitute
d for the first callsign.
Alternatively, a message may contain up to 13 Latin characters of arbitrary
text.
All messages are efficiently compressed into exactly 72 bits of digital
information.
It should be obvious that the JT65 protocol is intended for the basic purpose
of completing legitimate, documented two-way contacts, but not for extended
conversations.
Full details of the message structure and encoding procedure were presented
in an earlier publication
\begin_inset CommandInset citation
LatexCommand cite
key "jt65_protocol"
\end_inset
.
For a concise description of the overall process of transmitting and receiving
a JT65 message, see the accompanying sidebar
\series bold
JT65 Message Processing
\series default
.
\end_layout
\begin_layout Standard
A major reason for the success and popularity of JT65 is its use of a strong
error-correction code.
Before transmission, each 72-bit message is divided into 12 six-bit
\emph on
symbols
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Symbol: }"
description "The information carried in one signalling interval, usually an integral number of bits. JT65 uses 6-bit symbols."
\end_inset
\emph default
and augmented with 51 additional symbols of error-correcting information.
These 51
\emph on
parity symbols
\emph default
are computed according to information-theory rules that maximize the probabilit
y of correctly decoding the message, even if many symbols are received incorrect
ly.
The JT65 code is properly described as a short block-length, low-rate Reed-Solo
mon code based on a 64-symbol
\emph on
alphabet.
\emph default
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Alphabet: }"
description "A sequence of possible symbol values used for signaling. JT65 uses a 64-character alphabet, values in the range 0 to 63."
\end_inset
Characters in this alphabet are mapped onto 64 different frequencies for
transmission.
\end_layout
\begin_layout Standard
Reed Solomon codes are widely used to ensure reliability in data transmission
and storage.
In hardware implementations, decoding is generally accomplished with a
procedure such as the Berlekamp-Massey (BM) algorithm, based on
\emph on
hard decisions
\emph default
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Hard decision: }"
description "Received symbols are assigned definite values by the demodulator."
\end_inset
for each of the symbol values received.
\emph on
Soft decisions
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Soft decision: }"
description "Received symbols are assigned tentative values (most probable, second most probable, etc.) and quality indicators."
\end_inset
\emph default
are potentially more powerful, however.
For each received JT65 symbol we can estimate not only the value most likely
to be correct, but also the second, third, etc., most likely.
Most importantly, we can also estimate the probability that each of those
possible values is the correct one.
Decoders that make use of such information are called
\emph on
soft-decision decoders.
\end_layout
\begin_layout Standard
Until now, nearly all programs implementing JT65 have used the patented
Kötter-Vardy (KV) algebraic soft-decision decoder
\begin_inset CommandInset citation
LatexCommand cite
key "kv2001"
\end_inset
, licensed to and implemented by K1JT as a closed-source executable for
use only in amateur radio applications.
Since 2001 the KV decoder has been considered the best available soft-decision
decoder for Reed Solomon codes.
\end_layout
\begin_layout Standard
We describe here a new open-source alternative called the Franke-Taylor
(FT, or K9AN-K1JT) soft-decision decoding algorithm.
It is conceptually simple, built on top of the BM hard-decision decoder,
and in this application it performs even better than the KV decoder.
The FT algorithm is implemented in the popular programs
\emph on
WSJT
\emph default
,
\emph on
MAP65
\emph default
, and
\emph on
WSJT-X
\emph default
, widely used for amateur weak-signal communication using JT65 and other
specialized digital protocols.
These programs are open-source, freely available
\begin_inset CommandInset citation
LatexCommand cite
key "wsjt"
\end_inset
, and licensed under the GNU General Public License.
\end_layout
\begin_layout Standard
The JT65 protocol specifies transmissions that start one second into a UTC
minute and last for 46.8 seconds.
Receiving software therefore has as much as ten seconds to decode a message
before the start of the next minute, when the operator will send a reply.
With today's personal computers, this relatively long time encourages experimen
tation with decoders of high computational complexity.
With time to spare, the FT algorithm lowers the decoding threshold on a
typical fading channel by many dB over the hard-decision BM decoder, and
by a meaningful amount over the KV decoder.
In addition to its excellent performance, the new algorithm has other desirable
properties, not least of which is its conceptual simplicity.
Decoding performance and computational complexity scale in a convenient
way, providing steadily increasing soft-decision decoding gain as a tunable
parameter is increased over more than five orders of magnitude.
Appreciable gain is available from our decoder even on very simple (and
relatively slow) computers.
On the other hand, because the algorithm benefits from a large number of
independent decoding trials, further performance gains should be achievable
through parallelization on high-performance computers.
\end_layout
\begin_layout Standard
The remainder of this paper is organized as follows.
Section 2 presents a brief overview of the nature of Reed Solomon codes
and their error-correcting capabilities.
Section 3 provides statistical motivation for the FT algorithm, and Section
4 describes the algorithm in full detail.
Material in these two sections is important because it documents our approach
and underlines its fundamental technical contributions.
These sections are heavier in formal mathematics than common in
\emph on
QEX
\emph default
; for this reason, some readers may choose to skip or skim them and proceed
more quickly to the results.
Most readers will benefit by reviewing the original paper on the JT65 protocol
\begin_inset CommandInset citation
LatexCommand cite
key "jt65_protocol"
\end_inset
.
A procedure for
\emph on
hinted decoding
\emph default
--- determining which one, if any, of a list of likely messages matches
the one that was received --- is outlined in Section 5.
Finally, in Section 6 we present performance measurements of the FT and
hinted decoding algorithms and make explicit comparisons to the BM and
KV decoders familiar to users of older versions of
\emph on
WSJT
\emph default
,
\emph on
MAP65
\emph default
and
\emph on
WSJT-X
\emph default
.
Section 7 summarizes some on-the-air experiences with the new decoder.
Refer to the sidebar
\series bold
Glossary of Specialized Terms
\series default
for brief definitions of some potentially unfamiliar language.
\end_layout
\begin_layout Section
\begin_inset CommandInset label
LatexCommand label
name "sec:JT65-messages-and"
\end_inset
JT65 Messages and Reed Solomon Codes
\end_layout
\begin_layout Standard
The JT65 message frame consists of a short, compressed 72-bit message encoded
for transmission with a Reed-Solomon code.
Reed-Solomon codes are
\emph on
block codes
\emph default
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Block code: }"
description "An error-correcting code that treats data in blocks of fixed size."
\end_inset
characterized by
\begin_inset Formula $n$
\end_inset
, the length of their
\emph on
codewords
\emph default
;
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Codeword:}"
description "For the JT65 code, a vector of 63 symbol values each in the range 0 to 63."
\end_inset
\begin_inset Formula $k$
\end_inset
, the number of message symbols conveyed by the codeword; and the transmission
alphabet, or number of possible values for each symbol in a codeword.
The codeword length and the number of message symbols are specified with
the notation
\begin_inset Formula $(n,k)$
\end_inset
.
JT65 uses a (63,12) Reed-Solomon code with an alphabet of 64 possible values
for each symbol.
Each of the 12 message symbols represents
\begin_inset Formula $\log_{2}64=6$
\end_inset
message bits.
The source-encoded
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Source encoding: }"
description "Compression of a message to use a minimum number or bits. JT65 source-encodes all messages to 72 bits."
\end_inset
message conveyed by a 63-symbol JT65 frame thus consists of 72 information
bits.
The JT65 code is
\emph on
systematic
\emph default
, which means that the 12 message symbols are embedded in the codeword without
modification and another 51 parity symbols derived from the message symbols
are added to form a codeword of 63 symbols.
\end_layout
\begin_layout Standard
In coding theory the concept of
\emph on
Hamming distance
\emph default
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Hamming distance: }"
description "The Hamming distance between two codewords, or between a received word and a codeword, is equal to the number of symbol positions in which they differ."
\end_inset
is used as a measure of disagreement between different codewords, or between
a received word
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Received word: }"
description "A vector of symbol values, possibly accompanied by soft information on individual reliabilities."
\end_inset
and a codeword.
Hamming distance is the number of code symbols that differ in two words
being compared.
Reed-Solomon codes have guaranteed minimum Hamming distance
\begin_inset Formula $d$
\end_inset
, where
\begin_inset Formula
\begin{equation}
d=n-k+1.\label{eq:minimum_distance}
\end{equation}
\end_inset
With
\begin_inset Formula $n=63$
\end_inset
and
\begin_inset Formula $k=12$
\end_inset
the minimum Hamming distance of the JT65 code is
\begin_inset Formula $d=52$
\end_inset
.
With 72 information bits in each message, JT65 can transmit any one of
\begin_inset Formula $2^{72}\approx4.7\times10^{21}$
\end_inset
possible messages.
The codeword for any message differs from every other codeword in at least
52 of the 63 symbol positions.
\end_layout
\begin_layout Standard
A received word containing some
\emph on
errors
\emph default
(incorrect symbols) can be decoded into the correct codeword using a determinis
tic,
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Deterministic algorithm: }"
description "A series of computational steps that for the same input always produces the same output."
\end_inset
algebraic algorithm provided that no more than
\begin_inset Formula $t$
\end_inset
symbols were received incorrectly, where
\begin_inset Formula
\begin{equation}
t=\left\lfloor \frac{n-k}{2}\right\rfloor .\label{eq:t}
\end{equation}
\end_inset
For the JT65 code
\begin_inset Formula $t=25$
\end_inset
, so it is always possible to decode a received word having 25 or fewer
symbol errors.
Any one of several well-known algebraic algorithms, such as the BM algorithm,
can carry out this hard-decision decoding.
Two steps are necessarily involved in this process.
We must (1) determine which symbols were received incorrectly, and (2)
find the correct value of the incorrect symbols.
If we somehow know that certain symbols are incorrect, that information
can be used to reduce the work involved in step 1 and allow step 2 to correct
more than
\begin_inset Formula $t$
\end_inset
errors.
In the unlikely event that the location of every error is known, and if
no correct symbols are accidentally labeled as errors, the BM algorithm
can correct up to
\begin_inset Formula $d-1=n-k$
\end_inset
errors.
\end_layout
\begin_layout Standard
The FT algorithm creates lists of symbols suspected of being incorrect and
sends them to the BM decoder.
Symbols flagged in this way are called
\emph on
erasures
\emph default
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Erasure: }"
description "A received symbol may be ``erased'' when confidence in its value is so low that it is unlikely to provide useful information. "
\end_inset
.
With perfect erasure information up to
\begin_inset Formula $n-k=51$
\end_inset
incorrect symbols can be corrected for the JT65 code.
Imperfect erasure information means that some erased symbols may be correct,
and some other symbols in error.
If
\begin_inset Formula $s$
\end_inset
symbols are erased and the remaining
\begin_inset Formula $n-s$
\end_inset
symbols contain
\begin_inset Formula $e$
\end_inset
errors, the BM algorithm can find the correct codeword as long as
\begin_inset Formula
\begin{equation}
s+2e\le d-1.\label{eq:erasures_and_errors}
\end{equation}
\end_inset
If
\begin_inset Formula $s=0$
\end_inset
, the decoder is said to be an
\emph on
errors-only
\emph default
decoder.
If
\begin_inset Formula $0<s\le d-1$
\end_inset
, the decoder is called an
\emph on
errors-and-erasures
\emph default
decoder.
The possibility of doing errors-and-erasures decoding lies at the heart
of the FT algorithm.
On that foundation we have built a capability for using soft information
on the reliability of individual symbol values, thereby producing a soft-decisi
on decoder.
\end_layout
\begin_layout Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Statistical Framework"
\end_inset
Statistical Framework
\end_layout
\begin_layout Standard
The FT algorithm uses the estimated quality of received symbols to generate
lists of symbols considered likely to be in error, thus enabling decoding
of received words with more than 25 errors.
Algorithms of this type are generally called
\emph on
reliability-based
\emph default
or
\emph on
probabilistic
\emph default
decoding methods
\begin_inset CommandInset citation
LatexCommand cite
key "lc2004"
\end_inset
.
Such algorithms involve some amount of educating guessing about which received
symbols are in error or, alternatively, about which received symbols are
correct.
The guesses are informed by quality metrics associated with the received
symbols.
To illustrate why it is absolutely essential to use such soft-symbol informatio
n in these algorithms it helps to consider what would happen if we tried
to use completely random guesses, ignoring any available soft-symbol informatio
n.
\end_layout
\begin_layout Standard
As a specific example, consider a received JT65 word with 23 correct symbols
and 40 errors.
We do not know which symbols are in error.
Suppose that the decoder randomly selects
\begin_inset Formula $s=40$
\end_inset
symbols for erasure, leaving 23 unerased symbols.
According to Eq.
(
\begin_inset CommandInset ref
LatexCommand ref
reference "eq:erasures_and_errors"
\end_inset
), the BM decoder can successfully decode this word as long as
\begin_inset Formula $e$
\end_inset
, the number of errors present in the 23 unerased symbols, is 5 or less.
The number of errors captured in the set of 40 erased symbols must therefore
be at least 35.
\end_layout
\begin_layout Standard
The probability of selecting some particular number of incorrect symbols
in a randomly selected subset of received symbols is governed by the hypergeome
tric probability distribution.
Let us define
\begin_inset Formula $N$
\end_inset
as the number of symbols from which erasures will be selected,
\begin_inset Formula $X$
\end_inset
as the number of incorrect symbols in the set of
\begin_inset Formula $N$
\end_inset
symbols, and
\begin_inset Formula $x$
\end_inset
as the number of errors in the symbols actually erased.
In an ensemble of many received words
\begin_inset Formula $X$
\end_inset
and
\begin_inset Formula $x$
\end_inset
will be random variables, but for this example we will assume that
\begin_inset Formula $X$
\end_inset
is known and that only
\begin_inset Formula $x$
\end_inset
is random.
The conditional probability mass function for
\begin_inset Formula $x$
\end_inset
with stated values of
\begin_inset Formula $N$
\end_inset
,
\begin_inset Formula $X$
\end_inset
, and
\begin_inset Formula $s$
\end_inset
may be written as
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
P(x=\epsilon|N,X,s)=\frac{\binom{X}{\epsilon}\binom{N-X}{s-\epsilon}}{\binom{N}{s}}\label{eq:hypergeometric_pdf}
\end{equation}
\end_inset
where
\begin_inset Formula $\binom{n}{k}=\frac{n!}{k!(n-k)!}$
\end_inset
is the binomial coefficient.
The binomial coefficient can be calculated using the function
\family typewriter
nchoosek(n,k)
\family default
in the numerical computing language
\emph on
GNU Octave
\emph default
, or with one of many free online calculators.
The hypergeometric probability mass function defined in Eq.
(
\begin_inset CommandInset ref
LatexCommand ref
reference "eq:hypergeometric_pdf"
\end_inset
) is available in
\emph on
GNU Octave
\emph default
as function
\family typewriter
hygepdf(x,N,X,s)
\family default
.
The cumulative probability that at least
\begin_inset Formula $\epsilon$
\end_inset
errors are captured in a subset of
\begin_inset Formula $s$
\end_inset
erased symbols selected from a group of
\begin_inset Formula $N$
\end_inset
symbols containing
\begin_inset Formula $X$
\end_inset
errors is
\begin_inset Formula
\begin{equation}
P(x\ge\epsilon|N,X,s)=\sum_{j=\epsilon}^{s}P(x=j|N,X,s).\label{eq:cumulative_prob}
\end{equation}
\end_inset
\end_layout
\begin_layout Paragraph
Example 1:
\end_layout
\begin_layout Standard
Suppose a received word contains
\begin_inset Formula $X=40$
\end_inset
incorrect symbols.
In an attempt to decode using an errors-and-erasures decoder,
\begin_inset Formula $s=40$
\end_inset
symbols are randomly selected for erasure from the full set of
\begin_inset Formula $N=n=63$
\end_inset
symbols.
The probability that
\begin_inset Formula $x=35$
\end_inset
of the erased symbols are actually incorrect is then
\begin_inset Formula
\[
P(x=35)=\frac{\binom{40}{35}\binom{63-40}{40-35}}{\binom{63}{40}}\simeq2.4\times10^{-7}.
\]
\end_inset
Similarly, the probability that
\begin_inset Formula $x=36$
\end_inset
of the erased symbols are incorrect is
\begin_inset Formula
\[
P(x=36)\simeq8.6\times10^{-9}.
\]
\end_inset
Since the probability of erasing 36 errors is so much smaller than that
for erasing 35 errors, we may safely conclude that the probability of randomly
choosing an erasure vector that can decode the received word is approximately
\begin_inset Formula $P(x=35)\simeq2.4\times10^{-7}$
\end_inset
.
The odds of producing a valid codeword on the first try are very poor,
about 1 in 4 million.
\end_layout
\begin_layout Paragraph
Example 2:
\end_layout
\begin_layout Standard
How might we best choose the number of symbols to erase, in order to maximize
the probability of successful decoding? By exhaustive search over all possible
values up to
\begin_inset Formula $s=51$
\end_inset
, it turns out that for
\begin_inset Formula $X=40$
\end_inset
the best strategy is to erase
\begin_inset Formula $s=45$
\end_inset
symbols.
According to equation
\begin_inset CommandInset ref
LatexCommand ref
reference "eq:erasures_and_errors"
\end_inset
, with
\begin_inset Formula $s=45$
\end_inset
and
\begin_inset Formula $d=52$
\end_inset
then
\begin_inset Formula $e$
\end_inset
must be 3 or less.
Decoding will be assured if the set of erased symbols contains at least
\begin_inset Formula $40-3=37$
\end_inset
errors.
With
\begin_inset Formula $N=63$
\end_inset
,
\begin_inset Formula $X=40$
\end_inset
, and
\begin_inset Formula $s=45$
\end_inset
, the probability of successful decode in a single try is
\begin_inset Formula
\[
P(x\ge37)\simeq1.9\times10^{-6}.
\]
\end_inset
This probability is about 8 times higher than the probability of success
when only 40 symbols were erased.
Nevertheless, the odds of successfully decoding on the first try are still
only about 1 in 500,000.
\end_layout
\begin_layout Paragraph
Example 3:
\end_layout
\begin_layout Standard
Examples 1 and 2 show that a random strategy for selecting symbols to erase
is unlikely to be successful unless we are prepared to wait a long time
for an answer.
So let's modify the strategy to tip the odds in our favor.
Let the received word contain
\begin_inset Formula $X=40$
\end_inset
incorrect symbols, as before, but suppose we know that 10 received symbols
are significantly more reliable than the other 53.
We might therefore protect the 10 most reliable symbols and select erasures
from the smaller set of
\begin_inset Formula $N=53$
\end_inset
less reliable ones.
If
\begin_inset Formula $s=45$
\end_inset
symbols are chosen randomly for erasure in this way, it is still necessary
for the erased symbols to include at least 37 errors, as in Example 2.
However, the probabilities are now much more favorable: with
\begin_inset Formula $N=53$
\end_inset
,
\begin_inset Formula $X=40$
\end_inset
, and
\begin_inset Formula $s=45$
\end_inset
, Eq.
(
\begin_inset CommandInset ref
LatexCommand ref
reference "eq:cumulative_prob"
\end_inset
) yields
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
linebreak
\end_layout
\end_inset
\begin_inset Formula $\mbox{\ensuremath{P(x\geq37)=0.016.}}$
\end_inset
Even better odds are obtained by choosing
\begin_inset Formula $s=47$
\end_inset
, which requires
\begin_inset Formula $x\ge38$
\end_inset
.
With
\begin_inset Formula $N=53$
\end_inset
,
\begin_inset Formula $X=40$
\end_inset
, and
\begin_inset Formula $s=47$
\end_inset
,
\begin_inset Formula $P(x\ge38)=0.027$
\end_inset
.
The odds for producing a codeword on the first try are now about 1 in 38.
A few hundred independently randomized tries would be enough to all-but-guarant
ee production of a valid codeword by the BM decoder.
\end_layout
\begin_layout Section
\begin_inset CommandInset label
LatexCommand label
name "sec:The-decoding-algorithm"
\end_inset
The Franke-Taylor Decoding Algorithm
\end_layout
\begin_layout Standard
Example 3 shows how statistical information about symbol quality should
make it possible to decode received frames having a large number of errors.
In practice the number of errors in the received word is unknown, so our
algorithm simply assigns a high erasure probability to low-quality symbols
and relatively low probability to high-quality symbols.
As illustrated by Example 3, a good choice of erasure probabilities can
increase the chance of producing a codeword by many orders of magnitude.
Once erasure probabilities have been assigned to each of the 63 received
symbols, the FT algorithm uses a random number generator to decide whether
or not to erase each symbol, according to its assigned erasure probability.
The list of erased symbols is then submitted to the BM decoder, which produces
either a codeword or a flag indicating failure to decode.
\end_layout
\begin_layout Standard
The process of selecting the list of symbols to erase and calling the BM
decoder comprises one cycle of the FT algorithm.
The next cycle proceeds with a new selection of erased symbols.
At this stage we must treat any codeword obtained by errors-and-erasures
decoding as no more than a
\emph on
candidate
\emph default
.
Our next task is to find a metric that can reliably select one of many
proffered candidates as the codeword that was actually transmitted.
\end_layout
\begin_layout Standard
The FT algorithm uses quality indices made available by a noncoherent 64-FSK
demodulator (see the sidebar
\series bold
JT65 Message Processing
\series default
).
The demodulator computes binned power spectra for each signaling interval;
the result is a two-dimensional array
\begin_inset Formula $S(i,j)$
\end_inset
, where the frequency index
\begin_inset Formula $i$
\end_inset
assumes values 0 to 63 and the symbol index
\begin_inset Formula $j$
\end_inset
has values 1 to 63.
The most likely value for each symbol is taken as the frequency bin with
largest signal-plus-noise power over all values of
\begin_inset Formula $i$
\end_inset
.
The fractions of total power in the two bins containing the largest and
second-largest powers, denoted respectively by
\begin_inset Formula $p_{1}$
\end_inset
and
\begin_inset Formula $p_{2}$
\end_inset
, are computed for each symbol and passed from demodulator to decoder as
soft-symbol information.
The FT decoder derives two metrics from
\begin_inset Formula $p_{1}$
\end_inset
and
\begin_inset Formula $p_{2}$
\end_inset
, namely
\begin_inset Formula $p_{1}$
\end_inset
-rank (the rank
\begin_inset Formula $\{1,2,\ldots,63\}$
\end_inset
of the symbol's fractional power
\begin_inset Formula $p_{1,\, j}$
\end_inset
in a sorted list of
\begin_inset Formula $p_{1}$
\end_inset
values) and the ratio
\begin_inset Formula $p_{2}/p_{1}$
\end_inset
.
High ranking symbols have larger signal-to-noise ratio than those with
lower rank.
When
\begin_inset Formula $p_{2}/p_{1}$
\end_inset
is close to 1, the most likely symbol value is only slightly more reliable
than the second most likely one.
\end_layout
\begin_layout Standard
We use 3-bit quantization of the metrics
\begin_inset Formula $p_{1}$
\end_inset
-rank and
\begin_inset Formula $p_{2}/p_{1}$
\end_inset
to index the entries in an
\begin_inset Formula $8\times8$
\end_inset
table of symbol error probabilities.
The probabilities were derived empirically from a large data set of received
words that were successfully decoded.
The table provides an estimate of the
\emph on
a priori
\emph default
probability of symbol error based on the metrics
\begin_inset Formula $p_{1}$
\end_inset
-rank and
\begin_inset Formula $p_{2}/p_{1}$
\end_inset
.
This table is a key element of the algorithm, as it determines which symbols
are effectively protected from erasure.
The
\emph on
a priori
\emph default
symbol error probabilities are close to 1 for low-quality symbols and close
to 0 for high-quality symbols.
Recall from Examples 2 and 3 that candidate codewords are produced with
higher probability when the number of erased symbols is larger than the
number of incorrect symbols.
Correspondingly, the FT algorithm works best when the probability of erasing
a symbol is somewhat larger than the probability that the symbol is incorrect.
For the JT65 code we found empirically that good decoding performance is
obtained when the symbol erasure probability is about 1.3 times the symbol
error probability.
\end_layout
\begin_layout Standard
The FT algorithm tries successively to decode the received word using independen
t educated guesses to select symbols for erasure.
For each iteration a stochastic erasure vector is generated based on the
symbol erasure probabilities.
The erasure vector is sent to the BM decoder along with the full set of
63 hard-decision symbol values.
When the BM decoder finds a candidate codeword it is assigned a quality
metric
\begin_inset Formula $d_{s}$
\end_inset
, the
\emph on
soft distance
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Soft distance: }"
description "The soft distance between a received word and a codeword is a measure of how greatly they differ, taking into account available soft information on symbol values."
\end_inset
\emph default
between the received word and the codeword:
\begin_inset Formula
\begin{equation}
d_{s}=\sum_{j=1}^{n}\alpha_{j}\,(1+p_{1,\, j}).\label{eq:soft_distance}
\end{equation}
\end_inset
Here
\begin_inset Formula $\alpha_{j}=0$
\end_inset
if received symbol
\begin_inset Formula $j$
\end_inset
is the same as the corresponding symbol in the codeword,
\begin_inset Formula $\alpha_{j}=1$
\end_inset
if the received symbol and codeword symbol are different, and
\begin_inset Formula $p_{1,\, j}$
\end_inset
is the fractional power associated with received symbol
\begin_inset Formula $j$
\end_inset
.
Think of the soft distance as made up of two terms: the first is the Hamming
distance between the received word and the codeword, and the second ensures
that if two candidate codewords have the same Hamming distance from the
received word, a smaller soft distance will be assigned to the one where
differences occur in symbols of lower estimated reliability.
\end_layout
\begin_layout Standard
In practice we find that
\begin_inset Formula $d_{s}$
\end_inset
can reliably identify the correct codeword if the signal-to-noise ratio
for individual symbols is greater than about 4 in linear power units.
We also find that significantly weaker signals can be decoded by using
soft-symbol information beyond that contained in
\begin_inset Formula $p_{1}$
\end_inset
and
\begin_inset Formula $p_{2}$
\end_inset
.
To this end we define an additional metric
\begin_inset Formula $u$
\end_inset
, the average signal-plus-noise power in all received symbols according
to a candidate codeword's symbol values:
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
u=\frac{1}{n}\sum_{j=1}^{n}S(c_{j},\, j).\label{eq:u-metric}
\end{equation}
\end_inset
Here the
\begin_inset Formula $c_{j}$
\end_inset
's are the symbol values for the candidate codeword being tested.
\end_layout
\begin_layout Standard
The correct JT65 codeword produces a value for
\begin_inset Formula $u$
\end_inset
equal to the average of
\begin_inset Formula $n=63$
\end_inset
bins containing both signal and noise power.
Incorrect codewords have at most
\begin_inset Formula $k-1=11$
\end_inset
such bins and at least
\begin_inset Formula $n-k+1=52$
\end_inset
bins containing noise only.
Thus, if the spectral array
\begin_inset Formula $S(i,\, j)$
\end_inset
has been normalized so that the average value of the noise-only bins is
unity,
\begin_inset Formula $u$
\end_inset
for the correct codeword has expectation value (average over many random
realizations) given by
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\bar{u}_{c}=1+y,\label{eq:u1-exp}
\end{equation}
\end_inset
where
\begin_inset Formula $y$
\end_inset
is the signal-to-noise ratio in linear power units.
If we assume Gaussian statistics and a large number of trials, the standard
deviation of measured values of
\begin_inset Formula $u$
\end_inset
is
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\sigma_{c}=\left(\frac{1+2y}{n}\right)^{1/2}.\label{eq:sigma1}
\end{equation}
\end_inset
In contrast, the expected value and standard deviation of the
\begin_inset Formula $u$
\end_inset
-metric for an incorrect codeword (randomly selected from a population of
all
\begin_inset Quotes eld
\end_inset
worst case
\begin_inset Quotes erd
\end_inset
codewords,
\emph on
i.e.
\emph default
, those with
\begin_inset Formula $k-1$
\end_inset
symbols identical to corresponding ones in the correct word) are given
by
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\bar{u}_{i}=1+\left(\frac{k-1}{n}\right)y,\label{eq:u2-exp}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\sigma_{i}=\frac{1}{n}\left[n+2y(k-1)\right]^{1/2},\label{eq:sigma2}
\end{equation}
\end_inset
where the subscript
\begin_inset Formula $i$
\end_inset
is an abbreviation for
\begin_inset Quotes eld
\end_inset
incorrect
\begin_inset Quotes erd
\end_inset
.
\end_layout
\begin_layout Standard
If
\begin_inset Formula $u$
\end_inset
is evaluated for a large number of candidate codewords, one of which is
correct, we should expect the largest value
\begin_inset Formula $u_{1}$
\end_inset
to be drawn from a population with statistics described by
\begin_inset Formula $\bar{u}_{c}$
\end_inset
and
\begin_inset Formula $\sigma_{c}.$
\end_inset
If no tested codeword is correct,
\begin_inset Formula $u_{1}$
\end_inset
is likely to come from the
\begin_inset Formula $(\bar{u}_{i},\,\sigma_{i})$
\end_inset
population and to be several standard deviations above the mean.
In either case the second-largest value,
\begin_inset Formula $u_{2},$
\end_inset
will likely come from the
\begin_inset Formula $(\bar{u}_{i},\,\sigma_{i})$
\end_inset
population, again several standard deviations above the mean.
If the signal-to-noise ratio
\begin_inset Formula $y$
\end_inset
is too small for decoding to be possible or the correct codeword is never
presented as a candidate, the ratio
\begin_inset Formula $r=u_{2}/u_{1}$
\end_inset
will likely be close to 1.
On the other hand, correctly identified codewords will produce
\begin_inset Formula $u_{1}$
\end_inset
significantly larger than
\begin_inset Formula $u_{2}$
\end_inset
and thus smaller values of
\begin_inset Formula $r$
\end_inset
.
We therefore apply a ratio threshold test, say
\begin_inset Formula $r<R_{1}$
\end_inset
, to identify codewords with high probability of being correct.
As described in Section
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Theory,-Simulation,-and"
\end_inset
, we use simulations to set an empirical acceptance threshold
\begin_inset Formula $R_{1}$
\end_inset
that maximizes the probability of correct decodes while ensuring a low
rate of false positives.
\end_layout
\begin_layout Standard
As with all decoding algorithms that generate a list of possible codewords,
a stopping criterion is necessary.
FT accepts a codeword unconditionally if the Hamming distance
\begin_inset Formula $X$
\end_inset
and soft distance
\begin_inset Formula $d_{s}$
\end_inset
obey specified criteria
\begin_inset Formula $X<X_{0}$
\end_inset
and
\begin_inset Formula $d_{s}<D_{0}$
\end_inset
.
Secondary acceptance criteria
\begin_inset Formula $d_{s}<D_{1}$
\end_inset
and
\begin_inset Formula $r<R_{1}$
\end_inset
are used to validate additional codewords that fail the first test.
A timeout is used to limit execution time if no acceptable codeword is
found in a reasonable number of trials,
\begin_inset Formula $T$
\end_inset
.
Today's personal computers are fast enough that
\begin_inset Formula $T$
\end_inset
can be set as large as
\begin_inset Formula $10^{5},$
\end_inset
or even higher.
Pseudo-code for the FT algorithm is presented in an accompanying box,
\series bold
Algorithm 1
\series default
.
\end_layout
\begin_layout Standard
\begin_inset Float algorithm
wide false
sideways false
status open
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Pseudo-code for the FT algorithm.
\end_layout
\end_inset
\end_layout
\begin_layout Enumerate
For each received symbol, define the erasure probability as 1.3 times the
\emph on
a priori
\emph default
symbol-error probability determined from soft-symbol information
\begin_inset Formula $\{p_{1}\textrm{-rank},\, p_{2}/p_{1}\}$
\end_inset
.
\end_layout
\begin_layout Enumerate
Make independent stochastic
\begin_inset CommandInset nomenclature
LatexCommand nomenclature
symbol "{\\bf Stochastic algorithm: }"
description "An algorithm involving chance or probability in determining the series of computational steps to be taken."
\end_inset
decisions about whether to erase each symbol by using the symbol's erasure
probability, allowing a maximum of 51 erasures.
\end_layout
\begin_layout Enumerate
Attempt errors-and-erasures decoding using the BM algorithm and the set
of erasures determined in step 2.
If the BM decoder produces a candidate codeword, go to step 5.
\end_layout
\begin_layout Enumerate
If BM decoding was not successful, go to step 2.
\end_layout
\begin_layout Enumerate
Calculate the hard-decision Hamming distance
\begin_inset Formula $X$
\end_inset
between the candidate codeword and the received symbols, along with the
corresponding soft distance
\begin_inset Formula $d_{s}$
\end_inset
and the quality metric
\begin_inset Formula $u$
\end_inset
.
\end_layout
\begin_layout Enumerate
If
\begin_inset Formula $u$
\end_inset
is the largest one encountered so far, preserve any previous value of
\begin_inset Formula $u_{1}$
\end_inset
by setting
\begin_inset Formula $u_{2}=u_{1}.$
\end_inset
Then set
\begin_inset Formula $u_{1}=u,$
\end_inset
\begin_inset Formula $d_{1}=d_{s},$
\end_inset
\begin_inset Formula $X_{1}=X,$
\end_inset
and save the codeword.
\end_layout
\begin_layout Enumerate
If
\begin_inset Formula $X_{1}<X_{0}$
\end_inset
and
\begin_inset Formula $d_{1}<D_{0}$
\end_inset
, go to step 11.
\end_layout
\begin_layout Enumerate
If the number of trials is less than the timeout limit
\begin_inset Formula $T,$
\end_inset
go to 2.
\begin_inset Formula $ $
\end_inset
\end_layout
\begin_layout Enumerate
If
\begin_inset Formula $d_{1}<D_{1}$
\end_inset
and
\begin_inset Formula $r=u_{2}/u_{1}<R_{1},$
\end_inset
go to step 11.
\end_layout
\begin_layout Enumerate
Otherwise, declare decoding failure and exit.
\end_layout
\begin_layout Enumerate
An acceptable codeword has been found.
Declare a successful decode and return the saved codeword.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Inspiration for the FT decoding algorithm came from a number of sources.
\begin_inset CommandInset citation
LatexCommand cite
key "lc2004"
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textsuperscript{,}
\end_layout
\end_inset
\begin_inset CommandInset citation
LatexCommand cite
key "lhmg2010"
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textsuperscript{,}
\end_layout
\end_inset
\begin_inset CommandInset citation
LatexCommand cite
key "lk2008"
\end_inset
After developing this algorithm, we became aware that our approach is conceptua
lly similar to a stochastic, erasures-only list decoding algorithm described
in another reference
\begin_inset CommandInset citation
LatexCommand cite
key "ls2009"
\end_inset
.
That algorithm is applied to higher-rate Reed-Solomon codes on a symmetric
channel using binary phase-shift keying (BPSK).
Our 64-ary input channel with 64-FSK modulation required us to develop
unique methods for assigning erasure probabilities and for defining acceptance
criteria to select the best codeword from the list of tested candidates.
\end_layout
\begin_layout Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Hinted-Decoding"
\end_inset
Hinted Decoding
\end_layout
\begin_layout Standard
The FT algorithm is completely general.
With equal sensitivity it can recover any one of the
\begin_inset Formula $2^{72}\approx4.7\times10^{21}$
\end_inset
different messages that can be transmitted with the JT65 protocol.
In some circumstances it's easy to imagine a
\emph on
much
\emph default
smaller list of messages (say, a few thousand messages or less) that would
be among the most likely ones to be received.
One such favorable situation exists when making short ham-radio contacts
that exchange minimal information including callsigns, signal reports,
perhaps Maidenhead locators, and acknowledgments.
On the EME path or a VHF or UHF band with limited geographical coverage,
the most common received messages frequently originate from callsigns that
have been decoded before.
Saving a list of previously decoded callsigns and associated locators makes
it easy to generate a list of hypothetical messages and their corresponding
codewords at very little computational expense.
The resulting candidate codewords can be tested in almost the same way
as those generated by the probabilistic method described in Section
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:The-decoding-algorithm"
\end_inset
.
We call this approach
\begin_inset Quotes eld
\end_inset
hinted decoding;
\begin_inset Quotes erd
\end_inset
it is sometimes referred to as the
\emph on
Deep Search
\emph default
algorithm.
In certain limited situations it can provide enhanced sensitivity for the
principal task of any decoder, namely to determine precisely what message
was sent.
\end_layout
\begin_layout Standard
For hinted decoding we again invoke a ratio threshold test, but in this
case we use it to answer a more limited question.
Over the full list of messages considered likely, we want to know whether
a suitable metric can distinguish with confidence between the one correct
codeword and all others in the generated list --- or, alternatively, to
determine that the correct codeword is
\emph on
not
\emph default
contained in the list.
We again find that the most effective metric involves a comparison of
\begin_inset Formula $u_{1}$
\end_inset
and
\begin_inset Formula $u_{2},$
\end_inset
the largest and second-largest values of total signal-plus-noise power
among all the tested codewords.
The criterion for comparison is chosen empirically to maximize the number
of correct decodes while ensuring that false decodes are rare.
Because tested candidate codewords are drawn from a list typically no longer
than a few thousand entries, rather than
\begin_inset Formula $2^{72},$
\end_inset
the limit can can be more relaxed than that used in the FT algorithm.
Thus, for the limited subset of messages suggested by previous experience
to be likely, hinted decodes can be obtained at lower signal levels than
required for the full universe of
\begin_inset Formula $2^{72}$
\end_inset
possible messages.
Pseudo-code for the hinted-decoding algorithm is presented as
\series bold
Algorithm 2
\series default
.
\end_layout
\begin_layout Standard
\begin_inset Float algorithm
wide false
sideways false
status open
\begin_layout Plain Layout
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Pseudo-code for hinted decoding
\end_layout
\end_inset
\end_layout
\begin_layout Enumerate
Generate a list of
\begin_inset Formula $L$
\end_inset
codewords considered likely to be received.
Set a pointer to the start of this list.
\end_layout
\begin_layout Enumerate
Fetch the next candidate codeword and calculate its metric
\begin_inset Formula $u.$
\end_inset
\end_layout
\begin_layout Enumerate
If
\begin_inset Formula $u$
\end_inset
is the largest metric encountered so far, preserve any previous value of
\begin_inset Formula $u_{1}$
\end_inset
by setting
\begin_inset Formula $u_{2}=u_{1}.$
\end_inset
Then set
\begin_inset Formula $u_{1}=u$
\end_inset
and save the codeword.
\end_layout
\begin_layout Enumerate
If the number of tested codewords is less than
\begin_inset Formula $L,$
\end_inset
go to step 2.
\end_layout
\begin_layout Enumerate
If
\begin_inset Formula $r=u_{2}/u_{1}<R_{2},$
\end_inset
go to step 7.
\end_layout
\begin_layout Enumerate
Otherwise, declare decoding failure and exit.
\end_layout
\begin_layout Enumerate
An acceptable codeword has been found.
Declare a successful result and return the codeword and the value
\begin_inset Formula $q=100\,(u_{1}-bu_{2})$
\end_inset
as a confidence indicator.
(By default we use the value
\begin_inset Formula $b=1.12$
\end_inset
for submode JT65A.)
\end_layout
\end_inset
\end_layout
\begin_layout Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Theory,-Simulation,-and"
\end_inset
Decoder Performance Evaluation
\end_layout
\begin_layout Standard
Comparisons of decoding performance are usually presented in the professional
literature as plots of word error rate versus
\begin_inset Formula $E_{b}/N_{0}$
\end_inset
, the ratio of the energy collected per information bit to the one-sided
noise power spectral density.
For weak-signal amateur radio work, performance is more usefully presented
as the probability of successfully decoding a received word plotted against
\begin_inset Formula $\mathrm{SNR}{}_{2500}$
\end_inset
, the signal-to-noise ratio in a 2500 Hz reference bandwidth.
The relationship between
\begin_inset Formula $E_{b}/N_{0}$
\end_inset
and
\begin_inset Formula $\mathrm{SNR}{}_{2500}$
\end_inset
is described in Appendix
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Appendix:SNR"
\end_inset
.
Examples of both types of plot are included in the following discussion,
where we describe simulations carried out to compare performance of the
FT algorithm and hinted decoding with other algorithms and with theoretical
expectations.
We have also used simulations to establish suitable default values for
the acceptance parameters
\begin_inset Formula $X_{0},$
\end_inset
\begin_inset Formula $D_{0},$
\end_inset
\begin_inset Formula $D_{1},$
\end_inset
\begin_inset Formula $R_{1},$
\end_inset
and
\begin_inset Formula $R_{2}.$
\end_inset
\end_layout
\begin_layout Subsection
Simulated results on the AWGN channel
\end_layout
\begin_layout Standard
Results of simulations using the BM, KV, and FT decoding algorithms on the
JT65 code are presented in terms of word error rate versus
\begin_inset Formula $E_{b}/N_{0}$
\end_inset
in Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:bodide"
\end_inset
.
For these tests we generated at least 1000 signals at each signal-to-noise
ratio, assuming the additive white gaussian noise (AWGN) channel, and we
processed the data using each algorithm.
For word error rates less than 0.1 it was necessary to process 10,000 or
even 100,000 simulated signals in order to capture enough errors to make
the measurements statistically meaningful.
As a test of the fidelity of our numerical simulations, Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:bodide"
\end_inset
also shows results calculated from theoretical probability distributions
for comparison with the BM results.
The simulated BM results agree with theory to within about 0.1 dB.
The differences are caused by small errors in the estimates of time and
frequency offset of the received signal in the simulated data.
Such
\begin_inset Quotes eld
\end_inset
sync losses
\begin_inset Quotes erd
\end_inset
are not accounted for in the idealized theoretical results.
\end_layout
\begin_layout Standard
As expected, on the AWGN channel the soft-decision algorithms FT and KV
are about 2 dB better than the hard-decision BM algorithm.
In addition, FT has an edge over KV that increases from about 0.2 dB at
higher SNRs to nearly 0.5 dB at low SNR.
With timeout parameter
\begin_inset Formula $T=10^{5}$
\end_inset
execution time for FT is longer than that for the KV algorithm, but still
small enough to be fully practical on today's home computers.
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename fig_bodide.pdf
\end_inset
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:bodide"
\end_inset
Word error rates as a function of
\begin_inset Formula $E_{b}/N_{0},$
\end_inset
the signal-to-noise ratio per information bit.
The curve labeled
\emph on
Theory
\emph default
shows a theoretical prediction for the hard-decision BM decoder.
Remaining curves represent simulation results on an AWGN channel for the
BM, KV, and FT decoders.
The KV algorithm was executed with complexity coefficient
\begin_inset Formula $\lambda=15$
\end_inset
, the most aggressive setting historically used in the
\emph on
WSJT
\emph default
programs.
The FT algorithm used timeout setting
\begin_inset Formula $T=10^{5}.$
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Error-free transmission is important in commercial applications, so plots
like Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:bodide"
\end_inset
are often extended downward to error rates of
\begin_inset Formula $10^{-6}$
\end_inset
or even less.
The circumstances for minimal amateur-radio contacts are very different,
however.
Decoding failure rates of order 0.1 or higher may be perfectly acceptable:
they simply require repeat transmissions.
In such circumstances the essential information is more usefully presented
in a plot showing the percentage of transmissions copied correctly as a
function of signal-to-noise ratio.
Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:WER2"
\end_inset
shows the FT and KV results from Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:bodide"
\end_inset
in this format, along with additional FT results for
\begin_inset Formula $T=10^{4},\:10^{3},\:10^{2}$
\end_inset
and
\begin_inset Formula $10$
\end_inset
.
It's easy to see that the FT decoder produces more decodes than KV when
\begin_inset Formula $T\gtrsim3000$
\end_inset
.
As already noted in connection with Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:bodide"
\end_inset
, FT with
\begin_inset Formula $T=10^{5}$
\end_inset
has approximately
\begin_inset Formula $0.5$
\end_inset
dB gain over KV at low SNR.
It also provides very significant gains over the hard-decision BM decoder,
even when limited to very small
\begin_inset Formula $T$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename fig_wer2.pdf
lyxscale 120
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:WER2"
\end_inset
Percent of JT65 messages copied as a function of
\begin_inset Formula $\mathrm{SNR}{}_{2500},$
\end_inset
assuming additive white gaussian noise and no fading.
Numbers adjacent to curves specify values of timeout parameter
\begin_inset Formula $T$
\end_inset
for the FT decoder.
Open circles and dotted line show results for the KV decoder with complexity
coefficient
\begin_inset Formula $\lambda=15$
\end_inset
.
Results for the BM algorithm are plotted with crosses and dashed line.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Parameter
\begin_inset Formula $T$
\end_inset
in the FT algorithm is the maximum number of symbol-erasure trials allowed
for a particular attempt at decoding a received word.
Most successful decodes take only a small fraction of the maximum allowed
number of trials.
Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:N_vs_X"
\end_inset
shows the number of stochastic erasure trials required to find the correct
codeword plotted as a function of
\begin_inset Formula $X,$
\end_inset
the number of hard-decision errors in the received word.
This test run used 1000 simulated transmissions at
\begin_inset Formula $\mathrm{SNR_{2500}}=-24$
\end_inset
dB, just slightly above the decoding threshold, with timeout parameter
\begin_inset Formula $T=10^{5}.$
\end_inset
No points are shown for
\begin_inset Formula $X\le25$
\end_inset
because all such words are successfully decoded by a single run of the
errors-only BM algorithm.
Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:N_vs_X"
\end_inset
shows that the FT algorithm decodes received words with as many as
\begin_inset Formula $X=43$
\end_inset
symbol errors.
It also shows that the average number of trials increases with the number
of errors in the received word.
The variability of decoding time also increases dramatically with the number
of errors in the received word.
These results provide insight into the mean and variance of execution time
for the FT algorithm, since execution time is roughly proportional to the
number of required erasure trials.
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename fig_ntrials_vs_nhard.pdf
lyxscale 120
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:N_vs_X"
\end_inset
Number of trials needed to decode a received word
\emph on
vs.
\emph default
Hamming distance
\begin_inset Formula $X$
\end_inset
between received word and decoded codeword.
We used 1000 simulated transmissions on an AWGN channel with no fading.
The signal-to-noise ratio was
\begin_inset Formula $\mathrm{SNR}{}_{2500}=-24$
\end_inset
dB, or
\begin_inset Formula $E_{b}/N_{o}=5.1$
\end_inset
dB.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
Simulated results for Rayleigh fading and hinted decoding
\end_layout
\begin_layout Standard
Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:Psuccess"
\end_inset
presents the results of simulations for signal-to-noise ratios ranging
from
\begin_inset Formula $-18$
\end_inset
to
\begin_inset Formula $-30$
\end_inset
dB, again using 1000 simulated signals for each plotted point.
We include three curves for each decoding algorithm: one for the AWGN channel
and no fading, and two more for simulated Doppler spreads of 0.2 and 1.0
Hz.
These simulated Doppler spreads are comparable to those encountered on
HF ionospheric paths and also for EME at VHF and the lower UHF bands.
For comparison we note that the JT65 symbol rate is about
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
linebreak
\end_layout
\end_inset
2.7 Hz.
It is interesting to note that while Rayleigh fading severely degrades
the success rate of the BM decoder, the penalties are much smaller with
both FT and Deep Search (DS) decoding.
Simulated Doppler spreads of 0.2 Hz actually increased the FT decoding rate
slightly at SNRs close to the decoding threshold, presumably because with
the low-rate JT65 code, signal peaks provide the information needed for
good copy.
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename fig_psuccess.pdf
lyxscale 90
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:Psuccess"
\end_inset
Percentage of JT65 messages successfully decoded as a function of
\begin_inset Formula $\mathrm{SNR}{}_{2500}$
\end_inset
.
Results are shown for the hard-decision Berlekamp-Massey (BM) and soft-decision
Franke-Taylor (FT) decoding algorithms.
Curves labeled DS correspond to the hinted-decode (Deep Search) algorithm
with a codeword list of length
\begin_inset Formula $L\,$
\end_inset
= 5850.
Numbers adjacent to the curves are simulated Doppler spreads in Hz.
In the current version of
\emph on
WSJT-X
\emph default
the performance of the DS algorithm is limited by synchronization failures
when
\begin_inset Formula $SNR\lesssim-28\,\textrm{dB}$
\end_inset
.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Section
On-the-air Experience
\end_layout
\begin_layout Standard
The JT65 protocol has proven remarkably versatile.
Today the mode is used by thousands of amateurs around the world, communicating
over terrestrial paths on the MF and HF bands and over terrestrial as well
as EME paths from 50 MHz through 10 GHz.
Three
\emph on
submodes
\emph default
are in use, together accommodating a wide range of Doppler spreads and
potential instrumental instabilities.
All three submodes transmit the 63 data symbols interspersed with 63 synchroniz
ation symbols at keying rate 11025/4096 = 2.69 baud.
Submode JT65A uses tone spacing equal to the symbol rate; its total occupied
bandwidth is
\begin_inset Formula $66\times2.69=177.6$
\end_inset
Hz.
Submodes B and C have tone spacings and occupied bandwidths 2 and 4 times
larger.
In practice JT65A is generally used at 50 MHz and below, JT65B on 144 through
432 MHz, and JT65C at 1296 MHz and above.
\end_layout
\begin_layout Standard
Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:JT65B_EME"
\end_inset
shows portions of the main window and spectrogram displays from program
\emph on
WSJT-X,
\emph default
illustrating replies to a CQ from K1JT on 144.118 MHz using submode JT65B
on the EME path.
Speckled vertical lines on the waterfall at 1494 and 1515 Hz are the synchroniz
ing tones of signals from DL7UAE and SP6GWB.
Other visible speckles (barely above the noise) up to about 1870 Hz are
some of the data tones from these two stations.
Two lines of decoded text show that the estimated average signal strengths
were
\begin_inset Formula $\mathrm{SNR}{}_{2500}=-23$
\end_inset
and
\begin_inset Formula $-24$
\end_inset
dB, respectively, just one or two dB above decoding threshold for the FT
decoder.
Note that the two signals overlap throughout more than 90% of their occupied
bandwidths, yet both are decoded cleanly and without errors.
Such behavior is typical of the JT65 protocol.
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename JT65B_EME.png
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:JT65B_EME"
\end_inset
Examples of JT65B EME signals recorded at K1JT.
Numbers above the spectrogram are audio frequencies in Hz, and the spectrogram'
s vertical span is one minute of time.
The horizontal green bar on the frequency axis indicates the bandwidth
occupied by the second decoded signal, a reply from SP6GWB.
See text for additional details.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
As another example, Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:spectrogram"
\end_inset
shows activity in submode JT65A during a single minute on the 20 m amateur
band.
At this time the band was crowded with overlapping signals.
With care you can count at least 19 distinct synchronizing tones (the speckled
vertical lines in the figure), and can see as many as four signals overlapping
in some places.
After signal processing to demodulate the signals and produce soft-symbol
data for the FT decoder, program
\emph on
WSJT-X
\emph default
extracts and decodes 21 error-free messages from this recorded data segment.
This result is achieved with a relatively small timeout parameter,
\begin_inset Formula $T=1000.$
\end_inset
For these results the decoder uses two successive sweeps over the spectrum.
The strongest signals (12 in this example) are sequentially decoded and
subtracted from the raw data after the first pass.
Another 9 signals are decoded in the second pass.
For comparison, the hard-decision BM decoder decodes only 12 messages from
this recording (9 in the first pass and 3 more in a second).
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename fig_waterfall.png
scale 60
BoundingBox 0bp 0bp 1124bp 200bp
clip
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:spectrogram"
\end_inset
Spectrogram from
\emph on
WSJT-X
\emph default
showing one minute of data collected under crowded band conditions on the
20 m band.
Numbers on the scale are frequencies (in Hz) above 14.076 MHz.
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Our implementation of the FT decoder, written in a combination of FORTRAN
and C, is freely available as open-source code
\begin_inset CommandInset citation
LatexCommand cite
key "wsjt_sourceforge"
\end_inset
.
For the Berlekamp-Massey part of the algorithm we use routines written
by Phil Karn, KA9Q
\begin_inset CommandInset citation
LatexCommand cite
key "karn"
\end_inset
, modified slightly so that the Reed-Solomon syndromes are computed only
once in our most time-consuming loop (steps 2 through 8,
\series bold
Algorithm 1
\series default
).
The FT algorithm has become an integral part of programs
\emph on
WSJT,
\emph default
\emph on
MAP65,
\emph default
and
\emph on
WSJT-X
\emph default
.
Improvement in sensitivity over the Kötter-Vardy decoder is small, only
a few tenths of a dB, but especially on the EME path such small advantages
are sometimes very important.
Perhaps even more essential, programs in the
\emph on
WSJT
\emph default
family are now entirely open source.
We no longer need to use the patented KV algorithm or the specially licensed
executable program
\family typewriter
kvasd[.exe]
\family default
.
\end_layout
\begin_layout Section
Acknowledgments
\end_layout
\begin_layout Standard
We thank G3WDG, G4WJS, KD9DSW, PY2SDR, SM5BSZ, VK7MO, and W3SZ for helpful
comments on an earlier version of this paper.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "1"
key "jt65_protocol"
\end_inset
“The JT65 Communications Protocol”, J.
Taylor, K1JT,
\emph on
QEX
\emph default
, September-October 2005, pp.
3-12.
Available also at http://physics.princeton.edu/pulsar/K1JT/JT65.pdf.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "2"
key "kv2001"
\end_inset
“Algebraic soft-decision decoding of Reed-Solomon codes,” R.
Kötter and A.
Vardy,
\emph on
IEEE Transactions on Information Theory
\emph default
, Vol.
49, pp.
2809-2825, 2003.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "3"
key "wsjt"
\end_inset
\emph on
WSJT Home Page
\emph default
: http://www.physics.princeton.edu/pulsar/K1JT/.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "4"
key "lc2004"
\end_inset
\emph on
Error Control Coding, 2nd Edition
\emph default
, Shu Lin and Daniel J.
Costello, Pearson-Prentice Hall, 2004.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "5"
key "lhmg2010"
\end_inset
``Stochastic Chase Decoding of Reed-Solomon Codes'', Camille Leroux, Saied
Hemati, Shie Mannor, Warren J.
Gross,
\emph on
IEEE Communications Letters
\emph default
, Vol.
14, No.
9, pp.
863-865, 2010.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "6"
key "lk2008"
\end_inset
``Soft-Decision Decoding of Reed-Solomon Codes Using Successive Error-and-Erasur
e Decoding,'' Soo-Woong Lee and B.
V.
K.
Vijaya Kumar,
\emph on
IEEE
\begin_inset Quotes eld
\end_inset
GLOBECOM
\begin_inset Quotes erd
\end_inset
Proceedings,
\emph default
2008
\emph on
.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "7"
key "ls2009"
\end_inset
``Stochastic Erasure-Only List Decoding Algorithms for Reed-Solomon Codes,
\begin_inset Quotes erd
\end_inset
Chang-Ming Lee and Yu T.
Su,
\emph on
IEEE Signal Processing Letters,
\emph default
Vol.
16, pp.
691-694, 2009.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "8"
key "wsjt_sourceforge"
\end_inset
Source code for all programs in the
\emph on
WSJT
\emph default
project is stored in a Subversion repository at Sourceforge: https://sourceforg
e.net/projects/wsjt/
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
label "9"
key "karn"
\end_inset
Errors-and erasures decoder for the Berlekamp-Massey algorithm written by
Phil Karn, KA9Q: http://www.ka9q.net/code/fec/
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
\start_of_appendix
\begin_inset CommandInset label
LatexCommand label
name "sec:Appendix:SNR"
\end_inset
Appendix: Signal to Noise Ratios
\end_layout
\begin_layout Standard
The signal to noise ratio in a bandwidth,
\begin_inset Formula $B$
\end_inset
, that is at least as large as the bandwidth occupied by the signal is:
\begin_inset Formula
\begin{equation}
\mathrm{SNR}_{B}=\frac{P_{s}}{N_{0}B}\label{eq:SNR}
\end{equation}
\end_inset
where
\begin_inset Formula $P_{s}$
\end_inset
is the average signal power (W),
\begin_inset Formula $N_{0}$
\end_inset
is one-sided noise power spectral density (W/Hz), and
\begin_inset Formula $B$
\end_inset
is the bandwidth in Hz.
In amateur radio applications, digital modes are often compared based on
the SNR defined in a 2.5 kHz reference bandwidth,
\begin_inset Formula $\mathrm{SNR}_{2500}$
\end_inset
.
\end_layout
\begin_layout Standard
In the professional literature, decoder performance is characterized in
terms of
\begin_inset Formula $E_{b}/N_{0}$
\end_inset
, the ratio of the energy collected per information bit,
\begin_inset Formula $E_{b}$
\end_inset
, to the one-sided noise power spectral density,
\begin_inset Formula $N_{0}$
\end_inset
.
Denote the duration of a channel symbol by
\begin_inset Formula $\tau_{s}$
\end_inset
(for JT65,
\begin_inset Formula $\tau_{s}=0.3715\,\mathrm{s}$
\end_inset
).
JT65 signals have constant envelope, so the average signal power is related
to the energy per symbol,
\begin_inset Formula $E_{s}$
\end_inset
, by
\begin_inset Formula
\begin{equation}
P_{s}=E_{s}/\tau_{s}.\label{eq:signal_power}
\end{equation}
\end_inset
The total energy in a received JT65 message consisting of
\begin_inset Formula $n=63$
\end_inset
channel symbols is
\begin_inset Formula $63E_{s}$
\end_inset
.
The energy collected for each of the 72 bits of information conveyed by
the message is then
\begin_inset Formula
\begin{equation}
E_{b}=\frac{63E_{s}}{72}=0.875E_{s.}\label{eq:Eb_Es}
\end{equation}
\end_inset
Using equations (
\begin_inset CommandInset ref
LatexCommand ref
reference "eq:SNR"
\end_inset
)-(
\begin_inset CommandInset ref
LatexCommand ref
reference "eq:Eb_Es"
\end_inset
),
\begin_inset Formula $\mathrm{SNR}_{2500}$
\end_inset
can be written in terms of
\begin_inset Formula $E_{b}/N_{o}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathrm{SNR}_{2500}=1.23\times10^{-3}\frac{E_{b}}{N_{0}}.\label{eq:SNR2500}
\end{equation}
\end_inset
If all quantities are expressed in dB, then:
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\mathrm{SNR}_{2500}=(E_{b}/N_{0})_{\mathrm{dB}}-29.1\,\mathrm{dB}=(E_{s}/N_{0})_{\mathrm{dB}}-29.7\,\mathrm{dB}.\label{eq:SNR_all_types}
\end{equation}
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\begin_inset Box Doublebox
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
status open
\begin_layout Paragraph
\size large
Sidebar: JT65 Message Processing
\end_layout
\begin_layout Enumerate
User A enters or selects message consistent with formatting rules of JT65.
\end_layout
\begin_layout Enumerate
Transmitting software at A: compress message into 12 six-bit symbols, then
add 51 six-bit parity symbols.
\end_layout
\begin_layout Enumerate
Intersperse 63 synchronizing symbols among the 63 information-carrying symbols.
\end_layout
\begin_layout Enumerate
Start transmission 1 s into a UTC minute.
Transmit each symbol value at a distinct frequency.
\end_layout
\begin_layout Enumerate
Signal propagates from A to B, arriving much weaker and corrupted by noise,
fading, and Doppler spread.
\end_layout
\begin_layout Enumerate
Receiving software at B: remove impulsive noise; detect synchronizing signal,
measure its frequency and time offset.
\end_layout
\begin_layout Enumerate
Shift spectrum to put sync tone at zero frequency, correcting for any measured
drift.
\end_layout
\begin_layout Enumerate
Compute binned power spectra
\begin_inset Formula $S(i,j)$
\end_inset
for all information symbols.
(Index
\begin_inset Formula $i$
\end_inset
runs over 64 possible symbol values, index
\begin_inset Formula $j$
\end_inset
over 63 symbol numbers.)
\end_layout
\begin_layout Enumerate
Remove any possible spurs (signal appearing at same
\begin_inset Formula $i$
\end_inset
for all
\begin_inset Formula $j$
\end_inset
).
\end_layout
\begin_layout Enumerate
Apply Algorithm 1, the FT algorithm.
\end_layout
\begin_layout Enumerate
Optional: if FT decoding was unsuccessful apply Algorithm 2, hinted decoding.
\end_layout
\begin_layout Enumerate
Display decoded message for User B.
\end_layout
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset CommandInset nomencl_print
LatexCommand printnomenclature
set_width "auto"
\end_inset
\end_layout
\end_body
\end_document