Kodowanie kanałów to technika stosowana w komunikacji cyfrowej, która zapewnia odbiór transmisji z minimalnymi błędami lub bez błędów. Różne metody kodowania, które można zastosować, są uzyskiwane przez przeplatanie dodatkowych cyfr binarnych w transmisji. Po zdekodowaniu po stronie odbiorczej transmisję można sprawdzić pod kątem błędów, które mogły wystąpić i w wielu przypadkach naprawić. Innym razem odbiorca po prostu ponownie prosi o przesłanie.
Pomysł na kodowanie kanałów powstał ze względu na nieuniknione występowanie błędów w dowolnym kanale komunikacyjnym. Fale radiowe, sygnały elektryczne, a nawet fale świetlne w kanałach światłowodowych będą miały pewną ilość szumu w medium, a także degradację sygnału występującą na pewnej odległości. Będąc tak powszechnym problemem w komunikacji, liczne teorie, jak sobie z nim radzić, powstały w ramach gałęzi matematyki stosowanej, takich jak teoria informacji i teoria kodowania.
Jedną z powszechnie stosowanych metod jest automatyczne żądanie powtórzenia (ARQ), która polega po prostu na tym, że odbiorca sprawdza transmisję pod kątem błędów i prosi o retransmisję w przypadku wystąpienia. Jest to czasami określane jako wsteczna korekcja błędów. Z drugiej strony kodowanie kanałowe jest techniką korekcji błędów w przód (FEC). Nadawca przygotowuje bity do transmisji za pomocą specjalnego algorytmu zwanego kodem korekcji błędów, który jest następnie dekodowany po stronie odbiorczej. Obie metody są również często stosowane w sposób hybrydowy, co pozwala na naprawę małych błędów transmisji kodem kanału, a większe wymagają pełnej retransmisji.
Pierwsza technika kodowania kanałów została stworzona przez matematyka Richarda Hamminga, który opracował tak zwany kod Hamminga. Był to pierwszy kod korekcji błędów w przód, który pociąga za sobą włączenie do transmisji dodatkowych cyfr binarnych, które są nazywane bitami parzystości. Sprytne obliczenie bitów parzystości na odbierającym końcu transmisji ujawni, czy wystąpiły jakiekolwiek błędy w transmisji, gdzie się one znajdują w ciągu bitów i jak je naprawić, aby odzyskać oryginalną transmisję.
Kod Hamminga należy do rodziny metod kodowania kanałów określanych jako kody blokowe, z których wiele zostało opracowanych przez lata. Kody blokowe zazwyczaj obejmują zebranie bitów w bloki o stałej długości, które są następnie określane jako słowa kodowe. Każde słowo kodowe otrzymuje odpowiednie bity kontrolne do dekodowania przez odbiorcę. Metody kodu blokowego mają tendencję do zwiększania rozmiaru transmisji ze względu na dodawanie bitów w słowie kodowym, co może mieć wpływ na przepustowość kanału.
Inny sposób kodowania kanału jest znany jako kod splotowy. Metody te są znacznie szybsze i mogą kodować strumień bitów o dowolnej długości. Jednym z powszechnie używanych kodów tego typu jest kod Viterbiego, stworzony przez włoskiego matematyka Andrew Viterbi. Wadą tej metody jest to, że wraz ze wzrostem długości kodu splotowego rośnie jego złożoność podczas dekodowania. W wielu przypadkach kody splotowe są używane w połączeniu z kodami blokowymi w tak zwanych połączonych kodach korekcji błędów.