Un metodo per il rilevamento degli errori: la tecnica del Bit di Parità



Documenti analoghi
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

4 3 4 = 4 x x x 10 0 aaa

La somma. Esempio: Il prodotto. Esempio:

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

= 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

Interesse, sconto, ratei e risconti

Dimensione di uno Spazio vettoriale

SISTEMI DI NUMERAZIONE E CODICI

Esercizi su. Funzioni

( x) ( x) 0. Equazioni irrazionali

ESEMPIO 1: eseguire il complemento a 10 di 765

IGiochidiArchimede-SoluzioniBiennio 22 novembre 2006

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

1. PRIME PROPRIETÀ 2

I sistemi di numerazione

QUANTIZZAZIONE diverse fasi del processo di conversione da analogico a digitale quantizzazione

FUNZIONE ESPONENZIALE e INTERESSE COMPOSTO. Ipotizziamo di avere a nostra disposizione all'inizio del primo anno (tempo in ascissa

Matematica generale CTF

Interesse, sconto, ratei e risconti

Il calcolo letterale per risolvere problemi e per dimostrare

FASCI DI RETTE. scrivere la retta in forma esplicita: 2y = 3x + 4 y = 3 2 x 2. scrivere l equazione del fascio di rette:

Reti di calcolatori ed indirizzi IP

CRITERI DI CONVERGENZA PER LE SERIE. lim a n = 0. (1) s n+1 = s n + a n+1. (2) CRITERI PER LE SERIE A TERMINI NON NEGATIVI

Forze come grandezze vettoriali

Il concetto di valore medio in generale

Esercizi su lineare indipendenza e generatori

Probabilità discreta

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Rappresentazione delle informazioni

Consideriamo due polinomi

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Guida all uso di Java Diagrammi ER

Analisi e diagramma di Pareto

COMPLEMENTI SULLE LEGGI FINANZIARIE

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 11

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

SCHEDA DI RECUPERO SUI NUMERI RELATIVI

Dispense di Informatica per l ITG Valadier

Codifica dei numeri negativi

I SISTEMI DI NUMERAZIONE

da chi proviene un messaggio?

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Indice. 1 Introduzione alle Equazioni Differenziali Esempio introduttivo Nomenclatura e Teoremi di Esistenza ed Unicità...

Codifica binaria dei numeri relativi

LA MOLTIPLICAZIONE IN CLASSE SECONDA

Calcolatori: Algebra Booleana e Reti Logiche

ESERCIZIO NUMERO 1 ESERCIZIO NUM. 2

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma

Appunti sulla Macchina di Turing. Macchina di Turing

FAQ sui solleciti RED pag. 1/5

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

Teoria dei Giochi. Anna Torre

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

Ai fini economici i costi di un impresa sono distinti principalmente in due gruppi: costi fissi e costi variabili. Vale ovviamente la relazione:

Verifica della correttezza formale del numero di partita IVA

Sistema per il monitoraggio della Spesa Sanitaria


Macroeconomia, Esercitazione 2.

Convertitori numerici in Excel

2) Codici univocamente decifrabili e codici a prefisso.

Corso di Laurea in Informatica Architetture degli Elaboratori

Economia Applicata ai sistemi produttivi Lezione II Maria Luisa Venuta 1

Epoca k Rata Rk Capitale Ck interessi Ik residuo Dk Ek 0 S 0 1 C1 Ik=i*S Dk=S-C1. n 0 S

CALCOLO COMBINATORIO

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Funzioni. Parte prima. Daniele Serra

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario?

Laurea Specialistica in Informatica

Algoritmi e strutture dati. Codici di Huffman

USO DI EXCEL CLASSE PRIMAI

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

1 Probabilità condizionata

4. Operazioni aritmetiche con i numeri binari

Edited by Foxit PDF Editor Copyright (c) by Foxit Software Company, 2004 For Evaluation Only.

APPLICAZIONI LINEARI

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Ventilazione del locale di carica carrelli elevatori

LA GRAFICA E LA GEOMETRIA OPERATIVA

Tutorial: Stratificazioni dei muri in Revit Architecture

Traccia di soluzione dell esercizio del 25/1/2005

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Capitolo 1 - Numerazione binaria

Operatori logici e porte logiche

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI

Informatica. Rappresentazione dei numeri Numerazione binaria

Il mercato assicurativo: selezione avversa, fallimenti del mercato, menù di contratti, assicurazione obbligatoria

La dispersione cromatica, Caratterizzazione e cause

Sistema per il monitoraggio della Spesa Sanitaria

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00

Esercitazione Informatica I AA Nicola Paoletti

Probabilità condizionata: p(a/b) che avvenga A, una volta accaduto B. Evento prodotto: Evento in cui si verifica sia A che B ; p(a&b) = p(a) x p(b/a)

Transcript:

Appunti: Tecniche di rilevazione e correzione degli errori 1 Tecniche di correzione degli errori Le tecniche di correzione degli errori sono catalogabili in: metodi per il rilevamento degli errori; metodi per il rilevamento e la correzione degli errori. Vedremo un metodo di rilevazione degli errori, quello basato sul bit di parità, ed uno di correzione degli errori rilevati, il codice Hamming. Un metodo per il rilevamento degli errori: la tecnica del Bit di Parità Sia dunque A l entità mittente di un messaggio M comto da 8 bit: M = m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 e B l entità ricevente. Si vuol vedere come l entità B, una volta ricevuto il messaggio M spedito da A, sa essere sicura della sua bontà (correttezza del messaggio). La tecnica del bit di parità consiste nell aggiungere al messaggio da trasmettere un bit p, chiamato appunto bit di parità, in modo tale da rendere pari (o dispari, il discorso è simmetrico) il numero degli 1 presenti nel messaggio spedito. Indicando con: M: Messaggio che l entità A intende spedire; p: bit di parità. MS: Messaggio Spedito; avremo che MS = Mp. L entità ricevente B all arrivo del messaggio MS controllerà il numero degli 1 presenti nello stesso: se tale numero è pari, vuol dire che il messaggio è arrivato in modo corretto, per cui escluderà il bit di parità e farà suo il messaggio M; se, invece, il numero degli 1 è dispari, allora capirà che il messaggio arrivato è errato, quindi chiederà nuovamente la trasmissione di MS all entità A. Ma come fa l entità emittente a determinare correttamente il bit di parità? E in che modo l entità ricevente conta il numero di bit uguali ad 1 presenti nel messaggio spedito? Cerchiamo di capire con due esempi: Sia M = 00110110; per cui il numero di 1 presenti nel messaggio = 4, numero pari. Il bit di parità dovrà essere 0 perché, lo ricordiamo, il numero di 1 nel messaggio spedito MS deve essere pari. L entità emittente calcola il bit di parità effettuando un XOR tra tutti i bit

2 Appunti: Tecniche di rilevazione e correzione degli errori del messaggio M, ovvero: p = m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 dove: m 1 = 0 m 2 = 0 m 3 = 1 m 4 = 1 m 5 = 0 m 6 = 1 m 7 = 1 m 8 = 0 per cui: p= 0 0 1 1 0 1 1 0 = 0 Il messaggio spedito è quindi: MS = Mp = 001101100 Ora B riceve il messaggio e, per rilevare la sua esattezza, effettua un XOR tra tutti i bit di MS, ovvero: m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 p Il risultato non potrà che essere 0 o 1. Ove esso fosse 0 indicherebbe che MS è arrivato correttamente, altrimenti rileverebbe un errore. Supponiamo che il messaggio sia arrivato correttamente, l operazione effettuata da B sarebbe: 0 0 1 1 0 1 1 0 0 = 0 Supponiamo, invece, che il messaggio arrivi in modo errato. Se, per esempio m 6 cambiasse il suo stato da 1 a 0, avremmo una situazione di questo tipo: MS=001101000 questo è il bit errato. questo è il bit di parità. indica messaggio giusto per cui l operazione effettuata da B sarebbe: 0 0 1 1 0 1 0 0 0 = 1 da cui si ricava che c è stato un errore. indica messaggio errato Vediamo un secondo esempio: Sia M = 11010110; per cui il numero di 1 presenti nel messaggio = 5, numero dispari. Da quanto detto risulta che il bit di parità dovrà essere 1. L entità emittente calcola il bit di parità effettuando un XOR tra tutti i bit del messaggio M, ovvero: p = m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8

Appunti: Tecniche di rilevazione e correzione degli errori 3 dove: m 1 = 1 m 2 = 1 m 3 = 0 m 4 = 1 m 5 = 0 m 6 = 1 m 7 = 1 m 8 = 0 per cui: p= 1 1 0 1 0 1 1 0 = 1 Il messaggio spedito è quindi: MS = 110101101 questo è il bit di parità. Ora B riceve il messaggio e, per rilevare la sua esattezza, effettua un XOR tra tutti i bit di MS, ovvero: m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 p Supponiamo che il messaggio arrivi correttamente, l operazione effettuata da B sarebbe: 1 1 0 1 0 1 1 0 1 = 0 Supponiamo, invece, che il messaggio arrivi in modo errato. Se, per esempio, proprio il bit di parità cambiasse il suo stato da 1 a 0, avremmo una situazione di questo tipo: MS=110101100 questo è il bit errato. indica messaggio giusto per cui l operazione effettuata da B sarebbe: 1 1 0 1 0 1 1 0 0 = 1 da cui si ricava che c è stato un errore. indica messaggio errato Alcune considerazioni: questo metodo permette di rilevare un errore, non di correggerlo; la correzione dell errore avviene mediante la ritrasmissione del messaggio; il to occupato dal bit di parità nel messaggio MS può essere uno qualsiasi, l importante è che sia A che B conoscano la sua izione nel messaggio inviato; questo metodo introduce un bit aggiuntivo al messaggio vero e proprio; tutti i metodi di correzione e rilevazione degli errori aggiungono una serie di informazioni aggiuntive rispetto al dato di origine;

4 Appunti: Tecniche di rilevazione e correzione degli errori se, nella trasmissione di un dato, cambiano 2 bit, o comunque un numero pari di bit, il metodo fallisce poiché, B controllando l esattezza del messaggio, ottiene come risultato 0, come mostra l esempio che segue. Riprendiamo l esercizio precedente dove il messaggio spedito è: MS = 110101101 questo è il bit di parità. Supponiamo che cambino i valori di due bit e precisamente m 1 ed m 2 che invertono il loro stato da 1 a 0. Si ottiene che: MS = 000101101 questi sono i 2 bit errati. L operazione di controllo effettuata da B è dunque: 0 0 0 1 0 1 1 0 1 = 0 indica messaggio giusto da cui si ricava, erroneamente, che non c è stato errore nella trasmissione.

Appunti: Tecniche di rilevazione e correzione degli errori 5 Un metodo per il rilevamento e la correzione degli errori: il Codice di Hamming Questo metodo raggiunge l'obiettivo prefissato mediante la trasmissione di un numero di bit maggiore rispetto al bit di parità; ovvero, per ogni byte il codice di Hamming genera un frame comto da 12 bit. Dato un messaggio M da inviare, il procedimento da applicare per ottenere il frame MS effettivamente trasmesso, consiste nel sistemare i bit su di una griglia di 12 izioni, dove le izioni in cui l'indice è potenza di 2 sono occupate dai bit di controllo, mentre tutte le altre ospitano ordinatamente i bit del messaggio M. Vediamo subito un esempio: Sia M = 10110110 con: m 1 = 1 m 2 = 0 m 3 = 1 m 4 = 1 m 5 = 0 m 6 = 1 m 7 = 1 m 8 = 0 La stringa da trasmettere sarà la seguente: 1 2 3 4 5 6 7 8 9 10 11 12 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 h 1 h 2 m 1 h 3 m 2 m 3 m 4 h 4 m 5 m 6 m 7 m 8 2 0 =1 2 1 =2 2 2 =4 2 3 =8 Figura 1: Codice Hamming Osservando la figura 1 si può notare che per ogni byte da spedire il codice di Hammnig utilizza 4 bit di controllo: h 1 h 2 h 3 h 4 nelle izioni 1, 2, 4 e 8; il codice è quindi completato dai bit del messaggio. Nella seconda riga della stessa figura sono mostrati i valori binari delle izioni occupabili dai bit; si noti che tutte le izioni occupate dai bit controllori hanno un solo 1 in tale valore binario, mentre tutte le izioni occupate dai bit controllati, i bit del messaggio, hanno almeno due 1. Vediamo ora come si determinano i valori dei bit di controllo. Il bit h 1 si trova in izione 1 (valore binario 0001) della stringa del codice Hamming. Esso controlla tutti i bit che nel valore binario della izione occupata hanno un 1 in quarta izione incominciando da sinistra, ovvero: h 1 controlla m 1, izione 0011 m 2, izione 0101 m 4, izione 0111 m 5, izione 1001 m 7, izione 1011 Il bit h 2 si trova in izione 2 (valore binario 0010) della stringa del codice Hamming. Esso controlla tutti i bit che nel valore binario della

6 Appunti: Tecniche di rilevazione e correzione degli errori izione occupata hanno un 1 in terza izione incominciando da sinistra, ovvero: h 2 controlla m 1, izione 0011 m 3, izione 0110 m 4, izione 0111 m 6, izione 1010 m 7, izione 1011 Il bit h 3 si trova in izione 4 (valore binario 0100) della stringa del codice Hamming. Esso controlla tutti i bit che nel valore binario della izione occupata hanno un 1 in seconda izione incominciando da sinistra, ovvero: h 3 controlla m 2, izione 0101 m 3, izione 0110 m 4, izione 0111 m 8, izione 1100 Il bit h 4 si trova in izione 8 (valore binario 1000) della stringa del codice Hamming. Esso controlla tutti i bit che nel valore binario della izione occupata hanno un 1 in prima izione incominciando da sinistra, ovvero: h 4 controlla m 5, izione 1001 m 6, izione 1010 m 7, izione 1011 m 8, izione 1100 Nel codice così costruito ogni bit del messaggio da spedire, M, è controllato dal almeno due bit di controllo. I valori dei bit di controllo si ottengono mediante un operazione di XOR tra tutti i bit controllati, per cui avremo che: h 1 = m 1 m 2 m 4 m 5 m 7 = 1 0 1 0 1 = 1 h 2 = m 1 m 3 m 4 m 6 m 7 = 1 1 1 1 1 = 1 h 3 = m 2 m 3 m 4 m 8 = 0 1 1 0 = 0 h 4 = m 5 m 6 m 7 m 8 = 0 1 1 0 = 0 Si ricava, quindi, il seguente codice Hamming: MS = 111001100110 dove in neretto sono individuati i bit di controllo. L entità che riceve il frame verifica la sua bontà mediante un controllo che si basa sull XOR tra tutti i bit controllati con il proprio bit controllore determinando le somme S i, così come mostrato negli esempi che seguono. Dal valore delle somme S i dipende la correttezza del messaggio; i casi sibili sono due; ovvero: 1. messaggio corretto! tutti gli S i sono uguali a 0;

Appunti: Tecniche di rilevazione e correzione degli errori 7 2. messaggio errato! esiste almeno un S i uguale a 1. In tal caso i valori delle quattro somme S 4 S 3 S 2 S 1 indicano la izione del bit errato. Allo scopo vediamo tre esempi in cui si verificano i seguenti eventi: 1. frame arrivato in modo esatto; 2. frame arrivato in modo errato perché è cambiato un bit del messaggio (bit controllato); 3. frame arrivato in modo errato perché è cambiato un bit controllore. Esempio1: Frame arrivato in modo esatto L'entità che riceve il frame determina le somme S i che seguono: S 1 = h 1 m 1 m 2 m 4 m 5 m 7 = 1 1 0 1 0 1 = 0 S 2 = h 2 m 0 m 2 m 3 m 5 m 6 = 0 0 1 1 1 1 = 0 S 3 = h 3 m 1 m 2 m 3 m 7 = 0 0 1 1 0 = 0 S 4 = h 4 m 4 m 5 m 6 m 7 = 0 0 1 1 0 = 0 indica messaggio giusto Come volevasi dimostrare: tutti gli S i sono uguale a 0, per cui il frame è arrivato in modo corretto. Esempio2: Frame arrivato in modo errato, cambia un bit controllato Supponiamo che il frame arrivi in modo errato; per esempio, m 7 inverta il suo stato da 1 a 0; otterremmo che l'entità ricevente leggerà il seguente messaggio: MS = 111001100100 questo è il bit errato. L entità che riceve verifica l esattezza del messaggio calcolando i valori di S 1, S 2, S 3 e S 4, ovvero: S 1 = h 1 m 1 m 2 m 4 m 5 m 7 = 1 1 0 1 0 0 = 1 S 2 = h 2 m 1 m 3 m 4 m 6 m 7 = 1 1 1 1 1 0 = 1 S 3 = h 3 m 2 m 3 m 4 m 8 = 0 0 1 1 0 = 0 S 4 = h 4 m 5 m 6 m 7 m 8 = 0 0 1 0 0 = 1 Il bit errato è quindi quello che si trova nella izione: S 4 S 3 S 2 S 1 = (1011) 2, = (11) 10

8 Appunti: Tecniche di rilevazione e correzione degli errori (l undicesima izione) del codice Hamming. In quella izione si trova proprio m 7 ; per cui, per ottenere il messaggio corretto, basterà invertire il bit della izione numero 11, da 0 a 1. La tecnica del Codice di Hamming ha consentito, dunque, di: rilevare un errore, visto che almeno un valore S i ha assunto valore 1 correggere l errore, effettuando il complemento a 1 del bit rilevato errato; ovvero quel bit indicato dalla sequenza S 4 S 3 S 2 S 1 Esempio3: Frame arrivato in modo errato: cambia un bit controllore Vediamo un ulteriore esempio, e supponiamo che cambi proprio un bit di controllo, per esempio h 4 (da 0 a 1) to nell ottava izione del codice Hamming, ottenendo in output la seguente stringa: MS = 111001110110 questo è il bit errato. L entità che riceve, verifica l esattezza del messaggio calcolando i valori di S 0, S 1, S 2 e S 3, ovvero: S 1 = h 1 m 1 m 2 m 4 m 5 m 7 = 1 1 0 1 0 1 = 0 S 2 = h 2 m 1 m 3 m 4 m 6 m 7 = 1 1 1 1 1 1 = 0 S 3 = h 3 m 2 m 3 m 4 m 8 = 0 0 1 1 0 = 0 S 4 = h 4 m 5 m 6 m 7 m 8 = 1 0 1 1 0 = 1 Il bit errato è quindi quello che si trova nella izione: S 4 S 3 S 2 S 1 = (1000) 2, = (8) 10 (l ottava izione) del codice Hamming. In quella izione si trova proprio h 4, per cui, per ottenere il byte corretto, basterà trascurare il bit sbagliato, visto che era un bit di controllo e non un bit del messaggio. Il byte giusto sarà, quindi, quello che si otterrà eliminando tutti i bit di controllo; ovvero: 10110110

Appunti: Tecniche di rilevazione e correzione degli errori 9 Esercizio 4 Determinare il Codice di Hamming del seguente byte: 00001111 m1 = 0 m2 = 0 m3 = 0 m4 = 0 m5 = 1 m6 = 1 m7 = 1 m8 = 1 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 h1 h2 m1 h3 m2 m3 m4 h4 m5 m6 m7 m8 0 0 0 0 1 1 1 1 h1 = m1 m2 m4 m5 m7 = 0 0 0 1 1 = 0 h2 = m1 m3 m4 m6 m7 = 0 0 0 1 1 = 0 h3 = m2 m3 m4 m8 = 0 0 0 1 = 1 h4 = m5 m6 m7 m8 = 1 1 1 1 = 0 Per cui, il Codice di Hamming è quello che segue: 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 H1 H2 M1 H3 M2 M3 M4 H4 M5 M6 M7 M8 0 0 0 1 0 0 0 0 1 1 1 1 Ora, supponiamo che durante la trasmissione vari il bit m6; per cui avremo che: 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 H1 H2 M1 H3 M2 M3 M4 H4 M5 M6 M7 M8 0 0 0 1 0 0 0 0 1 0 1 1 m1 m2 m4 m5 m7 h1 = 0 0 0 1 1 0 = 0 m1 m3 m4 m6 m7 h2 = 0 0 0 0 1 0 = 1 m2 m3 m4 m8 h3= 0 0 0 1 1 = 0 m5 m6 m7 m8 h4 = 1 0 1 1 0 = 1 Il bit sbagliato è, quindi, quello in izione 1010; ovvero, proprio m6. Si otterrà quindi il giusto byte effettuando il complemento a 1 del bit m6 che da 0 diventerà 1 ed eliminando i bit di controllo si otterrà il byte che si voleva trasmettere; ovvero: 00001111.