Salta al contenuto
Note per Studenti Esercizio 6 · codice SEC per una parola di 16 bit

Esercizio 6codice SEC per una parola di 16 bit

In questa pagina 5

Testo (svolto in aula, lezione del 2 novembre 2016). Sviluppare un codice SEC (single error correcting) per una parola di dati di 16 bit. Generare il codice per la parola di dati 0101 0000 0011 10010101\,0000\,0011\,1001.


Numero di bit di controllo

2k−1≥16+k2^k - 1 \ge 16 + k: con k=4k = 4, 15<2015 < 20; con k=5k = 5, 31≥2131 \ge 21 ✓. Quindi 5 bit di controllo e 16+5=2116 + 5 = 21 posizioni (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 →).

Tabella delle posizioni

Controllo nelle potenze di 2 (1, 2, 4, 8, 16); i dati riempiono le altre posizioni partendo da destra con il bit meno significativo D1D_1:

Pos. 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
D16D_{16} D15D_{15} D14D_{14} D13D_{13} D12D_{12} C16C_{16} D11D_{11} D10D_{10} D9D_9 D8D_8 D7D_7 D6D_6 D5D_5 C8C_8 D4D_4 D3D_3 D2D_2 C4C_4 D1D_1 C2C_2 C1C_1

Equazioni del codice

Ogni dato entra nei bit di controllo corrispondenti agli 1 della sua posizione in binario (es. D1D_1 in posizione 3=000113 = 00011 entra in C1C_1 e C2C_2):

  • C1=D1⊕D2⊕D4⊕D5⊕D7⊕D9⊕D11⊕D12⊕D14⊕D16C_1 = D_1 \oplus D_2 \oplus D_4 \oplus D_5 \oplus D_7 \oplus D_9 \oplus D_{11} \oplus D_{12} \oplus D_{14} \oplus D_{16} (posizioni dispari)
  • C2=D1⊕D3⊕D4⊕D6⊕D7⊕D10⊕D11⊕D13⊕D14C_2 = D_1 \oplus D_3 \oplus D_4 \oplus D_6 \oplus D_7 \oplus D_{10} \oplus D_{11} \oplus D_{13} \oplus D_{14} (posizioni 3, 6, 7, 10, 11, 14, 15, 18, 19)
  • C4=D2⊕D3⊕D4⊕D8⊕D9⊕D10⊕D11⊕D15⊕D16C_4 = D_2 \oplus D_3 \oplus D_4 \oplus D_8 \oplus D_9 \oplus D_{10} \oplus D_{11} \oplus D_{15} \oplus D_{16} (posizioni 5, 6, 7, 12, 13, 14, 15, 20, 21)
  • C8=D5⊕D6⊕D7⊕D8⊕D9⊕D10⊕D11C_8 = D_5 \oplus D_6 \oplus D_7 \oplus D_8 \oplus D_9 \oplus D_{10} \oplus D_{11} (posizioni 9–15)
  • C16=D12⊕D13⊕D14⊕D15⊕D16C_{16} = D_{12} \oplus D_{13} \oplus D_{14} \oplus D_{15} \oplus D_{16} (posizioni 17–21)

Codice della parola data

D16…D1=0101 0000 0011 1001D_{16} \dots D_1 = 0101\,0000\,0011\,1001, quindi valgono 1 solo D1,D4,D5,D6,D13,D15D_1, D_4, D_5, D_6, D_{13}, D_{15}.

  • C1C_1: tra D1,D2,D4,D5,D7,D9,D11,D12,D14,D16D_1, D_2, D_4, D_5, D_7, D_9, D_{11}, D_{12}, D_{14}, D_{16} sono a 1 D1,D4,D5D_1, D_4, D_5 → tre 1 → C1=1C_1 = 1
  • C2C_2: tra D1,D3,D4,D6,D7,D10,D11,D13,D14D_1, D_3, D_4, D_6, D_7, D_{10}, D_{11}, D_{13}, D_{14} sono a 1 D1,D4,D6,D13D_1, D_4, D_6, D_{13} → quattro → C2=0C_2 = 0
  • C4C_4: tra D2,D3,D4,D8,D9,D10,D11,D15,D16D_2, D_3, D_4, D_8, D_9, D_{10}, D_{11}, D_{15}, D_{16} sono a 1 D4,D15D_4, D_{15} → due → C4=0C_4 = 0
  • C8C_8: tra D5…D11D_5 \dots D_{11} sono a 1 D5,D6D_5, D_6 → due → C8=0C_8 = 0
  • C16C_{16}: tra D12…D16D_{12} \dots D_{16} sono a 1 D13,D15D_{13}, D_{15} → due → C16=0C_{16} = 0

Risultato

C16C8C4C2C1=00001C_{16}C_8C_4C_2C_1 = 00001. Parola memorizzata di 21 bit (posizioni 21 → 1):

0 1 0 1 0  0  0 0 0 0 0 1 1  0  1 0 0  0  1  0 10\,1\,0\,1\,0\ \ 0\ \ 0\,0\,0\,0\,0\,1\,1\ \ 0\ \ 1\,0\,0\ \ 0\ \ 1\ \ 0\,1

cioè D16..D12=01010D_{16}..D_{12} = 01010, C16=0C_{16} = 0, D11..D5=0000011D_{11}..D_5 = 0000011, C8=0C_8 = 0, D4D3D2=100D_4D_3D_2 = 100, C4=0C_4 = 0, D1=1D_1 = 1, C2C1=01C_2C_1 = 01.

Versione ripasso

Testo (svolto in aula, lezione del 2 novembre 2016). Sviluppare un codice SEC (single error correcting) per una parola di dati di 16 bit. Generare il codice per la parola di dati 0101 0000 0011 10010101\,0000\,0011\,1001.

Metodo: Hamming SECBit, 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 →; 2k−1≥16+k2^k - 1 \ge 16 + k: k=4k = 4 dà 15<2015 < 20, k=5k = 5 dà 31≥2131 \ge 21 ⇒\Rightarrow 5 controlli, 21 posizioni.

  1. Controlli in 1, 2, 4, 8, 16; dati nelle altre, D1D_1 in posizione 3 fino a D16D_{16} in 21.
  2. Equazioni (posizioni coperte):
    • C1=D1⊕D2⊕D4⊕D5⊕D7⊕D9⊕D11⊕D12⊕D14⊕D16C_1 = D_1 \oplus D_2 \oplus D_4 \oplus D_5 \oplus D_7 \oplus D_9 \oplus D_{11} \oplus D_{12} \oplus D_{14} \oplus D_{16}
    • C2=D1⊕D3⊕D4⊕D6⊕D7⊕D10⊕D11⊕D13⊕D14C_2 = D_1 \oplus D_3 \oplus D_4 \oplus D_6 \oplus D_7 \oplus D_{10} \oplus D_{11} \oplus D_{13} \oplus D_{14}
    • C4=D2⊕D3⊕D4⊕D8⊕D9⊕D10⊕D11⊕D15⊕D16C_4 = D_2 \oplus D_3 \oplus D_4 \oplus D_8 \oplus D_9 \oplus D_{10} \oplus D_{11} \oplus D_{15} \oplus D_{16}
    • C8=D5⊕⋯⊕D11C_8 = D_5 \oplus \dots \oplus D_{11}; C16=D12⊕⋯⊕D16C_{16} = D_{12} \oplus \dots \oplus D_{16}
  3. I dati a 1 sono D1,D4,D5,D6,D13,D15D_1, D_4, D_5, D_6, D_{13}, D_{15}:
    • C1C_1: D1,D4,D5D_1, D_4, D_5 (tre) →1\to 1; C2C_2: D1,D4,D6,D13D_1, D_4, D_6, D_{13} (quattro) →0\to 0; C4C_4: D4,D15D_4, D_{15} →0\to 0; C8C_8: D5,D6D_5, D_6 →0\to 0; C16C_{16}: D13,D15D_{13}, D_{15} →0\to 0.

C16C8C4C2C1=00001C_{16}C_8C_4C_2C_1 = 00001. Parola di 21 bit: D16..D12=01010D_{16}..D_{12} = 01010, C16=0C_{16} = 0, D11..D5=0000011D_{11}..D_5 = 0000011, C8=0C_8 = 0, D4D3D2=100D_4D_3D_2 = 100, C4=0C_4 = 0, D1=1D_1 = 1, C2C1=01C_2C_1 = 01.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata