The redundancy allows the receiver to detect a limited number of errors that may occur anywhere in the message, and often to correct these errors without retransmission. For example, in the case of a satellite orbiting around Uranus a retransmission because of decoding errors can create a delay of 5 hours. FEC processing in a receiver may be applied to error correction coding for digital communications pdf digital bit stream or in the demodulation of a digitally modulated carrier. The maximum fractions of errors or of missing bits that can be corrected is determined by the design of the FEC code, so different forward error correcting codes are suitable for different conditions.
In general, a stronger code induces more redundancy that needs to be transmitted using the available bandwidth, which reduces the effective bit-rate while improving the received effective signal-to-noise ratio. Claude Shannon answers the question of how much bandwidth is left for data communication while using the most efficient code that turns the decoding error probability to zero. This establishes bounds on the theoretical maximum information transfer rate of a channel with some given base noise level. However, the proof is not constructive, and hence gives no insight of how to build a capacity achieving code. Fortunately, after years of research, some advanced FEC systems nowadays come very close to the theoretical maximum. A redundant bit may be a complex function of many original information bits.
Through a noisy channel, a receiver might see 8 versions of the output, see table below. This allows an error in any one of the three samples to be corrected by “majority vote” or “democratic voting”. Interleaving FEC coded data can reduce the all or nothing properties of transmitted FEC codes when the channel errors tend to occur in bursts. FEC rates, adding more error-correction bits per packet when there are higher error rates in the channel, or taking them out when they are not needed. Convolutional codes work on bit or symbol streams of arbitrary length. A convolutional code that is terminated is also a ‘block code’ in that it encodes a block of input data, but the block size of a convolutional code is generally arbitrary, while block codes have a fixed size dictated by their algebraic characteristics.
Types of termination for convolutional codes include “tail-biting” and “bit-flushing”. This provides single-bit error correction and 2-bit error detection. NOR Flash typically does not use any error correction. Hence classical block codes are often referred to as algebraic codes. Instead, modern codes are evaluated in terms of their bit error rates.
Most forward error correction codes correct only bit-flips, but not bit-insertions or bit-deletions. The fundamental principle of FEC is to add redundant bits in order to help the decoder to find out the true message that was encoded by the transmitter. The code-rate is hence a real number. A low code-rate close to zero implies a strong code that uses many redundant bits to achieve a good performance, while a large code-rate close to 1 implies a weak code.
Interestingly, the redundant bits that protect the information have to be transferred using the same communication resources that they are trying to protect. SNR decreasing the bit error rate, at the cost of reducing the effective data rate. One interesting question is the following: how efficient in terms of information transfer can be a FEC that has a negligible decoding error rate? His proof, unfortunately, relies on Gaussian random coding, which is not suitable of real-world applications. This upper bound given by Shannon’s work set up a long journey in designing FECs that can go close to the ultimate performance boundary. Various codes today can attain almost the Shannon limit.