Bit singolo e burst u un canale che trasmette voce tollera bene gli errori distribuiti uniformemente –perche’ errori singoli hanno effetti simili al rumore di fondo u un canale dati tollera meglio gli errori burst, cioe’ una sequenza di errori vicini –perche’ impediscono la trasmissione corretta di una quantita’ limitata di frame (frame e’ un’insieme di bit che vengono trattati come un solo pacchetto) u i burst sono piu’ difficili da individuare e correggere
Cause di errore u rumore “termico” u rumore causato da interferenze u perdita di sincronizzazione
“Error detection” e “error correction” u l’idea base di tutte le tecniche e’ di aggiungere ridondanza ai dati u Detection significa accorgersi di errori di uno o piu’ bit e segnalarli all’applicazione u Correction significa poter correggere in tempo reale uno o piu’ bit senza che l’applicazione se ne accorga
Codifiche u La ridondanza e’ aggiunta codificando i dati da trasmettere e decodificandoli all’arrivo –codifica puo’ significare sia aggiungere dei bit che completamente cambiare i dati
Block code u i block code aggiungono a ogni frame o parte di frame, es. ad ogni carattere, dei bit di ridondanza –terminologia coerente con il testo: m bit di dati, r bit di ridondanza (check bit), n bit totali, i dati codificati, di lunghezza n=r+m bit, si chiamano codeword
Parita’ (esempio di block code) u il codice piu’ semplice e meno costoso –aggiunge un bit che rende la sequenza di bit pari (o dispari), cioe’ richiede solo un bit in piu’ u error detection, niente correction u se il numero degli errori e’ pari non funziona correttamente –non funziona bene con burst u usa un semplicissimo circuito di generazione e controllo che non richiede buffering
Distanza di Hamming: u numero di bit diversi tra due codeword (ovviamente di dimensioni identiche) u si calcola facendo X-OR bit a bit e contando il numero di 1 nel risultato u se la Hamming distance e’ d occorrono d errori per trasformare un codice in un’altro
Spazio dei codeword u Dato un codeword di n bit vi saranno ovviamente 2 n possibili codeword u Di questi 2 m saranno “legali” (cioe’ i codeword che si possono trasmettere) e gli altri indicheranno la presenza di errori u Meno sono i codeword legali rispetto all’insieme dei codeword, piu’ e’ possibile riconoscere e correggere errori –la semplice parita’ aggiunge solamente un codice illegale per ciascun codice legale, quindi molti errori multipli “vanno a cadere” su codici legali
Correzione di errore, esempio u rappresentiamo 1 con 111 e 0 con 000 –n=3, m=1, r=2 –Hamming distance=3 u se trasmettiamo 000 e la linea introduce 1 bit di errore i codici possibili sono tre: –ciascuno di questi codici e’ a distanza 1 dal codice corretto e a distanza 2 dal codice legale non corretto –SE assumiamo che ci sia stato un bit di errore possiamo correggere ciascuno di questi codeword a 000 –MA se ci sono due bit di errore la correzione e’ sbagliata!
Correzione di errore, esempio cont. u se trasmettiamo 000 e la linea introduce 2 bit di errore i codici possibili sono tre: –questi codici illegali sono piu’ vicini al codice sbagliato che a quello giusto –sappiamo che c’e’ stato un errore (di uno o due bit) ma non possiamo correggerlo correttamente a meno di essere sicuri che un errore di 2 bit ha probabilita’ bassa
Numero minimo di bit u Supponiamo di voler correggere errori di 1 bit (n bit totali, m dati, r controllo) –Ciascuna parola legale avra’ n parole illegali vicine che si ottengono cambiando 1 bit della parola legale: quindi le configurazioni sono n+1 per ciascuna delle 2 m configurazioni legali –Quindi: (n+1) 2 m <= 2 n Se n = m+r (m + r + 1) <= 2 r Fissato m viene fissato il limite inferiore di r per correggere errori di un bit
Bit necessari per correggere errori di 1 bit u Un codice che soddisfa questa tabella si puo’ trovare con l’algoritmo di Hamming
In generale... u per riconoscere d errori ci vuole un codice con le configurazioni legali a distanza d+1 u per correggere d errori ci vuole un codice con le configurazioni legali a distanza 2d+1 –nell’esempio precedente la distanza e’ 3 e quindi si possono riconoscere 2 errori o correggere 1 errore
CRC u Error detecting –bit singolo –quasi tutti gli errori doppi –un numero dispari qualunque di errori –burst al massimo lunghi quanto il “grado” del generatore, tipicamente –burst molto lunghi se distribuiti casualmente u facile da calcolare