Controllo e correzione degli errori - diegm

Transcript

Controllo e correzione degli errori - diegm
Fondamenti di Informatica - Controllo e correzione degli errori
FONDAMENTI DI INFORMATICA
Prof. PIER LUCA MONTESSORO
Facoltà di Ingegneria
Università degli Studi di Udine
Controllo e correzione degli errori
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
1
Fondamenti di Informatica - Controllo e correzione degli errori
Nota di Copyright
Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright
e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi
inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio,
musica e testo) sono di proprietà dell’autore prof. Pier Luca Montessoro, Università degli
Studi di Udine.
Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca,
scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero
dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di
lucro. In tal caso non è richiesta alcuna autorizzazione.
Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su
supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non
esplicitamente autorizzata per iscritto, a priori, da parte dell’autore.
L’informazione contenuta in queste slide è ritenuta essere accurata alla data della
pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in
progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza
preavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (ivi
incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento
dell’informazione).
In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste
slide.
In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono
mai essere rimossi e devono essere riportati anche in utilizzi parziali.
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
2
Fondamenti di Informatica - Controllo e correzione degli errori
Ridondanza
• La memorizzazione/trasmissione dei
dati è soggetta ad errori
• Si possono aggiungere ai dati
informazioni ridondanti per:
– controllarne la correttezza
– correggere (quando possibile) gli errori
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
3
Fondamenti di Informatica - Controllo e correzione degli errori
Controllo e correzione degli errori
in fase di codifica (o memorizzazione o trasmissione)
dati
f (dati)
CRC
dati
CRC
Nell’esempio:
Cyclic Redundancy Check = f (dati)
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
4
Fondamenti di Informatica - Controllo e correzione degli errori
Controllo e correzione degli errori
in fase di decodifica (o lettura o ricezione)
dati
CRC
f (dati)
CRC
=?
NO
se possibile si correggono
i bit errati, altrimenti si
segnale l’errore
SÌ
i dati ricevuti
sono corretti
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
5
Fondamenti di Informatica - Controllo e correzione degli errori
Alcune tecniche
• Parità
– solo controllo
• Somma di blocco
– controllo e correzione
• Codici polinomiali
– solo controllo
• Codici di Hamming
– controllo e correzione
• Codici a convoluzione
– controllo e correzione
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
6
Fondamenti di Informatica - Controllo e correzione degli errori
Parità
• Ad ogni dato (es. 1 codice ASCII su 7
bit) viene aggiunto un bit tale che il
numero totale di bit a 1 sia sempre pari
(“parità pari”) o sempre dispari (“parità
dispari”)
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
7
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio: parità pari
bit di parità
0111011
1
0000000 0
0000001 1
1001101 0
0111011 1
P = A1 A2 ... An
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
8
Fondamenti di Informatica - Controllo e correzione degli errori
Distanza di Hamming
• Numero minimo di bit in cui differiscono
due parole del codice (dato +
informazione ridondante) valide
• Nella tecnica di parità:
– distanza di Hamming = 2 (almeno due bit
differenti)
– quindi lo schema individua errori singoli e
non doppi
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
9
Fondamenti di Informatica - Controllo e correzione degli errori
Distanza di Hamming
• Distanza di Hamming dell’intero codice:
HD = min { HD di tutte le possibili coppie
di parole del codice }
• Per rilevare k errori HD del codice deve
essere k+1
• Per correggere k errori HD del codice
deve essere 2k+1
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
10
Fondamenti di Informatica - Controllo e correzione degli errori
Somma di blocco
• Opera su blocchi di dati con parità
(detta trasversale o “di riga”, relativa a
ciascun dato)
• Si aggiunge al termine del blocco una
serie di di bit di parità relativi ai bit di
una data posizione in tutti i dati del
blocco (parità longitudinale o “di
colonna”)
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
11
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio: parità pari
bit di parità di riga
0000000 0
0000001 1
1001101 0
0111011 1
0001100 0
1010101 0
1111101 0
1111111 1
0101100 1
bit di parità di colonna
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
12
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio: parità pari
(con errore di lettura e correzione)
0000000 0
0000001 1
1001101 0
0111011 1
0101100 0
1010101 0
1111101 0
1111111 1
0101100 1
errore
0000000 0
0000001 1
1001101 0
0111011 1
0101100 0
1010101 0
1111101 0
1111111 1
0101100 1
errore
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
13
Fondamenti di Informatica - Controllo e correzione degli errori
Codici polinomiali
• Codici adatti nel caso di errori “a burst”
(danneggiano più bit consecutivi)
– Si definisce uno schema di n+1 bit detto
generatore (G), comune a trasmettitore e
ricevitore
– Si aggiungono al messaggio M (lungo k bit)
n bit tali che i k+n bit trasmessi siano
divisibili per G (in aritmetica modulo 2)
Gli r bit aggiunti sono detti FCP (Frame Check
Sequence) o CRC (Cyclic Redundancy Check)
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
14
Fondamenti di Informatica - Controllo e correzione degli errori
Codici polinomiali
• Il calcolo del CRC si basa su alcune
proprietà dell’aritmetica modulo 2:
– non ci sono riporti nelle addizioni
– non ci sono prestiti nelle sottrazioni
– addizioni e sottrazioni sono identiche e
coincidono con l’operazione di EXOR
• Di conseguenza, A + A = 0
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
15
Fondamenti di Informatica - Controllo e correzione degli errori
Divisione modulo 2
• La divisione in aritmetica modulo due
procede come in aritmetica decimale,
ma con EXOR al posto delle sottrazioni
• Il divisore “sta dentro” il dividendo se il
dividendo ha tanti bit quanti il divisore
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
16
Fondamenti di Informatica - Controllo e correzione degli errori
Divisione modulo 2
1011 : 10 = 101
10
-0011
10
-01 resto
il parziale corrente (001) ha meno
bit significativi del divisore:
aggiungo uno zero al quoziente
e “abbasso” un’altra cifra
NOTA: in
generale, il
risultato di una
divisione modulo
due non coincide
con il risultato
della divisione
normale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
17
Fondamenti di Informatica - Controllo e correzione degli errori
Proprietà della divisione modulo 2
M ( x) ⋅ 2
R( x)
= Q( x) +
G ( x)
G ( x)
n
nell’aritmetica modulo
2 la somma di due
numeri uguali dà zero,
quindi:
M ( x) ⋅ 2
R( x)
R( x) R( x)
+
= Q( x ) +
+
G ( x)
G ( x)
G ( x) G ( x)
n
M ( x) ⋅ 2 + R( x)
= Q( x)
G ( x)
n
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
18
Fondamenti di Informatica - Controllo e correzione degli errori
Codici polinomiali
• Sia:
– M(x) il messaggio da trasmettere (su k bit)
– G(x) il numero “generatore” che sarà usato
come divisore (su n+1 bit)
– R(x) il resto (su n<k bit) di M(x)•2n/G(x)
• Si genera la parola di codice appendendo
R(x) al messaggio
• Se il messaggio comprensivo di R(x) è
corretto, la divisione per il numero generatore
deve dare resto zero
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
19
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio
G(x): 101 (quindi CRC su 2 bit, uno in meno dei bit di G(x))
M(x): 1110
bit a zero equivalenti alla moltiplicazione per 2n
verranno sostituiti da R(x) (il CRC)
111000 : 101 = 1101
il quoziente viene
101
ignorato ai fini del calcolo
--del CRC
0100
101
--messaggio con CRC: 111001
00100
101
--M(x) CRC
001
CRC
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
20
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio
ricezione corretta:
111001
esempio di ricezione errata:
100001
111001 : 101 = 1101
101
--0100
101
--00101
101
--000 resto zero: OK
100001 : 101 = 110
101
--00100
101
--00011 resto non zero: errore!
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
21
Fondamenti di Informatica - Controllo e correzione degli errori
Codici polinomiali
• Polinomi generatori standard:
CRC-8:
CRC-16:
CRC-CCITT:
CRC-32:
X8+X2+X1+1 (1 0000 0111)
X16+X15+X2+1 (1 1000 0000 0000 0101)
X16+X12+X5+1
X32+X26+X23+X16+X12+X11+
+X10+X8+X7+X5+X4+X2+X+1
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
22
Fondamenti di Informatica - Controllo e correzione degli errori
Codici di Hamming
• Un semplice codice di Hamming (a 1
bit) aggiunge al messaggio la somma
modulo due delle posizioni dei bit a 1
del messaggio stesso
• Tale somma occupa nel messaggio le
posizioni corrispondenti al peso di ogni
singolo bit della somma stessa
• Consente la correzione di errori singoli
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
23
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio
11 = 1011 +
7 = 0111 +
6 = 0110 +
3 = 0011
-----------------
11
10
9
8
7
6
5
4
3
2
1
1
0
0
x
1
1
0
x
1
x
x
11
10
9
8
7
6
5
4
3
2
1
1
0
0
1
1
1
0
0
1
0
1
1001
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
24
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio
• In ricezione si sommano (modulo 2) le
posizioni in cui ci sono dei bit a 1
– se la somma è zero il messaggio è
(probabilmente) corretto
– se la somma è diversa da zero il valore
ottenuto è la posizione del bit errato (è
infatti il valore - posizione di un bit a 1 che manca o che è di troppo nella
somma)
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
25
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio
11
10
9
8
7
6
5
4
3
2
1
1
0
0
1
1
1
0
0
1
0
1
11 = 1011 +
8 = 1000 +
7 = 0111 +
6 = 0110 +
3 = 0011 +
1 = 0001
----------------0000
messaggio corretto
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
26
Fondamenti di Informatica - Controllo e correzione degli errori
Esempio
11
10
9
8
7
6
5
4
3
2
1
1
0
0
1
0
1
0
0
1
0
1
11 = 1011 +
8 = 1000 +
6 = 0110 +
3 = 0011 +
1 = 0001
----------------0111
errore al bit 7
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
27
Fondamenti di Informatica - Controllo e correzione degli errori
Codici a convoluzione
• Molto utilizzati nella trasmissione dei
dati
• Non sono limitati al singolo blocco di
dato: viene elaborato l’intero flusso
• Si basano su un sistema con memoria
in cui il risultato della decodifica di un
dato è funzione dei dati ricevuti in
precedenza
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2)
28