Tech moves fast! Stay ahead of the curve with Techopedia!
Join nearly 200,000 subscribers who receive actionable tech insights from Techopedia.
Forward error correction (FEC) is a digital signal processing technique used to enhance data reliability. It does this by introducing redundant data, called error correcting code, prior to data transmission or storage. FEC provides the receiver with the ability to correct errors without a reverse channel to request the retransmission of data.
The first FEC code, called a Hamming code, was introduced in the early 1950s. It is a method adopted to obtain error control in data transmission where the transmitter sends redundant data. Only a portion of the data without apparent errors is recognized by the receiver. This allows broadcasting data to be sent to multiple destinations from a single source.
Forward error coding is also known as channel coding.
FEC adds redundancy to transmitted information using a predetermined algorithm. The redundant bits are complex functions of the original information bits. Bits are sent multiple times, because an error may appear in any of the samples transmitted. FEC codes generally detect the last set of bits to determine the decoding of a small handful of bits.
With FAC, each character is sent two or three times, and the receiver checks instances of each character. It is accepted only if conformity occurs in both instances. If conformity is satisfied for an instance, the character conforming to the protocol is accepted. If no characters conform to the protocol, the character is rejected and an underscore or blank is displayed in its place.
FEC codes are capable of generating bit error rate signals, which are used as feedback to fine-tune the analog receiving electronics. The maximum number of missing bits that can be corrected is determined by the FEC code design. Two important categories of FEC codes are convolutional codes and block codes. The block codes work on fixed-size packets of bits where the partial code blocks are decoded in polynomial time to the block length. A widely used block code is Reed-Solomon coding. Convolutional codes deal with streams of arbitrary length and are decoded using a Viterbi algorithm. An important feature of convolutional code is that any bit encoding is influenced by the preceding bits.