Che cos'è la codifica dei canali?
La codifica dei canali è una tecnica utilizzata nelle comunicazioni digitali per garantire che una trasmissione venga ricevuta con errori minimi o nulli. I vari metodi di codifica che possono essere impiegati si ottengono intrecciando cifre binarie aggiuntive nella trasmissione. Quando viene decodificato sull'estremità ricevente, la trasmissione può essere verificata per errori che possono essersi verificati e, in molti casi, riparata. Altre volte, il destinatario chiede semplicemente di nuovo la trasmissione.
L'idea alla base della codifica dei canali è 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 mezzo, così come il degrado del segnale che si verifica a una certa distanza. Essendo un problema così comune nelle comunicazioni, numerose teorie su come affrontarlo si sono sviluppate sotto 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 qualora si verifichi. Questo viene talvolta definito correzione dell'errore all'indietro. La codifica dei canali, 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 sull'estremità ricevente. Entrambi i metodi sono spesso utilizzati in modo ibrido, consentendo di riparare piccoli errori nella trasmissione con un codice di canale, con errori importanti 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 dell'errore diretto, che comporta l'inclusione di ulteriori cifre binarie nella trasmissione che sono chiamate bit di parità. Un calcolo intelligente dei bit di parità sull'estremità ricevente della trasmissione rivelerà se si sono verificati errori nella trasmissione, dove si trovano nella stringa di bit e come ripararli per ripristinare la trasmissione originale.
Il codice Hamming rientra nella famiglia dei metodi di codifica dei canali indicati come codici a blocchi, molti dei quali sono stati sviluppati nel corso degli anni. I codici a blocchi generalmente implicano che i bit vengano raccolti in blocchi di lunghezze fisse, che vengono quindi denominate parole in codice. A ogni parola in codice vengono forniti i bit di controllo appropriati per la decodifica da parte del destinatario. I metodi del codice a blocchi tendono ad aumentare la dimensione della trasmissione a causa dei bit aggiunti nella parola del codice, che può avere un effetto sulla larghezza di banda del canale.
Un altro metodo di codifica dei canali è 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 il codice 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 in quelli che sono noti come codici concatenati di correzione degli errori.