Controllo e correzione degli errori

Controllo e correzione degli errori

Il segnale inviato attraverso un canale può essere soggetto a rumore elettrico, interferenze che possono causare errori  alterando il messaggio rendendolo incomprensibile al ricevente o, peggio ancora, con un contenuto informativo differente da quello inviato dal mittente.
Immaginiamo di dover accendere e spegnere un faro a distanza, la cosa più semplice da fare è inviare:

  • 1 per accendere
  • 0 per spegnere

accendi faro
Ma durante la trasmissione si può verificare un errore ossia:

  • 1 viene trasformato in 0

uno in zero
oppure

  • 0 viene trasformato in 1

zero viene trasformato in uno
In questi casi il ricevitore non è in grado di accorgersi che si è verificato un errore, perché tutte e due le parole sono valide.

È necessario introdurre un sistema che ci consenta di individuare la presenza di una situazione come quella descritta, in modo da accorgerci che l’informazione pervenuta è errata prima che possa provocare qualche “disastro”. Sono possibili due approcci per la risoluzione del problema:

  • l’errore viene corretto
  • l’errore viene solamente rilevato.

Per fare questo si aggiungono al contenuto dei dati trasmessi delle informazioni ridondanti  per garantire la corretta informazione. Ad esempio neca so precedente se indichiamo con :

  • 11  accendere
  • 00 spegnere

e si verifica un errore su singolo bit al destinatario può arrivare una delle seguenti parole:

  • 10 
  • 01

le quali non sono parole valide.
In generale dati m bit di dati e r bit ridondanti (aggiunti per il controllo dell’errore), si ottiene un blocco complessivo di n bit (n = m + r),  che corrisponde alla sequenza di bit trasmessa sul canale. l codici di controllo degli errori si basano sul seguente principio:

  • i bit di ridondanza fanno si che non vengano utilizzate tutte le possibili codeword
  • delle 2n possibili codeword:
    • 2m saranno valide  
    • le altre indicheranno la presenza di errori.

Meno sono le codeword valide, rispetto all’insieme di tutte le possibili, più è possibile riconoscere e/o correggere gli errori.
Esempio Prendiamo una sequenza di n = 2 bit: questa può assumere : 2n = 22 = 4 differenti configurazioni:

00, 01, 10, 11.

Se tutte e 4 queste configurazioni sono usate come dati validi, un errore trasformerà una parola valida in un’altra altrettanto valida, rendendo così impossibile rilevare l’errore. Aggiungendo alla sequenza originale un bit di ridondanza in modo da rendere pari il numero di 1, si ottengono 23 = 8 configurazioni (codeword) di cui solo 4 valide. Nella tabeIla sono elencate, per ogni codeword valida, le codeword errate risultanti da un errore singolo.

Stati Validi 000 011 101 110
Stati di Errore 001 010 100 111
Stati di Errore 010 001 111 100
Stati di Errore 100 111 001  010

Leave a Reply


Latest Posts

AAA