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 omsändning är dyr, fördröjande eller omöjlig, till exempel satellitkommunikation, 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änsprestanda 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 omsä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 omsä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 programvaruimplementeringar 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 omsändning. Genom olika kodtyper och dekodingstekniker balanseras krav på bandbredd, latens, komplexitet och felprestanda beroende på applikationens behov.