FEC Encoding for AO-40 Telemetry

This page contains information and software for the forward-error-correcting format I am proposing for the AO-40 telemetry system.

Here is the specification for the FEC format. It refers to this CCSDS coding standards document.

Here is the published paper I presented at the 2002 AMSAT Annual Meeting in Ft Worth, Texas. My presentation slides are also available in Open Office format and in Power Point format.

An article by James Miller, G3RUH explains my design with some excellent diagrams. James also shows some small antennas that were used to successfully copy the FEC telemetry.

Demo files

Here are some wav (audio) files that demonstrate the effectiveness of this new format. Each file contains the same telemetry frame, 13 seconds long. The first sound file comes directly from the encoder program, with no added noise or fading. The carrier frequency is 1600 Hz, i.e., this is how the frame sounds on a USB SSB receiver tuned 1600 Hz below the suppressed RF carrier.

And here is the same telemetry frame with simulated fading and noise. The fading envelope is a 1Hz sinusoid, so there are two nulls and two carrier phase reversals per second. After fading, simulated gaussian noise was added to yield an average Eb/No of 7 dB.

There is room for improvement in my prototype demodulator/decoder, but it was still able to fully decode this fading, noisy signal with no uncorrected errors.

Had this frame been sent in the original, unencoded format, decoding it would have been utterly hopeless as a single channel symbol error would have been enough to ruin it. Also, the coherent demodulators usually used would not have been able to track the amplitude fluctuations and frequent carrier phase reversals caused by the fading.

Note: these demo files have been updated to use a transmit filter that matches the actual analog filter on AO-40. When this same filter is used in the receiver, there is significant intersymbol interference (ISI) that degrades performance by 1-2 dB over matched filters that meet the Nyquist criterion. I'm working on a better receiver filter that compromises between minimizing ISI and minimizing noise when used on the AO-40 signal.

Source code

Here is a reference encoder in C, intended as a model for translation into IPS for execution in the AO-40 IHU. This version produces output identical to that from my separately written prototype encoder.

And here is a prototype modulator and demodulator to test and demonstrate this format. This version is rewritten for asynchronous framing as currently used on AO-40. A decoder for the existing uncoded format is also included. (updated 14 July 2003)

The prototype encoder/decoder requires three library packages. These are the Viterbi decoder, simd-viterbi-2.0.3.tar.gz the Reed-Solomon codec, reed-solomon-4.0.tar.gz, and the DSP library dsp-1.0.2.tar.gz.

Last modified: 21 Aug 2007, Phil Karn