A 16-bit word is coded in modified error correcting Hamming code and after that is stored into a cell of the main memory. After some time a program reads the cell and the following word is read into the memory data register:
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1
Perform all operations, which the error correcting hardware does to analyze the word and to detect/correct the possible error.
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1
21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Pall
Pnew1 = CW1 + CW3 + CW5 + CW7 + CW9 + CW11 + CW13 + CW15 + CW19 + CW21=
1+ 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0=1
Pnew2 =CW2 + CW3 + CW6 + CW7 + CW10 + CW11 + CW14 +
CW15 + CW18+ CW19=
1+ 1 + 1 + 1 + 0 + 0+ 0+0+ 1+0=1
Pnew3= CW4 + CW5 + CW6 +CW7 + CW12 + CW13 + CW14 +
CW15 + CW20+ CW21=
1+ 0+1 + 1+ 0+ 0+ 0+ 0+ 0+0=1
Pnew4= CW8 + CW9 +CW10 +CW11 + CW12 + CW13 +CW14+ CW15=
0+ 0 +0 + 0+0 + 0 + 0+ 0=0
Pnew5= CW16 + CW17 +CW18 + CW19 + CW20 +CW21 =
0 + 0 +1 + 0 +0 + 0=1
Pallreceived = Pallcalc
Pallreceived is equal to Pallcalc, but the Pnew5 doesn't equal to "0" at position 16 which it should. So, would this be correct or not?
Any suggestions?