Bit singolo e burst u un canale che
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) ui 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 ui 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: 001 010 100 – 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: 011 110 101 – 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 111 110 101 010 001
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 2 d+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 10 -30 – burst molto lunghi se distribuiti casualmente u facile da calcolare
- Slides: 14