Salta al contenuto
Note per Studenti Esercizio 4 · parola letta dalla memoria con la sindrome di Hamming

Esercizio 4parola letta dalla memoria con la sindrome di Hamming

In questa pagina 5

Testo (svolto in aula, lezione del 2 novembre 2016). Data la parola di dati 0011 10010011\,1001, i bit di controllo memorizzati sono 01110111. Dopo aver memorizzato parola e bit di controllo, si legge dalla memoria e i bit di controllo calcolati sui dati letti risultano 11011101. Qual è la parola di dati letta dalla memoria?


Idea

Non serve rifare la tabella dei dati: basta la sindrome, XOR tra i bit di controllo memorizzati e quelli ricalcolati sui dati letti. Se è diversa da zero, il suo valore è la posizione del bit cambiato (vedi Codifiche binarie e informazione non numericaBit, byte e multipli (potenze di 2 e di 10); codici BCD e Gray; caratteri ASCII, Unicode e UTF-8; ordine dei byte (little e big endian); bit di parità e codice di Hamming per rilevare e correggere errori.Codifiche binarie e informazione non numerica →).

Sindrome

0111⊕1101=1010=100111 \oplus 1101 = 1010 = 10

C'è un errore nel bit in posizione 10.

Quale dato è in posizione 10

Disposizione per m=8m = 8, k=4k = 4 (dati nelle posizioni che non sono potenze di 2, dal meno significativo in posizione 3):

Posizione 3 5 6 7 9 10 11 12
Dato D1D_1 D2D_2 D3D_3 D4D_4 D5D_5 D6D_6 D7D_7 D8D_8

La posizione 10 contiene D6D_6.

Parola letta

Nella parola memorizzata D8…D1=0011 1001D_8 \dots D_1 = 0011\,1001 il bit D6D_6 (terzo da sinistra) vale 1. In lettura è cambiato, quindi vale 0:

parola letta=0001 1001\text{parola letta} = 0001\,1001

Verifica

Ricalcolo dei bit di controllo sulla parola letta 0001 10010001\,1001 (D1=1D_1 = 1, D4=1D_4 = 1, D5=1D_5 = 1, gli altri 0):

  • C1C_1 (posizioni 3, 5, 7, 9, 11) =1⊕0⊕1⊕1⊕0=1= 1 \oplus 0 \oplus 1 \oplus 1 \oplus 0 = 1
  • C2C_2 (posizioni 3, 6, 7, 10, 11) =1⊕0⊕1⊕0⊕0=0= 1 \oplus 0 \oplus 1 \oplus 0 \oplus 0 = 0
  • C4C_4 (posizioni 5, 6, 7, 12) =0⊕0⊕1⊕0=1= 0 \oplus 0 \oplus 1 \oplus 0 = 1
  • C8C_8 (posizioni 9, 10, 11, 12) =1⊕0⊕0⊕0=1= 1 \oplus 0 \oplus 0 \oplus 0 = 1

C8C4C2C1=1101C_8C_4C_2C_1 = 1101 ✓, proprio i bit di controllo calcolati del testo. Il sistema di correzione, invertendo D6D_6, restituisce la parola originale 0011 10010011\,1001.

Versione ripasso

Testo (svolto in aula, lezione del 2 novembre 2016). Data la parola di dati 0011 10010011\,1001, i bit di controllo memorizzati sono 01110111. Dopo aver memorizzato parola e bit di controllo, si legge dalla memoria e i bit di controllo calcolati sui dati letti risultano 11011101. Qual è la parola di dati letta dalla memoria?

Metodo: la sindrome (XOR tra controlli memorizzati e ricalcolati) dà la posizione del bit errato (Codifiche binarie e informazione non numericaBit, byte e multipli (potenze di 2 e di 10); codici BCD e Gray; caratteri ASCII, Unicode e UTF-8; ordine dei byte (little e big endian); bit di parità e codice di Hamming per rilevare e correggere errori.Codifiche binarie e informazione non numerica →).

  1. Sindrome: 0111⊕1101=1010=100111 \oplus 1101 = 1010 = 10: errore in posizione 10.
  2. Dati in 3, 5, 6, 7, 9, 10, 11, 12 =D1…D8= D_1 \dots D_8: la posizione 10 è D6D_6.
  3. Nella parola memorizzata D6D_6 (terzo bit da sinistra) vale 1, letto vale 0.

Parola letta =0001 1001= 0001\,1001. Verifica: sui dati letti C1=1C_1 = 1, C2=0C_2 = 0, C4=1C_4 = 1, C8=1C_8 = 1, cioè 11011101 ✓; invertendo D6D_6 si torna a 0011 10010011\,1001.

Lezioni in cui compare

Teoria collegata