CiM-550 IP Enabled Satellite Modem

Rev. 2

Forward Error Correction

CD/CIM550.IOM

A fixed computational clock is used to process input symbols, and to search backwards and forwards in time to determine the correct decoding path. At lower data rates there are sufficient number of computational cycles per input symbol to permit the decoding process to perform optimally. However, as the data rate increases, there are fewer cycles available, leading to a reduction in coding gain. This is clearly illustrated in the performance curves which follow. For data rates above ~1 Mbps, Viterbi should be considered the better alternative.

Table 7-2. Sequential Decoding Summary

FOR

AGAINST

Higher coding gain (1 -2 dB) at

Pronounced threshold effect - does not

lower data rates, compared to

fail gracefully in poor Eb/No conditions.

Viterbi.

 

 

Higher processing delay than Viterbi

 

(~4 k bits) - not good for low-rate coded

 

voice.

 

 

 

Coding gain varies with data rate - favors

 

lower data rates.

7.4TURBO PRODUCT CODEC (OPTION)

Turbo coding is an FEC technique developed within the last few years, which delivers significant performance improvements compared to more traditional techniques. Unlike the popular method of concatenating a Reed-Solomon codec with a primary FEC codec, Turbo Coding is an entirely stand-alone method. It does not require the complex interleaving/de-interleaving of the RS approach, and consequently, decoding delays are significantly reduced - see below.

Two general classes of Turbo Codes have been developed, Turbo Convolutional Codes (TCC), and Turbo Product Codes (TPC, a block coding technique). TCC suffers from an irreducible BER of approximately 1 x 10-7, and consequently, a Reed-Solomon codec has to be added in order to achieve an acceptably low BER. For delay-sensitive applications this may be unacceptable, and the implementation complexity of the TCC approach is high. For these reasons Comtech EF Data has chosen to implement an FEC codec based on TPC.

A Turbo Product Code is a 2 or 3 dimensional array of block codes. Encoding is relatively straightforward, but decoding is a very complex process requiring multiple iterations of processing for maximum performance to be achieved.

93