Inom telekommunikation är Forward error correction (FEC) en särskild kod för upptäckt och korrigering av fel. Avsändaren lägger till extra bitar till den ursprungliga data som ska skickas — detta kallas redundans. Mottagaren kan med hjälp av redundansen upptäcka fel som uppstått under överföringen och i många fall korrigera dem utan att en ny sändning krävs. FEC används för att öka tillförlitligheten i kanaler där om­sändning är dyr, fördröjande eller omöjlig, till exempel satellit­kommunikation, digital-TV, lagring och realtidsströmning.

Grundläggande principer

  • Kodning: En FEC-kod lägger till kontrollbitar till nyttolasten enligt en bestämd algoritm. Kombinationen av nyttolast och kontrollbitar kallas en kodword.
  • Kodrate: Förhållandet mellan antal nyttobitar och totala bitar (t.ex. 1/2, 3/4). Lägre kodrate ger mer redundans och bättre felkorrigeringsförmåga men ökar bandbreddsbehovet.
  • Systematiska vs icke-systematiska koder: Systematiska koder bevarar de ursprungliga bitarna i kodwordet (lättare att extrahera nyttodata), medan icke-systematiska kan omstrukturera allt för bättre prestanda i vissa konstruktioner.
  • Paritets- och kontrollmatriser: Matematiska representationer (generatormatris och paritets-kontrollmatris) används för kodning och dekodning.
  • Interleaving: Genom att sprida ut bitar över tiden minskar man risken att ett kort störningsutbrott förstör en hel kodword.
  • Mjuk- och hårdbeslut: Dekodare kan använda hårda (=binära) beslut eller mjuka (=sannolikhetsbaserade) beslut; mjuka beslut ger ofta bättre prestanda men ökar komplexiteten.

Vanliga kodtyper

  • Blockkoder: Delar upp data i block och lägger till paritetsbitar för varje block. Exempel: Hamming-koder, Reed–Solomon (används i CD, DVD, QR-koder, hårddiskar).
  • Konvolutionella koder: Behandlar data som en ström och använder minnesberoende kodning. Dekodning görs ofta med Viterbi-algoritmen; vanligt i äldre mobilstandarder och satellitlänkar.
  • Turbo-koder: Iterativa koder som ger nära kapacitetsgräns­prestanda för långa block, användes i 3G-system.
  • LDPC (Low-Density Parity-Check): Moderna iterativa koder med mycket god prestanda och skalbar komplexitet; vanliga i DVB-S2, Wi‑Fi 802.11n/ac/ax och i 5G (för datakanaler).
  • Polarkoder: Nyare klass av koder som används i 5G för vissa kontrollkanaler tack vare god teoretisk prestanda vid långa blockstorlekar.
  • Fountain- och Raptor-koder: Rateless-koder lämpliga för multicast och paketförlusttoleranta applikationer (t.ex. filöverföring över oförutsägbara nätverk).

Prestanda och avvägningar

  • Felprestanda: Mätas ofta som bit error rate (BER) eller frame error rate (FER). FEC ger en "coding gain" som beskriver hur mycket lägre signalstyrka som krävs för samma felnivå.
  • Överföringskostnad: Mer redundans kräver mer bandbredd eller lägre nyttolast, en viktig avvägning mellan tillförlitlighet och kapacitet.
  • Latens och komplexitet: Iterativa dekodare kan ha hög latens och beräkningskostnad, vilket påverkar realtidstillämpningar.
  • Robusthet mot burst-fel: Interleaving och lämpligt kodval minskar risken för att långa intervaller av fel slår ut hela kodwords.

Tillämpningar

  • Satellit- och rymdkommunikation där om­sändning är kostsamt.
  • Digital-TV och radio (DVB, ATSC).
  • Mobila nätverk (3G/4G/5G) och Wi‑Fi där kanalen är brusig och varierande.
  • Lagringsmedia (hårddiskar, SSD, optiska skivor) för att rätta till fysiska läsfel.
  • Videoströmning och VoIP för att bibehålla kvalitet vid paketförluster.
  • IoT- och sensornät där enheter har begränsad möjlighet till om­sändning.

Implementering

FEC kan implementeras i mjukvara eller hårdvara (ASIC/FPGA). Valet styrs av krav på energiförbrukning, latens och genomströmning. För höghastighetslänkar används ofta hårdvaruaccelererade dekodrar; i flexibla system används programvaru­implementeringar som drar nytta av SIMD, GPU eller specialiserade instruktioner.

Sammanfattning: Framåtriktad felkorrigering (FEC) är en grundläggande teknik i modern telekommunikation för att öka tillförlitligheten utan att kräva om­sändning. Genom olika kodtyper och dekodingstekniker balanseras krav på bandbredd, latens, komplexitet och felprestanda beroende på applikationens behov.