Hva er kanalkoding?
Kanalkoding er en teknikk som brukes i digital kommunikasjon for å sikre at en overføring mottas med minimale eller ingen feil. De forskjellige kodingsmetodene som kan benyttes oppnås ved å flette inn flere binære sifre i transmisjonen. Ved dekoding på mottaksenden kan overføringen sjekkes for feil som kan ha oppstått og i mange tilfeller reparert. Andre ganger ber mottakeren ganske enkelt om overføringen igjen.
Ideen bak kanalkoding ble utviklet på grunn av den uunngåelige eksistensen av feil på en gitt type kommunikasjonskanal. Radiobølger, elektriske signaler og til og med lysbølger over fiberoptiske kanaler vil ha en viss mengde støy på mediet, så vel som degradering av signalet som oppstår over en viss avstand. Å være et så vanlig problem i kommunikasjon, mange teorier for hvordan man skal takle det har utviklet seg under grener av anvendt matematikk som informasjonsteori og kodingsteori.
En ofte brukt metode kalles automatisk gjentakelsesforespørsel (ARQ), som ganske enkelt innebærer at mottakeren sjekker overføringen for feil og ber om overføring dersom noe skulle skje. Dette blir noen ganger referert til som feilrettelse bakover. Kanalkoding er derimot en FEC-teknikk (forward error correction). Avsenderen forbereder bitene for overføring ved bruk av en spesiell algoritme kjent som en feilrettingskode, som deretter avkodes på mottaksenden. Begge metodene blir også ofte brukt på en hybrid måte, noe som gjør det mulig å reparere små feil i overføringen med en kanalkode, med store feil som krever fullstendig overføring.
Den første kanalkodingsteknikken ble laget av en matematiker som heter Richard Hamming, som utviklet det som er kjent som Hamming-koden. Dette var den første fremtidige feilrettingskoden, som innebærer inkludering av ytterligere binære sifre i overføringen som kalles paritetsbiter. En smart beregning av paritetsbitene på den mottakende enden av overføringen vil avdekke om det har oppstått noen feil i overføringen, hvor de er i strengen med biter, og hvordan du kan reparere dem for å gjenopprette den opprinnelige sendingen.
Hamming-koden faller inn i familien av kanalkodingsmetoder som kalles blokkkoder, hvorav mange har blitt utviklet gjennom årene. Blokkoder involverer typisk at bitene blir samlet inn i blokker med fast lengde, som deretter blir referert til som kodeord. Hvert kodeord får de aktuelle kontrollbiter for dekoding av mottakeren. Blodkodemetoder har en tendens til å øke størrelsen på overføringen på grunn av de ekstra bitene i kodeordet, noe som kan ha en effekt på kanalens båndbredde.
En annen kanalkodingsmetode er kjent som en konvolusjonskode. Disse metodene er mye raskere og kan kode en bitstrøm av hvilken som helst lengde. En ofte brukt kode av denne typen kalles Viterbi-koden, laget av den italienske matematikeren Andrew Viterbi. Ulempen med denne metoden er at når lengden på den omviklingskoden øker, blir kompleksiteten ved avkoding det også. I mange tilfeller brukes konvolusjonskoder i kombinasjon med blokkkoder i det som er kjent som sammenlagte feilrettingskoder.