diff --git a/lib/ftrsd/ftrsd_paper/fig_psuccess.gnuplot b/lib/ftrsd/ftrsd_paper/fig_psuccess.gnuplot index 93317ff66..bf12f3c58 100644 --- a/lib/ftrsd/ftrsd_paper/fig_psuccess.gnuplot +++ b/lib/ftrsd/ftrsd_paper/fig_psuccess.gnuplot @@ -2,22 +2,24 @@ # run: gnuplot fig_psuccess.gnuplot # then: pdflatex fig_psuccess.tex # -set term epslatex standalone size 20cm,10cm +set term epslatex standalone size 6in,4in set output "fig_psuccess.tex" -set xlabel "SNR in 2500 Hz BW (dB)" +set xlabel "SNR in 2500 Hz Bandwidth (dB)" set ylabel "Percent copy" set style func linespoints -set key on top outside nobox +set key off set tics in set mxtics 2 set mytics 2 set grid -plot "ftdata-10000.dat" using 1:2 every ::1 with linespoints pt 4 title 'FT-10K', \ - "ftdata-100000.dat" using 1:2 every ::1 with linespoints pt 5 title 'FT-100K', \ - "ftdata-1000-rf.dat" using 1:2 every ::1 with linespoints pt 7 title 'FT-1K-RF', \ - "ftdata-100-rf.dat" using 1:2 every ::1 with linespoints pt 8 title 'FT-100-RF', \ - "bmdata.dat" using 1:2 with linespoints pt 9 title 'BM', \ - "bmdata-rf.dat" using 1:2 with linespoints pt 10 title 'BM-RF', \ - "kvasd-7999-rf.dat" using 1:2 every ::1 with linespoints pt 12 title 'KV-8-RF', \ - "kvasd-11999.dat" using 1:2 every ::1 with linespoints pt 13 title 'KV-12', \ - "kvasd-11999-rf.dat" using 1:2 every ::1 with linespoints pt 14 title 'KV-12-RF' +plot [-30:-18] [0:105] "stats_0.0" using 1:($3)/10.0 with linespoints lt 4 pt 1 title 'Sync', \ + "stats_0.0" using 1:($4)/10.0 with linespoints lt 2 lw 2 pt 2 title 'BB 0', \ + "stats_0.0" using 1:($5)/10.0 with linespoints lt 1 lw 2 pt 3 title 'FT 0', \ + "stats_0.0" using 1:($6)/10.0 with linespoints lt 3 lw 2 pt 4 title 'DS 0', \ + "stats_0.2" using 1:($4)/10.0 with linespoints lt 2 pt 2 title 'BB 0.2', \ + "stats_0.2" using 1:($5)/10.0 with linespoints lt 1 pt 3 title 'FT 0.2', \ + "stats_0.2" using 1:($6)/10.0 with linespoints lt 3 pt 4 title 'DS 0.2', \ + "stats_1.0" using 1:($4)/10.0 with linespoints lt 2 pt 2 title 'BB 1', \ + "stats_1.0" using 1:($5)/10.0 with linespoints lt 1 pt 3 title 'FT 1', \ + "stats_1.0" using 1:($6)/10.0 with linespoints lt 3 pt 4 title 'DS 1', \ + "psuccess.lab" with labels diff --git a/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf b/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf index 47306d11d..8935edb20 100644 Binary files a/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf and b/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf differ diff --git a/lib/ftrsd/ftrsd_paper/fig_wer.gnuplot b/lib/ftrsd/ftrsd_paper/fig_wer.gnuplot index 83569f07e..6d4a10bc7 100644 --- a/lib/ftrsd/ftrsd_paper/fig_wer.gnuplot +++ b/lib/ftrsd/ftrsd_paper/fig_wer.gnuplot @@ -2,18 +2,18 @@ # run: gnuplot fig_wer.gnuplot # then: pdflatex fig_wer.tex # -set term epslatex standalone size 12cm,8cm +set term epslatex standalone size 6in,4in set output "fig_wer.tex" -set xlabel "$E_s/N_o$ (dB)" -set ylabel "WER" +set xlabel "$E_b/N_0$ (dB)" +set ylabel "Word Error Rate" set style func linespoints -set key on top outside nobox +set key off set tics in set mxtics 2 set mytics 10 set grid set logscale y -plot "ftdata-10000.dat" using ($1+29.7):(1-$2) every ::1 with linespoints pt 5 title 'FT-10K', \ - "ftdata-100000.dat" using ($1+29.7):(1-$2) every ::1 with linespoints pt 7 title 'FT-100K', \ - "kvasd-11999.dat" using ($1+29.7):(1-$2) every ::1 with linespoints pt 8 title 'KV-11.999', \ - "bmdata.dat" using ($1+29.7):(1-$2) with linespoints pt 7 title 'BM' +plot [3:9] "ftdata-100000.dat" using ($1+29.1):(1-$2) with linespoints pt 7 title 'FT-100K', \ + "kvasd-11999.dat" using ($1+29.1):(1-$2) with linespoints pt 8 title 'KV-11.999', \ + "bmdata.dat" using ($1+29.1):(1-$2) with linespoints pt 7 title 'BM', \ + "wer.lab" with labels diff --git a/lib/ftrsd/ftrsd_paper/fig_wer.pdf b/lib/ftrsd/ftrsd_paper/fig_wer.pdf new file mode 100644 index 000000000..e1e320423 Binary files /dev/null and b/lib/ftrsd/ftrsd_paper/fig_wer.pdf differ diff --git a/lib/ftrsd/ftrsd_paper/ftrsd.lyx b/lib/ftrsd/ftrsd_paper/ftrsd.lyx index 228f13066..74e90f757 100644 --- a/lib/ftrsd/ftrsd_paper/ftrsd.lyx +++ b/lib/ftrsd/ftrsd_paper/ftrsd.lyx @@ -86,21 +86,20 @@ Steven J. \end_layout \begin_layout Abstract -The JT65 mode has revolutionized amateur-radio weak-signal communication +The JT65 protocol 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 not usable with traditional technologies. A major reason for the success and popularity of JT65 is its use of a strong error-correction code: a short block-length, low-rate Reed-Solomon code based on a 64-symbol alphabet. - Since 2004, most JT65 decoders have used the patented Koetter-Vardy (KV) - algebraic soft-decision decoder, licensed to K1JT and implemented in a - closed-source program for use in amateur radio applications. + Since 2004, most programs implementing JT65 have used the patented Koetter-Vard +y (KV) algebraic soft-decision decoder, licensed to K1JT and implemented + in a closed-source program for use in amateur radio applications. We describe here a new open-source alternative called the Franke-Taylor (FT, or K9AN-K1JT) algorithm. It is conceptually simple, built around the well-known Berlekamp-Massey - errors-and-erasures algorithm, and performs at least as well as the KV - decoder. + errors-and-erasures algorithm, and performs even better than the KV decoder. \end_layout \begin_layout Section @@ -125,18 +124,6 @@ on with a Reed-Solomon code. \begin_inset Formula $(n,k)$ \end_inset -, and the -\begin_inset Quotes eld -\end_inset - -rate -\begin_inset Quotes erd -\end_inset - - of the code is -\begin_inset Formula $k/n$ -\end_inset - . JT65 uses a (63,12) Reed-Solomon code with 64 possible values for each symbol. @@ -146,7 +133,7 @@ rate message bits. The source-encoded messages conveyed by a 63-symbol JT65 frame thus consist - of 72 bits. + of 72 information 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 a codeword of 63 symbols. @@ -439,7 +426,7 @@ nchoosek( \begin_inset Quotes erd \end_inset - in the interpreted language GNU Octave, as well as many free online calculators. + in the interpreted language GNU Octave, as well as many free online calculators The hypergeometric probability mass function defined in Eq. ( \begin_inset CommandInset ref @@ -702,9 +689,9 @@ Example 3 shows how reliable information about symbol quality should make \begin_layout Standard The FT algorithm uses two quality indices made available by a noncoherent 64-FSK demodulator. - The demodulator The demodulator computes the power spectrum for each symbol - and identifies the most likely symbol value based on the largest signal-plus-no -ise power in 64 frequency bins. + The demodulator computes the power spectrum for each symbol and identifies + the most likely symbol value based on the largest signal-plus-noise power + in 64 frequency bins. The fractions of total power in the two bins containing the largest and second-largest powers (denoted by \begin_inset Formula $p_{1}$ @@ -862,12 +849,8 @@ Technically the FT algorithm is a list decoder, potentially generating a \end_inset . - A timeout criterion -\begin_inset Formula $T$ -\end_inset - - is used to limit the algorithm's execution time if no codewords within - soft distance + A timeout is used to limit the algorithm's execution time if no codewords + within soft distance \begin_inset Formula $d_{a}$ \end_inset @@ -930,11 +913,7 @@ If \end_layout \begin_layout Enumerate -If the number of trials is less than -\begin_inset Formula $T$ -\end_inset - -, the maximum allowed number, go to 2. +If the number of trials is less than the maximum allowed number, go to 2. Otherwise, declare decoding failure and exit. \end_layout @@ -952,206 +931,36 @@ best \end_inset has been found. - Declare a successful decode and return this codeword. -\end_layout - -\begin_layout Paragraph -Experience-Based Lists of Candidate Codewords -\end_layout - -\begin_layout Standard -JT65 was designed and developed to facilitate amateur communication via - the Moon as a passive reflector. - Signals propagating over the Earth-Moon-Earth (EME, or -\begin_inset Quotes eld -\end_inset - -moonbounce -\begin_inset Quotes erd -\end_inset - -) path suffer attenuation of order 240 dB or more, so received signals are - always weak. - To be EME-capable an amateur station must have a very sensitive receiver, - reasonably high power, and a reasonably large antenna on a VHF, UHF, or - microwave band. - At a given time the number of stations engaging in this specialized activity - is probably -\begin_inset Formula $M<1000$ -\end_inset - -, world-wide. - EME communications often consist of little more than an exchange of callsigns, - signal reports, and acknowledgments, so most messages being exchanged are - likely to appear in a list no more than a few times -\begin_inset Formula $M^{2}$ -\end_inset - - in length. - Such lists (and subsets thereof) offer potential alternatives to the stochastic - method described above for selecting candidate codewords. - A list of active callsigns can be built up cumulatively from previously - decoded messages. - Candidate codewords derived from the list can be injected into the FT algorithm - at step 5, where the soft distance between the set of received symbols - and the codeword is computed. - A decoder taking advantage of this experience-based approach will have - significant speed and performance advantages over a purely probabilistic - algorithm. - However, it must accept the limitation that these advantages apply only - to messages appearing in the candidate list. - In the open-source program -\shape italic -WSJT-X -\shape default - we generate candidate message lists of several different lengths. - List lengths range from a few times -\family roman -\series medium -\shape up -\size normal -\emph off -\bar no -\strikeout off -\uuline off -\uwave off -\noun off -\color none - -\begin_inset Formula $M$ -\end_inset - - up to about -\begin_inset Formula $M^{2}$ -\end_inset - -. + Declare a successful decode and return this codeword . \end_layout \begin_layout Section -Results and Comparisons +Comparison with Berlekamp-Massey and Koetter-Vardy \end_layout \begin_layout Standard -We measured performance of the Franke-Taylor soft-decision decoder using - simulations with many thousands of signal realizations at a range of calibrated - signal-to-noise ratios (SNRs). - Our first series of tests assumed an ideal additive white Gaussian noise - (AWGN) channel. - The dotted curve in Figure +Comparisons of decoding performance are usually presented in the professional + literature as plots of word error rate as a function of +\begin_inset Formula $E_{b}/N_{0}$ +\end_inset + +, the signal-to-noise ratio per information bit. + Results for the Berlekamp-Massey, Koetter-Vardy, and Franke-Taylor decoding + algorithms on the (63,12) code are shown in Figure \begin_inset CommandInset ref LatexCommand ref -reference "fig:Psuccess" +reference "fig:WER" -\end_inset - - shows the fraction of raw symbols expected to be received incorrectly over - such a channel. - Filled circles and the short-dashed curve illustrate performance of the - hard-decision Berlekamp-Massey algorithm, while filled squares and a solid - curve give results for the FT algorithm with conservative settings for - the timeout parameter -\begin_inset Formula $T$ -\end_inset - - and maximum acceptable soft distance -\begin_inset Formula $d_{a}$ \end_inset . - Note that sensitivity with soft-decision decoding is about 2 dB better - than with hard decisions. - For comparison, open squares and a long-dashed curve show somewhat looser - settings for timeout and soft distance parameters can gain roughly another - 0.4 dB. - At this setting the rate of false decodes is no doubt slightly higher, - though in our simulations it was still found to be -\begin_inset Formula $<10^{-4}$ -\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_psuccess.pdf - lyxscale 150 - scale 150 - -\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 - -Fraction of JT65 messages ( -\begin_inset Quotes eld -\end_inset - -words -\begin_inset Quotes erd -\end_inset - -) successfully decoded as a function of SNR in 2.5 kHz bandwidth, for a non-fadin -g signal in additive white Gaussian noise (AWGN). - BM: hard-decision Berlekamp-Massey decoder; FT-1: soft-decision Franke-Taylor - decoder with -\begin_inset Formula $T=10^{4}$ -\end_inset - -, -\begin_inset Formula $d_{a}=72$ -\end_inset - -, -\begin_inset Formula $h_{max}=42$ -\end_inset - -; FT-2: soft-decision decoder with -\begin_inset Formula $T=10^{5}$ -\end_inset - -, -\begin_inset Formula $d_{a}=76$ -\end_inset - -, -\begin_inset Formula $h_{max}=44$ -\end_inset - -. - algorithms. + For these initial tests we generated 1000 signals at each signal-to-noise + ratio, assuming the additive white gaussian noise (AWGN) channel, and processed + the data using each algorithm. + It's easy to see that, as expected, the soft-decision algorithms FT and + KV are about 2 dB better than the hard-decision BM algorithm, and that + FT has a slight edge (about 0.2 dB) over KV. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - \end_layout \begin_layout Standard @@ -1183,19 +992,11 @@ name "fig:WER" \end_inset Word error rate (WER) as a function of -\begin_inset Formula $E_{s}/N_{o}$ +\begin_inset Formula $E_{b}/N_{0}$ \end_inset for non-fading signals in AWGN. - This is the same data that is shown in Figure -\begin_inset CommandInset ref -LatexCommand ref -reference "fig:Psuccess" - -\end_inset - -, but plotted as the fraction of frames that were not decoded vs symbol - SNR. + \end_layout \end_inset @@ -1208,11 +1009,116 @@ reference "fig:Psuccess" \end_layout +\begin_layout Standard +In the professional literature plots like Figure +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:WER" + +\end_inset + +usually extend downward to even smaller error rates, say +\begin_inset Formula $10^{-6}$ +\end_inset + +or less, because of the importance of error-free transmission. + The circumstances for minimal amateur-radio QSOs are very different, however: + error rates on the order of 0.1, or ever higher, may be acceptable. + In this case the essential information is better presented in a plot like + Figure +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:Psuccess" + +\end_inset + +, which shows the percentage of transmissions copied correctly as a function + of signal-to-noise ratio in a standard bandwidth. + +\end_layout + +\begin_layout Standard +In Figure +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:Psuccess" + +\end_inset + + we have plotted the results of simulations for signal-to-noise ratios +\begin_inset Formula $-30\leq SNR\leq-18$ +\end_inset + + dB, again using 1000 simulated signals for each point. + For each decoding algorithm we include three curves: one for the AWGN channel + and no fading, and two more for Doppler spreads of 0.2 and 1.0 Hz. + (Note that the JT65 symbol rate is about 2.69 Hz; the simulated Doppler + spreads are comparable to those encountered on HF ionospheric paths and + for EME at VHF and lower UHF bands.) +\end_layout + \begin_layout Standard \begin_inset Float figure wide false sideways false -status collapsed +status open + +\begin_layout Plain Layout +\align center +\begin_inset Graphics + filename fig_psuccess.pdf + lyxscale 90 + scale 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 SNR in + 2500 Hz bandwidth. + 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 ( +\begin_inset Quotes eld +\end_inset + +Deep Search +\begin_inset Quotes erd +\end_inset + +) matched-filter algorithm. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard + +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open \begin_layout Plain Layout \align center @@ -1297,6 +1203,40 @@ Word error rate (WER) as a function of \end_layout +\begin_layout Standard +Possible figures: +\end_layout + +\begin_layout Itemize +histogram of +\begin_inset Formula $s$ +\end_inset + + (number of erasures) for successful decodes with HF and EME data +\end_layout + +\begin_layout Itemize +histogram of +\begin_inset Quotes eld +\end_inset + +ntrials +\begin_inset Quotes erd +\end_inset + + (or execution time) +\end_layout + +\begin_layout Itemize +Number of decodes vs. + ntrials +\end_layout + +\begin_layout Itemize +Probability of successful decode vs. + Es/No or S/N in 2500 Hz BW +\end_layout + \begin_layout Itemize other... ? diff --git a/lib/ftrsd/ftrsd_paper/stats_0.0 b/lib/ftrsd/ftrsd_paper/stats_0.0 new file mode 100644 index 000000000..20341d463 --- /dev/null +++ b/lib/ftrsd/ftrsd_paper/stats_0.0 @@ -0,0 +1,27 @@ + SNR Files Sync BM FT Hint Total False BadSync +-------------------------------------------------------- +-18.0 1000 1000 1000 1000 1000 1000 0 0 +-18.5 1000 1000 1000 1000 1000 1000 0 0 +-19.0 1000 1000 1000 1000 1000 1000 0 0 +-19.5 1000 1000 1000 1000 1000 1000 0 0 +-20.0 1000 1000 1000 1000 1000 1000 0 0 +-20.5 1000 1000 1000 1000 1000 1000 0 0 +-21.0 1000 1000 1000 1000 1000 1000 0 0 +-21.5 1000 1000 991 1000 1000 1000 0 0 +-22.0 1000 1000 918 1000 1000 1000 0 0 +-22.5 1000 1000 631 1000 1000 1000 0 0 +-23.0 1000 1000 261 1000 1000 1000 0 0 +-23.5 1000 1000 57 990 1000 1000 0 0 +-24.0 1000 1000 0 925 1000 1000 0 0 +-24.5 1000 1000 0 737 999 999 1 0 +-25.0 1000 999 0 445 989 989 10 1 +-25.5 1000 996 0 191 988 988 8 4 +-26.0 1000 980 0 68 975 975 7 20 +-26.5 1000 953 0 18 945 945 7 47 +-27.0 1000 904 0 3 890 890 8 96 +-27.5 1000 816 0 2 771 771 8 184 +-28.0 1000 722 0 0 625 625 4 278 +-28.5 1000 590 0 0 432 432 8 410 +-29.0 1000 451 0 0 268 268 8 549 +-29.5 1000 355 0 0 146 146 8 645 +-30.0 1000 277 0 0 86 86 6 723 diff --git a/lib/ftrsd/ftrsd_paper/stats_0.2 b/lib/ftrsd/ftrsd_paper/stats_0.2 new file mode 100644 index 000000000..f79909ee8 --- /dev/null +++ b/lib/ftrsd/ftrsd_paper/stats_0.2 @@ -0,0 +1,27 @@ + SNR Files Sync BM FT Hint Total False BadSync +-------------------------------------------------------- +-18.0 1000 998 973 998 998 998 0 2 +-18.5 1000 1000 960 1000 1000 1000 0 0 +-19.0 1000 1000 917 1000 1000 1000 0 0 +-19.5 1000 1000 849 1000 1000 1000 0 0 +-20.0 1000 1000 725 1000 1000 1000 0 0 +-20.5 1000 1000 549 1000 1000 1000 0 0 +-21.0 1000 1000 373 1000 1000 1000 0 0 +-21.5 1000 1000 216 1000 1000 1000 0 0 +-22.0 1000 1000 100 998 1000 1000 0 0 +-22.5 1000 1000 32 998 1000 1000 0 0 +-23.0 1000 1000 12 991 1000 1000 0 0 +-23.5 1000 998 2 958 996 996 2 2 +-24.0 1000 992 0 878 991 991 1 8 +-24.5 1000 986 0 739 981 981 5 14 +-25.0 1000 977 0 533 963 963 14 23 +-25.5 1000 959 0 324 948 948 14 41 +-26.0 1000 930 0 153 921 921 16 70 +-26.5 1000 874 0 51 874 874 12 126 +-27.0 1000 808 0 14 803 803 12 192 +-27.5 1000 716 0 3 688 688 11 284 +-28.0 1000 610 0 1 568 568 9 390 +-28.5 1000 497 0 0 418 418 12 503 +-29.0 1000 399 0 0 293 293 6 601 +-29.5 1000 300 0 0 171 171 6 700 +-30.0 1000 243 0 0 103 103 8 757 diff --git a/lib/ftrsd/ftrsd_paper/stats_1.0 b/lib/ftrsd/ftrsd_paper/stats_1.0 new file mode 100644 index 000000000..9a9d530d7 --- /dev/null +++ b/lib/ftrsd/ftrsd_paper/stats_1.0 @@ -0,0 +1,27 @@ + SNR Files Sync BM FT Hint Total False BadSync +-------------------------------------------------------- +-18.0 1000 998 917 998 998 998 1 2 +-18.5 1000 998 824 998 998 998 0 2 +-19.0 1000 999 695 999 999 999 0 1 +-19.5 1000 999 504 999 999 999 0 1 +-20.0 1000 1000 300 1000 1000 1000 0 0 +-20.5 1000 1000 148 1000 1000 1000 0 0 +-21.0 1000 1000 56 1000 1000 1000 0 0 +-21.5 1000 1000 10 1000 1000 1000 0 0 +-22.0 1000 999 3 995 999 999 0 1 +-22.5 1000 998 0 972 998 998 0 2 +-23.0 1000 997 0 899 993 993 4 3 +-23.5 1000 996 0 758 990 990 6 4 +-24.0 1000 990 0 545 980 980 10 10 +-24.5 1000 981 0 305 969 969 12 19 +-25.0 1000 964 0 128 949 949 17 36 +-25.5 1000 930 0 43 916 916 19 70 +-26.0 1000 870 0 15 850 850 14 130 +-26.5 1000 810 0 4 780 780 11 190 +-27.0 1000 737 0 0 673 673 13 263 +-27.5 1000 632 0 0 531 531 7 368 +-28.0 1000 522 0 0 366 366 11 478 +-28.5 1000 426 0 0 243 243 15 574 +-29.0 1000 332 0 0 150 150 9 668 +-29.5 1000 260 0 0 64 64 10 740 +-30.0 1000 209 0 0 35 35 10 791