Kanal kodlaması, dijital iletişimde, iletimin minimum veya hatasız olarak alınmasını sağlamak için kullanılan bir tekniktir. Kullanılabilecek çeşitli kodlama metotları, aktarıma ilave ikili sayılar birleştirilerek elde edilir. Alıcı uçta kod çözüldüğünde, iletim gerçekleşmiş olabilecek hatalar için kontrol edilebilir ve çoğu durumda onarılabilir. Diğer zamanlarda, alıcı sadece iletimi tekrar ister.
Kanal kodlamanın arkasındaki fikir, herhangi bir iletişim kanalı türünde hataların kaçınılmaz olması nedeniyle geliştirilmiştir. Fiber optik kanallar üzerindeki radyo dalgaları, elektrik sinyalleri ve hatta ışık dalgaları ortada bir miktar parazite ve ayrıca bir mesafeden oluşan sinyalin bozulmasına neden olur. İletişimde böylesine yaygın bir sorun olan, bilgi teorisi ve kodlama teorisi gibi uygulamalı matematiğin dalları altında geliştirilebilecek çok sayıda teori var.
Yaygın olarak kullanılan bir yönteme otomatik tekrarlama talebi (ARQ) denir; bu alıcıyı sadece iletimi hatalar için kontrol etmeyi ve yeniden iletimi talep etmeyi gerektirir. Bu bazen geriye doğru hata düzeltme olarak adlandırılır. Kanal kodlaması ise ileriye doğru bir hata düzeltme (FEC) tekniğidir. Gönderici, bitleri bir hata düzeltme kodu olarak bilinen özel bir algoritma kullanarak iletim için hazırlar ve daha sonra alıcı uçta çözülür. Her iki yöntem de sık sık karma bir şekilde kullanılır, iletimdeki küçük hataların bir kanal koduyla onarılmasını sağlar ve ana hataların tam bir yeniden iletimi gerektiren büyük hatalara neden olur.
İlk kanal kodlama tekniği, Hamming kodu olarak bilinen şeyi geliştiren Richard Hamming adlı bir matematikçi tarafından yaratıldı. Bu, iletimde parite bitleri adı verilen ek ikili rakamların dahil edilmesini gerektiren ilk ileri hata düzeltme koduydu. İletimin alıcı ucundaki parite bitlerinin akıllıca hesaplanması, iletimde bit dizisinde bulundukları herhangi bir hata olup olmadığını ve orijinal iletimi kurtarmak için nasıl tamir edileceğini ortaya çıkarır.
Hamming kodu, yıllar içinde birçoğu geliştirilen blok kodları olarak adlandırılan kanal kodlama yöntemleri ailesine girer. Blok kodları tipik olarak bitleri sabit uzunluklu bloklar halinde toplanır ve bunlar daha sonra kod kelimeleri olarak adlandırılır. Her kod kelimesine alıcı tarafından kod çözme için uygun kontrol bitleri verilir. Blok kod yöntemleri, kanal word'ün bant genişliği üzerinde bir etkisi olabilecek kod kelimesinde eklenen bitler nedeniyle aktarımın boyutunu arttırma eğilimindedir.
Başka bir kanal kodlama yöntemi evrişimli kod olarak bilinir. Bu yöntemler çok daha hızlıdır ve herhangi bir uzunlukta bir bit akışını kodlayabilir. Bu tipte yaygın olarak kullanılan kodlardan biri İtalyan matematikçi Andrew Viterbi tarafından oluşturulan Viterbi kodudur. Bu yöntemin dezavantajı, evrişimli kodun uzunluğu arttıkça kod çözme sırasında karmaşıklığı da artar. Birçok durumda, evrişimli kodlar birleştirilmiş hata düzeltme kodları olarak bilinen şeyde blok kodlarıyla birlikte kullanılır.


