130 likes | 290 Views
Limiti al trasferimento di informazione. Il tempo necessario per trasmettere dell’informazione dipende da: la velocita’ di “segnalazione†(cioe’ quanto velocemente puo’ cambiare “stato†il mezzo trasmissivo il metodo di codifica usato
E N D
Limiti al trasferimento di informazione • Il tempo necessario per trasmettere dell’informazione dipende da: • la velocita’ di “segnalazione” (cioe’ quanto velocemente puo’ cambiare “stato” il mezzo trasmissivo • il metodo di codifica usato • La “velocita’ di segnalazione” si misura in baud (numero di variazioni di stato per secondo) • Una linea di trasmissione da X baud non trasmette necessariamente X bit al secondo. Ad esempio, se il metodo di codifica permette di rappresentare otto valori diversi, la velocita’ di trasmissione sara’ di 3X bit/sec.
Bit singolo e burst • un canale telefonico tollera meglio gli errori distribuiti uniformemente • perche’ errori singoli hanno effetti simili al rumore di fondo • un canale dati tollera meglio gli errori burst • perche’ impediscono la trasmissione corretta di una quantita’ limitata di frame • i burst sono piu’ difficili da individuare e correggere
Cause di errore • rumore “termico” • rumore causato da interferenze • perdita di sincronizzazione
“Error detection” e “error correction” • l’idea base di tutte le tecniche e’ di aggiungere ridondanza ai dati • Detection significa accorgersi dell’errore di uno o piu’ bit e segnalarlo all’applicazione • Correction significa poter correggere in tempo reale uno o piu’ bit senza che l’applicazione se ne accorga
Codifiche • 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 • 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) • 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’ • error detection, niente correction • se il numero degli errori e’ pari non funziona correttamente • non funziona bene con burst • usa un semplicissimo circuito di generazione e controllo che non richiede buffering
Distanza di Hamming: • numero di bit diversi tra due codeword (ovviamente di dimensioni identiche) • si calcola facendo X-OR bit a bit e contando il numero di 1 nel risultato • se la Hamming distance e’ d occorrono d errori per trasformare un codice in un’altro
Spazio dei codeword • Dato un codeword di n bit vi saranno ovviamente 2n possibili codeword • Di questi 2m saranno “legali” (cioe’ i codeword che si possono trasmettere) e gli altri indicheranno la presenza di errori • 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 • rappresentiamo 1 con 111 e 0 con 000 • n=3, m=1, r=2 • Hamming distance=3 • 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. • 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 100 101 011 010 000 001
In generale... • per riconoscere d errori ci vuole un codice con le configurazioni legali a distanza d+1 • 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 • 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 • facile da calcolare