La codifica del canale è una tecnica utilizzata nelle comunicazioni digitali per garantire la ricezione di una trasmissione con errori minimi o nulli. I vari metodi di codifica che possono essere impiegati sono ottenuti intrecciando ulteriori cifre binarie nella trasmissione. Quando decodificata sul lato ricevente, la trasmissione può essere controllata per errori che potrebbero essersi verificati e, in molti casi, riparati. Altre volte, il destinatario chiede semplicemente di nuovo la trasmissione.
L’idea alla base della codifica del canale è stata sviluppata a causa dell’inevitabile esistenza di errori su un determinato tipo di canale di comunicazione. Le onde radio, i segnali elettrici e persino le onde luminose sui canali in fibra ottica avranno una certa quantità di rumore sul supporto, nonché la degradazione del segnale che si verifica a una certa distanza. Essendo un problema così comune nelle comunicazioni, numerose teorie su come affrontarlo si sono sviluppate in rami della matematica applicata come la teoria dell’informazione e la teoria dei codici.
Un metodo comunemente usato è chiamato richiesta di ripetizione automatica (ARQ), che prevede semplicemente che il destinatario controlli la trasmissione per errori e chieda la ritrasmissione in caso di necessità. Questo è talvolta indicato come correzione degli errori all’indietro. La codifica del canale, d’altra parte, è una tecnica di correzione degli errori in avanti (FEC). Il mittente prepara i bit per la trasmissione utilizzando uno speciale algoritmo noto come codice di correzione degli errori, che viene quindi decodificato sul lato ricevente. Entrambi i metodi sono spesso utilizzati anche in modo ibrido, consentendo di riparare piccoli errori nella trasmissione con un codice di canale, con errori maggiori che richiedono una ritrasmissione completa.
La prima tecnica di codifica dei canali è stata creata da un matematico di nome Richard Hamming, che ha sviluppato il cosiddetto codice di Hamming. Questo è stato il primo codice di correzione degli errori in avanti, che comporta l’inclusione di ulteriori cifre binarie nella trasmissione che sono chiamate bit di parità. Un calcolo intelligente dei bit di parità all’estremità ricevente della trasmissione rivelerà se si sono verificati errori nella trasmissione, dove si trovano nella stringa di bit e come ripararli per recuperare la trasmissione originale.
Il codice di Hamming rientra nella famiglia dei metodi di codifica dei canali denominati codici a blocchi, molti dei quali sono stati sviluppati nel corso degli anni. I codici a blocchi in genere implicano che i bit vengano raccolti in blocchi di lunghezza fissa, che vengono quindi denominati parole di codice. Ad ogni parola di codice vengono assegnati i bit di controllo appropriati per la decodifica da parte del destinatario. I metodi a codice a blocchi tendono ad aumentare le dimensioni della trasmissione a causa dei bit aggiunti nella parola di codice, che possono avere un effetto sulla larghezza di banda del canale.
Un altro metodo di codifica del canale è noto come codice convoluzionale. Questi metodi sono molto più veloci e possono codificare un flusso di bit di qualsiasi lunghezza. Un codice comunemente usato di questo tipo è chiamato codice di Viterbi, creato dal matematico italiano Andrew Viterbi. Lo svantaggio di questo metodo è che all’aumentare della lunghezza del codice convoluzionale, aumenta anche la sua complessità durante la decodifica. In molti casi, i codici convoluzionali vengono utilizzati in combinazione con i codici a blocchi nei cosiddetti codici di correzione degli errori concatenati.