spandsp: FSK modems

spandsp 0.0.6

FSK modems

# What does it do?

Most of the oldest telephony modems use incoherent FSK modulation. This module can be used to implement both the transmit and receive sides of a number of these modems. There are integrated definitions for:

- V.21
- V.23
- Bell 103
- Bell 202
- Weitbrecht (Used for TDD - Telecoms Device for the Deaf)

The audio output or input is a stream of 16 bit samples, at 8000 samples/second. The transmit and receive sides can be used independantly.

# The transmitter

The FSK transmitter uses a DDS generator to synthesise the waveform. This naturally produces phase coherent transitions, as the phase update rate is switched, producing a clean spectrum. The symbols are not generally an integer number of samples long. However, the symbol time for the fastest data rate generally used (1200bps) is more than 7 samples long. The jitter resulting from switching at the nearest sample is, therefore, acceptable. No interpolation is used.

# The receiver

The FSK receiver uses a quadrature correlation technique to demodulate the signal. Two DDS quadrature oscillators are used. The incoming signal is correlated with the oscillator signals over a period of one symbol. The oscillator giving the highest net correlation from its I and Q outputs is the one that matches the frequency being transmitted during the correlation interval. Because the transmission is totally asynchronous, the demodulation process must run sample by sample to find the symbol transitions. The correlation is performed on a sliding window basis, so the computational load of demodulating sample by sample is not great.

Two modes of symbol synchronisation are provided:

    - In synchronous mode, symbol transitions are smoothed, to track their true
      position in the prescence of high timing jitter. This provides the most
      reliable symbol recovery in poor signal to noise conditions. However, it
      takes a little time to settle, so it not really suitable for data streams
      which must start up instantaneously (e.g. the TDD systems used by hearing
      impaired people).

    - In asynchronous mode each transition is taken at face value, with no temporal
      smoothing. There is no settling time for this mode, but when the signal to
      noise ratio is very poor it does not perform as well as the synchronous mode.