gigionismo CodeRilevamento e correzione degli errori con esempi
⚡ Riepilogo intelligente
Il codice di Hamming è un codice lineare di correzione degli errori che aggiunge bit di parità ridondanti in posizioni pari a potenze di due, consentendo a un ricevitore di rilevare errori fino a due bit e di correggere automaticamente qualsiasi errore a singolo bit durante la trasmissione dei dati.

Cos'è un errore?
TransmitI dati trasmessi possono essere corrotti durante la comunicazione. È probabile che vengano influenzati da rumore esterno o altri guasti fisici. In una situazione del genere, i dati di input non possono essere uguali ai dati di output. Questa discrepanza è nota come "errore".
Gli errori nei dati possono causare la perdita di dati importanti o riservati. La maggior parte del trasferimento di dati nei sistemi digitali avviene tramite "trasferimento di bit", e anche una piccola modifica di un singolo bit può influenzare le prestazioni dell'intero sistema. In una sequenza di dati, se un 1 viene trasformato in uno 0, o uno 0 viene trasformato in un 1, si parla di "errore di bit".
Tipi di errori
Esistono principalmente tre tipi di errore di bit che si verificano quando i dati vengono transmitdal mittente al destinatario. Il diagramma seguente illustra come ogni tipo influisce su una sequenza di dati:
- Errori a bit singolo
- Errori multipli su bit
- Errori scoppiati
Errori a bit singolo
Una modifica apportata a un singolo bit nell'intera sequenza di dati è nota come "errore a singolo bit". Il verificarsi di un errore a singolo bit non è molto comune. Si verifica principalmente nei sistemi di comunicazione parallela, perché i dati vengono trasferiti bit per bit su linee separate, quindi c'è una maggiore probabilità che una linea diventi disturbata mentre le altre rimangono pulite.
Errori multipli su bit
Quando due o più bit di una sequenza di dati cambiano tra transmite il ricevitore, è noto come "errore multi-bit".
Questo tipo di errore si verifica sia nelle reti di comunicazione dati seriali che in quelle parallele.
Errori di scoppio
Una modifica a un insieme di bit consecutivi in una sequenza di dati è nota come "errore a raffica". La lunghezza di un errore a raffica viene misurata dal primo bit modificato all'ultimo bit modificato.
Che cosa sono il rilevamento e la correzione degli errori?
Nei sistemi di comunicazione digitale, possono verificarsi errori durante il trasferimento dei dati da un dispositivo all'altro. Se questi errori non vengono rilevati e corretti, i dati vengono persi. Per una comunicazione efficace, i dati devono essere trasferiti con elevata precisione, obiettivo che si raggiunge innanzitutto identificando gli errori e successivamente correggendoli.
Rilevazione errori è un metodo per individuare gli errori presenti nei dati transmitted da un transmitda un ricevitore in un comunicazione dei dati .
I codici di ridondanza vengono utilizzati per trovare questi errori aggiungendo bit extra ai dati quando sono transmitderivati dalla sorgente. Questi bit aggiuntivi sono chiamati "codici di rilevamento degli errori". I tre tipi più comuni di codice di rilevamento degli errori sono:
- Controllo di parità
- Cyclic Redundancy Check (CRC)
- Controllo di ridondanza longitudinale (LRC)
Controllo di parità
- È noto anche come controllo di parità.
- Fornisce un meccanismo economicamente vantaggioso per il rilevamento degli errori.
- In questa tecnica, il bit ridondante aggiunto a ogni unità di dati è noto come bit di parità. Viene impostato in modo che il numero totale di 1 nell'unità risulti pari (parità pari) o dispari (parità dispari).
Controllo di ridondanza longitudinale
In questa tecnica di rilevamento degli errori, un blocco di bit è organizzato in una tabella. Il metodo LRC calcola un bit di parità per ogni colonna e questo insieme di bit di parità viene inviato insieme ai dati originali. Il blocco di bit di parità aiuta il ricevitore a verificare la presenza di ridondanza e a rilevare gli errori.
Controllo di ridondanza ciclico
Il controllo di ridondanza ciclica aggiunge una sequenza di bit ridondanti alla fine dell'unità di dati in modo che l'unità di dati risultante sia esattamente divisibile per un secondo numero binario predeterminato.
A destinazione, i dati in arrivo vengono divisi per lo stesso numero. Se non si ottiene resto, l'unità di dati si considera corretta e viene accettata. In caso contrario, significa che l'unità di dati è stata danneggiata durante la trasmissione e deve essere rifiutata.
Cos'è un Hamming Code?
Il codice di Hamming è un codice lineare utile per rilevare fino a due errori di bit immediati e per correggere errori di singolo bit. La correzione degli errori di questo tipo opera tipicamente a livello di collegamento dati, incapsulando i dati e verificandone l'integrità tra nodi adiacenti.
Nel codice di Hamming, la sorgente codifica il messaggio aggiungendo bit ridondanti. Questi bit ridondanti vengono inseriti e generati in posizioni specifiche del messaggio per eseguire il processo di rilevamento e correzione degli errori.
Storia di Hamming Code
- Il codice di Hamming è una tecnica sviluppata da RW Hamming per rilevare e correggere gli errori.
- Può essere applicato a unità di dati di qualsiasi lunghezza e utilizza la relazione tra bit di dati e bit di ridondanza.
- Hamming si dedicò al problema della correzione degli errori e sviluppò una serie di algoritmi sempre più potenti.
- Nel 1950 pubblicò il codice di Hamming, tuttora ampiamente utilizzato in applicazioni come la memoria ECC.
Applicazioni di Hamming Code
Ecco alcune applicazioni comuni del codice di Hamming:
- satelliti
- Memoria del computer (ECC RAM)
- Modem
- PlasmaCAM
- Connettori aperti
- Filo schermato
- Processori integrati
Vantaggi di Haming Code
- Il codice di Hamming è efficace nelle reti in cui i flussi di dati sono esposti a errori di singolo bit.
- Non solo rileva un errore di bit, ma aiuta anche a identificare il bit che contiene l'errore in modo che possa essere corretto.
- La facilità d'uso dei codici di Hamming li rende particolarmente adatti alla memoria dei computer e alla correzione di singoli errori.
Svantaggi di Hamming Code
- Si tratta di un codice di rilevamento e correzione degli errori a singolo bit. Se vengono rilevati errori in più bit, il risultato potrebbe invertire un altro bit che in realtà era corretto, corrompendo ulteriormente i dati.
- L'algoritmo del codice di Hamming può risolvere solo problemi a singolo bit.
Come codificare un messaggio in Hamming Code
Il processo utilizzato dal mittente per codificare il messaggio prevede le seguenti tre fasi:
- Calcola il numero totale di bit ridondanti.
- Determinare la posizione dei bit ridondanti.
- Calcola il valore di ciascun bit ridondante.
Quando i bit ridondanti sono incorporati nel messaggio, la parola codice completa viene inviata al destinatario.
Passaggio 1) Calcolare il numero totale di bit ridondanti.
Supponiamo che il messaggio contenga n bit di dati e p parti ridondanti, aggiunte in modo che 2p può indicare almeno (n + p + 1) stati diversi.
Qui, (n + p) tiene conto della posizione di un errore in ciascuna delle (n + p) posizioni di bit e uno stato extra indica l'assenza di errore. Poiché p bit di parità possono indicare 2p stati, 2p deve essere almeno uguale a (n + p + 1).
Passaggio 2) Posizionare i componenti ridondanti nelle loro posizioni corrette.
I bit ridondanti p sono posizionati in posizioni di bit che sono potenze di 2, ad esempio 1, 2, 4, 8 e 16. Sono indicati come p1 (nella posizione 1), pag2 (nella posizione 2), pag3 (in posizione 4), e così via.
Passaggio 3) Calcolare il valore di ciascun bit ridondante.
Ogni bit ridondante è un bit di parità che rende il numero di 1 nel suo gruppo pari o dispari. I due tipi di parità sono:
- Parità paritaria: il numero totale di 1 nelle posizioni coperte è pari.
- Parità dispari: il numero totale di 1 nelle posizioni coperte è dispari.
Ciascun bit di parità copre uno specifico insieme di posizioni, determinato dalla rappresentazione binaria dei numeri di posizione:
- p1 Controlla ogni posizione il cui valore binario ha un 1 nel bit meno significativo: posizioni 1, 3, 5, 7, 9, 11 e così via.
- p2 controlla ogni posizione il cui valore binario ha un 1 nel secondo bit da destra: posizioni 2, 3, 6, 7, 10, 11 e così via.
- p3 Controlla ogni posizione il cui valore binario ha un 1 nel terzo bit da destra: posizioni da 4 a 7, da 12 a 15 e così via.
Esempio svolto (7,4): Consideriamo i quattro bit di dati 1011. Sono necessari tre bit di parità (23 = 8 ≥ 4 + 3 + 1), dando una parola codice a sette bit disposta come p1 p2 d1 p3 d2 d3 d4. Posizionando i dati si ottengono le posizioni 3, 5, 6, 7 = 1, 0, 1, 1. Usando la parità pari: p1 copre le posizioni 1, 3, 5, 7 (bit 1, 0, 1 → p1 = 0); p2 copre 2, 3, 6, 7 (bit 1, 1, 1 → p2 = 1); p3 copre 4, 5, 6, 7 (bit 0, 1, 1 → p3 = 0). Il transmitLa parola in codice ted è quindi 0110011.
Come decodificare un messaggio in Hamming Code
Il ricevitore riceve il messaggio in arrivo ed esegue dei ricalcoli per individuare e correggere gli errori. Il processo di ricalcolo si articola nei seguenti passaggi:
- Conta il numero di bit ridondanti.
- Posizionare correttamente tutti i bit ridondanti.
- Eseguire il controllo di parità.
Passaggio 1) Contare il numero di bit ridondanti. Utilizzare la stessa formula usata per la codifica: 2p ≥ n + p + 1, dove n è il numero di bit di dati e p è il numero di bit ridondanti.
Passaggio 2) Posizionare correttamente tutti i bit ridondanti. Ogni bit ridondante si trova in una posizione che è una potenza di 2, ad esempio 1, 2, 4 e 8.
Passaggio 3) Eseguire il controllo di parità. I bit di parità vengono ricalcolati a partire dai bit di dati e dai bit ridondanti ricevuti:
- p1 = parità(1, 3, 5, 7, 9, 11, …)
- p2 = parità(2, 3, 6, 7, 10, 11, …)
- p3 = parità(4–7, 12–15, 20–23, …)
I bit di parità ricalcolati formano insieme un numero binario. Se questo numero è zero, non è presente alcun errore; altrimenti, il suo valore indica la posizione esatta del singolo bit corrotto, che viene quindi invertito per correggere il messaggio.

