Controllo degli errori

Su tutti gli elementi della catena, ed in particolare sul canale, agiscono fenomeni esterni aleatori (detti Rumore o genericamente Disturbi) che alterano il corretto funzionamento della trasmissione. Verrà definita Probabilità di errore di un canale il rapporto tra il numero di segnali alterati e il totale dei segnali trasmessi: in genere è un valore molto basso.
Utilizzando la tecnica della Ridondanza è possibile ridurre la probabilità di errore di un canale. La ridondanza consiste nell'aggiungere un certo numero di bit al messaggio in modo da aiutare il ricevitore a riconoscere una comunicazione ed eventualmente a ricostruire il messaggio corretto, senza chiederne la ritrasmissione.

Non è possibile portare a zero la probabilità di errore di un canale soggetto a disturbi.

Controllo di Parità
Il trasmettitore aggiunge ad ogni carattere un bit in coda, alto o basso, in modo da rendere Pari il numero di bit alti, con un semplice circuito combinatorio

  • se, durante il trasferimento, un bit viene alterato, il ricevitore riconosce l'errore dalla mancanza di parità e rifiuta il messaggio (ad esempio chiedendone la ritrasmissione).

  • se subiscono alterazioni un numero pari di bit, il ricevitore accetta il dato come corretto.

Ovviamente l'errore potrebbe interessare anche gli stessi bit di parità. Talvolta viene utilizzato il controllo di parità Dispari, che non prevede la sequenza composta da tutti bit bassi.

Controllo di Parità Incrociata
In aggiunta alla parità orizzontale sul singolo carattere, viene aggiunta un'intera codifica al termine di un pacchetto di lunghezza fissata.
Ogni bit della codifica aggiunta è stato calcolato con il controllo di parità su tutti i bit di ugual posto del pacchetto.

  • se un solo bit del pacchetto viene alterato, il ricevitore riconosce la riga e la posizione dell'errore e ricostruisce il bit errato negandolo.

  • se due o più bit vengono modificati, il ricevitore riconosce l'errore senza poterlo correggere e chiede la ripetizione del messaggio.

  • solo se quattro bit si alterano "a rettangolo" il ricevitore non riconosce l'errore e accetta il messaggio. 

Controllo Polinomiale (Cyclic Redundant Codes)
Gli N bit di un intero pacchetto di caratteri sono considerati come i coefficienti di un polinomio P(x) da dividere per un polinomio G(x), detto Polinomio Generatore, formato da una sequenza prestabilita di M bit:

  1. agli N bit del pacchetto vengono aggiunti M-1 zeri;

  2. il polinomio ottenuto viene diviso per il polinomio generatore (utilizzando un'aritmetica "modulo 2", cioè non considerando i prestiti);

  3. gli M-1 bit del resto così ottenuto (il grado del polinomio resto è inferiore a quello divisore) sono accodati agli N bit del pacchetto e trasmessi sul canale;

  4. il ricevitore esegue la divisione del pacchetto ottenuto per G(x): se il resto è nullo, presume che non vi siano stati errori, viceversa c'è sicuramente qualche bit alterato e il pacchetto è rifiutato. 

Scegliendo opportunamente il polinomio generatore, il metodo risulta molto affidabile, poiché scavalcheranno il controllo solo i disturbi che creano un errore esattamente multiplo di G(x).

Tecnica di Hamming
Questo metodo aggiunge più bit ridondanti a ciascun carattere, in modo da poter verificare e correggere un solo bit errato, e almeno verificare il caso di due bit errati sul singolo carattere. Ovviamente la migliorata efficienza nel controllo degli errori si paga con un notevole rallentamento nella trasmissione delle informazioni. 
Consideriamo ad esempio un codice a 4 bit c3 c2 c1 c0 :

  1. calcoliamo tre bit di parità p2 su c3 c1 c0, p1 su c3 c2 c0 , p0 su c3 c2 c1;

  2. trasmettiamo la sequenza dei sette simboli p2 p1 p0 c3 c2 c1 c0;

  3. il ricevitore ricalcola i tre bit di parità e li confronta con quelli ricevuti: 

  • p2 e p1 errati indicano un errore su c0

  • p2 e p0 errati indicano un errore su c1 

  • p1 e p0 errati indicano un errore su c2

  • p2 p1 e p0 errati indicano un errore su c3  
    (in questi casi il ricevitore ricostruisce il messaggio negando il bit errato)

  • se i bit coincidono, si presume che il messaggio sia corretto;

  • ogni altro risultato del confronto indica che c'è un errore non recuperabile: il messaggio viene rifiutato.