diff --git a/jtms3.txt b/jtms3.txt index aa95b7a8e..f97ad83a3 100644 --- a/jtms3.txt +++ b/jtms3.txt @@ -12,11 +12,10 @@ sync bits are inserted, spread evenly so as to fall at positions 1, 7, and 43 sync bits. Frame duration is 129 ms. Type 2 messages convey 4 user information bits (report, R+report, RRR, -73) encoded with a (15,4,8) block code, plus a 12-bit CRC for each -callsign, encoded with the Golay (23,12) code. This makes for 15 + -2*23 = 61 information-carrying bits. One dummy bit is added, and the -62 bits are interspersed with 31 sync bits, making a frame of 93 bits -and frame time 46.5 ms. +73) encoded with a (15,4,8) block code, plus an 11-bit CRC derived +from MyCall + HisCall, encoded with the (16,11) extended Hamming code. +This makes for 31 information-carrying bits. They are interspersed +with 31 sync bits, making a frame of 62 bits and frame time 31 ms. 2. Modulation is BPSK at 2000 baud, 24 samples per symbol at 48000 Hz asmple rate. The baseband waveform is built by inserting a tapered @@ -24,21 +23,21 @@ sinc function for each bit, then multiplying by a 1500 Hz sine wave. 3. Receiving - a. Compute real-to-complex windowed FFTs, N=12288 (t=256 ms), - stepped by 128 ms (say). Zap birdies, remove frequency - components outside the range 300 - 2700 Hz, and convert to an - analytic time-domain signal. + a. Compute real-to-complex windowed FFTs, N=16384 (t=341 ms), + stepped by 8k (say). Zap birdies, remove frequency components + outside the range 300 - 2700 Hz, and convert to analytic + time-domain signal. - b. Square the complex signal, cx2=cx*cx, and compute N=12288 FFT of - cx2 (resolution = 3.9 Hz). Look for carrier at 3000 + 2*DF Hz + b. Square the complex signal, cx2=cx*cx, and compute N=8k FFT of + cx2 (resolution = 5.9 Hz). Look for carrier at 3000 + 2*DF Hz +/- 2*Tol. c. If carrier is found, measure frequency f and phase phi. Multiply cx by exp(-twopi*i*f*t - phi) to recover the real baseband signal x() to within a sign ambiguity. - d. Apply matched filter for the Tx pulse shape to x(). (This is just - a rectangular BPF, 500 - 25-- Hz ?) + d. Apply matched filter for the Tx pulse shape to x(). This is + essentially a rectangular BPF, -1000 to +1000 Hz ? e. Establish PSK symbol sync (offset i0, 0 to nsps-1 samples) by finding maximum of Sum(sum*sum) over groups of nsps consecutive samples. @@ -48,18 +47,19 @@ sinc function for each bit, then multiplying by a 1500 Hz sine wave. its 43 positions) and three of the 31-bit sync vector (rotated by 0, 10, 20 of 31). - g. If the best CCF abs(peak) exceeds a specified threshold, the sign - of peak resolves the sign ambiguity. + g. If the best CCF abs(peak) exceeds a specified threshold, the + signal is detected and synchronized. Sign of peak resolves the + sign ambiguity. h. For Type 1 messages: Gather the proper set of 215 information-carrying soft symbols. Form averages using the 9 - extra symbols, reducing the number to 206, and remove + extra symbols, reducing the number to 206; and remove interleaving to re-order the symbols. Then run the fano232 decoder. If decoding fails, add soft symbols into an accumulation array and (if nsum is 2 or more) try decoding the average. - i. For Type 2 messages: Gather the proper set of 62 soft symbols. - Decode Nrpt using an exhaustive search over all possibilities. - For the CRCs, also do exhaustive searches -- and make sure that - the expected values are best (or fall in the top few, anyway). + i. For Type 2 messages: Gather the proper set of 31 soft symbols. + Decode Nrpt using exhaustive search (find peak lag of ccf). For + the CRC, also do an exhaustive search -- and make sure that the + expected value is best (or in the top few, anyway). diff --git a/mainwindow.cpp b/mainwindow.cpp index 1c249c3e3..d6cc94dc0 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,4 +1,4 @@ -//--------------------------------------------------------------- MainWindow +//-------------------------------------------------------------- MainWindow #include "mainwindow.h" #include "ui_mainwindow.h" #include "devsetup.h"