The Receiver used in MFSK16 and related modes is probably the most major departure from conventional technology in the whole project. In early advanced MFSK designs such as Piccolo, the receiver used a series of high gain filters, virtually oscillators, which were reset and allowed to generate output that built up during the whole of the following symbol period. This technique leads to very narrow, very sensitive, and very robust receivers for each tone. The output with the greatest response at the end of the symbol period was considered to be the one representing the transmitted data.
The DSP equivalent of this "integrate and dump" technique is the Symbol-synchronous Fast Fourier Transform (FFT), used in such a way that the samples of received audio for the duration of each symbol generates an integrated output similar to the Piccolo integrate and dump technique. The FFT is an excellent way to simulate the integrate and dump filter because it has excellent filter response without ringing, accurate and very stable performance, and its pulse response is a good match for the transmitted data pulses. The outputs are also "soft", i.e. effectively analog numbers, and also contain phase information not available with the Piccolo analog hardware technique.
Let's look at the (much simplified!) block diagram of the MFSK16 receiver. See the top line of the picture down the page a little.
The mixer output is another stream of data samples. It will of course also contain image frequency data, but since the detector is not sensitive to this, the image does not matter.
In fact, the FFT is "windowed" by removing samples that could be in error at the beginning and end of each symbol. These errors are caused by timing variations in the ionosphere, which tend to be frequency selective, so it is very possible for one tone to run into another to some extent, even though they were transmitted one after another.
The number of samples and the speed at which the samples are taken define how many bins there will be, and how widely spaced they are. Bins outside the receiver range are simply ignored, but the central 8, 16 or 32 bins (16 bins in MFSK16, because it has 16 tones) are used to provide data for the data and phase decoders. Both amplitude and phase information is available.
However, since the signal can be mistuned, and can also contain significant ionospheric distortion, signal energy tends to spill over into adjacent bins. This reduces the sensitivity of the system, and of course increases the possibility of error. Tt is possible to weigh the data in a rather different way - each of the data bits expected in the output can potentially be received in half the bins if true, and in the other half if not true. Therefore if you add up the power in all the bins that might contain a tone representing that bit, and subtract the power received from all those that will not contain that bit, then the answer should have a better signal to noise ratio.
No matter which method is used, the output will contain a digital value representing the bits received, and an analog value representing their received strength. This information is valuable to the FEC decoder, and also to any signal strength meter. This is why we call it a "soft decision" decoder - it not only decides the data received, but gives a measure of the accuracy of the measurement.
An additional problem with the interleaver is that it needs to be synchronised with the data, so that it knows which bits to put in the correct order. Synchronising information can be added to the transmitted data, or synchronisation can be inferred by "trial and error", i.e. by seeing how well the FEC decoder copes with a guess, and trying a different guess if the performance is poor.
Both of these approaches are inefficient. In an MFSK mode there is a unique opportunity to provide self-synchronism, not available to other modes. The MFSK16 Interleaver is self-synchronising, because the receiver knows the incoming bit order, at least within each symbol, and it can exactly restore the correct order without outside help. See the Transmitter Description for details.
FEC decoding is much more complex than coding, and consists in effect of guessing the correct answer for every transmitted bit, and working out the history of that bit to see if the guess was viable. The Viterbi technique is very efficient at doing this. Coding experts have expended considerable effort to improve the performance of this highly complex technique.
The MFSK16 FEC Decoder is a soft decoder - in other words, it works with analog numbers, rather than binary bits. This adds a small but significant improvement to the performance, without any great extra processor load, since the highly efficient maths coprocessor is used. Utilising the analog numbers from the Soft Decision Decoder also adds a valuable performance improvement.
The output of the FEC decoder is a bit stream at half the input rate. The data is not perfect, especially if the received signal was very poor, but the number of errors is dramatically reduced. The data comes out of the FEC decoder in bursts, which is why the text appears on the screen a few characters at a time. If the length of the decoder is increased, the error reduction capabilities increase, but so also does the delay, and the output of the longer decoder decodes more characters at a time, but in slower bursts.
Each individual receiver channel will contain occasional pulses of energy as a Symbol is received, and the transition between one channel and another will not occur at the correct point in the Symbol period if the receiver Symbol clock is incorrect. It is possible to detect these transitions and thus work out the error in the Symbol Clock phase, and thereby correct it.
It is also possible to analyse the shape of the pulses (once they have passed through the ionosphere and the receiver they are no longer square in shape) and determine from the shape where the symbols are. This is done using a 'sliding FFT" technique, where several FFT solutions are made in the time of one symbol. If the sum of the energy in all receiver channels is analysed, the characteristic shape is found and can be used to synchronise the Symbol Clock.
The MFSK16 signal is a continuous phase (CPFSK) transmission, where every symbol starts and ends at the same phase. Using the phase information from the FFT detector, it is possible to discover the error in the Symbol Clock because only when the Symbol Clock phase is correct will the phases of all the FFT detector outputs coincide. If the phase is incorrect, the individual buckets will contain energy of only partial symbols, and the phase is different for each bucket as the frequency is increased. The direction of change of phase per bucket can be used to deduce which way the Clock phase is in error.