diff --git a/lib/sfrsd2/sfrsd_paper/sfrsd.lyx b/lib/sfrsd2/sfrsd_paper/sfrsd.lyx new file mode 100644 index 000000000..3aae759c2 --- /dev/null +++ b/lib/sfrsd2/sfrsd_paper/sfrsd.lyx @@ -0,0 +1,755 @@ +#LyX 2.1 created this file. For more info see http://www.lyx.org/ +\lyxformat 474 +\begin_document +\begin_header +\textclass IEEEtran +\use_default_options true +\maintain_unincluded_children false +\language english +\language_package default +\inputencoding auto +\fontencoding global +\font_roman default +\font_sans default +\font_typewriter default +\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 +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\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 true +\use_refstyle 1 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\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 +A stochastic successive erasures soft-decision decoder for the JT65 (63,12) + Reed-Solomon code +\end_layout + +\begin_layout Author +Steven J. + Franke, K9AN and Joseph H. + Taylor, K1JT +\end_layout + +\begin_layout Abstract +The JT65 mode has revolutionized amateur-radio weak-signal communication + by enabling amateur radio operators with small antennas and relatively + low-power transmitters to communicate over propagation paths that could + not be utilized using traditional technologies. + One reason for the success and popularity of the JT65 mode is its use of + strong error-correction coding. + The JT65 code is a short block-length, low-rate, Reed-Solomon code based + on a 64-symbol alphabet. + Since 200?, decoders for the JT65 code have used the +\begin_inset Quotes eld +\end_inset + +Koetter-Vardy +\begin_inset Quotes erd +\end_inset + + (KV) algebraic soft-decision decoder. + The KV decoder is implemented in a closed-source program that is licensed + to K1JT for use in amateur applications. + This note describes a new open-source alternative to the KV decoder called + the SFRSD decoder. + The SFRSD decoding algorithm is shown to perform at least as well as the + KV decoder. + The SFRSD algorithm is conceptually simple and is built around the well-known + Berlekamp-Massey errors-and-erasures decoder. + +\end_layout + +\begin_layout Standard +JT65 message frames consist of a short, compressed, message that is encoded + for transmission using a Reed-Solomon code. + Reed-Solomon codes are block codes and, like all block codes, are characterized + by the length of their codewords, +\begin_inset Formula $n$ +\end_inset + +, the number of message symbols conveyed by the codeword, +\begin_inset Formula $k$ +\end_inset + +, and the number of possible values for each symbol in the codewords. + The codeword length and the number of message symbols are specified as + a tuple in the form +\begin_inset Formula $(n,k)$ +\end_inset + +. + JT65 uses a (63,12) Reed-Solomon code with 64 possible values for each + symbol, so each symbol represents +\begin_inset Formula $\log_{2}64=6$ +\end_inset + + message bits. + The source-encoded messages conveyed by a 63-symbol JT65 frame consist + of 72 bits. + The JT65 code is systematic, 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 the codeword consisting + of 63 total symbols. + +\end_layout + +\begin_layout Standard +The concept of Hamming distance is used as a measure of +\begin_inset Quotes eld +\end_inset + +distance +\begin_inset Quotes erd +\end_inset + + between different codewords, or between a received word and a codeword. + Hamming distance is the number of code symbols that differ in the two words + that are being compared. + Reed-Solomon codes have 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 + +The minimum Hamming distance of the JT65 code is +\begin_inset Formula $d=52$ +\end_inset + +, which means that any particular codeword differs from all other codewords + in at least 52 positions. + +\end_layout + +\begin_layout Standard +Given only a received word containing some incorrect symbols (errors), the + received word can be decoded into the correct codeword using a deterministic, + 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 + +, which means that it is always possible to efficiently decode a received + word that contains no more than 25 symbol errors. + +\end_layout + +\begin_layout Standard +There are a number of well-known algebraic algorithms that can carry out + the process of decoding a received codeword that contains no more than + +\begin_inset Formula $t$ +\end_inset + + errors. + One such algorithm is the Berlekamp-Massey (BM) decoding algorithm. +\end_layout + +\begin_layout Standard +A decoder, such as BM, must carry out two tasks: +\end_layout + +\begin_layout Enumerate +figure out which symbols were received incorrectly +\end_layout + +\begin_layout Enumerate +figure out the correct value of the incorrect symbols +\end_layout + +\begin_layout Standard +If it is somehow known that certain symbols are incorrect, such information + can be used in the decoding algorithm to reduce the amount of work required + in step 1 and to allow step 2 to correct more than +\begin_inset Formula $t$ +\end_inset + + errors. + In fact, in the unlikely event that the location of each and every error + is known and is provided to the BM decoder, and if no correct symbols are + accidentally labeled as errors, then the BM decoder can correct up to +\begin_inset Formula $d$ +\end_inset + + errors! +\end_layout + +\begin_layout Standard +In the decoding algorithm described herein, a list of symbols that are known + or suspected to be incorrect is sent to the BM decoder. + Symbols in the received word that are flagged as being incorrect are called + +\begin_inset Quotes eld +\end_inset + +erasures +\begin_inset Quotes erd +\end_inset + +. + Symbols that are not erased and that are incorrect will be called +\begin_inset Quotes eld +\end_inset + +errors +\begin_inset Quotes erd +\end_inset + +. + The BM decoder accepts erasure information in the form of a list of indices + corresponding to the incorrect, or suspected incorrect, symbols in the + received word. + As already noted, if the erasure information is perfect, then up to 51 + errors will be corrected. + When the erasure information is imperfect, then some of the erased symbols + will actually be correct, and some of the unerased symbols will be in error. + If a total of +\begin_inset Formula $n_{era}$ +\end_inset + + symbols are erased and the remaining unerased symbols contain +\begin_inset Formula $n_{err}$ +\end_inset + + errors, then the BM algorithm can find the correct codeword as long as + +\begin_inset Formula +\begin{equation} +n_{era}+2n_{err}\le d-1\label{eq:erasures_and_errors} +\end{equation} + +\end_inset + +If +\begin_inset Formula $n_{era}=0$ +\end_inset + +, then the decoder is said to be an +\begin_inset Quotes eld +\end_inset + +errors-only +\begin_inset Quotes erd +\end_inset + + decoder and it can correct up to +\begin_inset Formula $t$ +\end_inset + + errors ( +\begin_inset Formula $t$ +\end_inset + +=25 for JT65). + If +\begin_inset Formula $0