Method and apparatus for error management
To derive a Hamming code to manage data errors a set of at least four parity bit positions is selected for parity bits which will protect a set of data bits (where each data bit has a data bit position in the data bit set). A syndrome is determined for each data bit position. This involves selecting a unique sub-set of at least three parity bit positions. The unique sub-set shares at least one parity bit position with at least one other unique sub-set of at least three parity bit positions. A parity bit value may then be calculated for each parity bit position based on the determined syndromes. The header of a packet may be provided with a word which defines the length of the packet and an error management code generated utilizing this word so that errors in the word may be detected and, possibly, corrected.
1. A parity bit generator for generating at least eight parity bits {P 0 , P 1 , P 2 . . . P 7 } corresponding to 64 data bits {D 0 , D 1 , D 2 . . . D 63 }, comprising:
at least one electronic logic circuit configured to calculate said parity bits as follows:
P 7 =D 63 ^D 62 ^D 61 ^D 60 ^D 59 ^D 58 ^D 57 ^D 56 ^D 55 ^D 54 ^D 53 ^D 52 ^D 51 ^D 50 ^D 49 ^D 48 ^D 43 ^D 42 ^D 41 ^D 40 ^D 39 ;
P 6 =D 63 ^D 62 ^D 61 ^D 60 ^D 59 ^D 58 ^D 47 ^D 46 ^D 38 ^D 37 ^D 36 ^D 35 ^D 34 ^D 33 ^D 32 ^D 31 ^D 30 ^D 29 ^D 28 ^D 27 ^D 26 ^D 25 ^D 24 ;
P 5 =D 63 ^D 57 ^D 56 ^D 55 ^D 54 ^D 53 ^D 45 ^D 44 ^D 38 ^D 37 ^D 36 ^D 35 ^D 34 ^D 23 ^D 22 ^D 21 ^D 19 ^D 18 ^D 17 ^D 16 ^D 15 ^D 14 ^D 13 ^D 12 ^D 11 ^D 10 ;
P 4 =D 62 ^D 57 ^D 52 ^D 51 ^D 50 ^D 49 ^D 47 ^D 45 ^D 44 ^D 38 ^D 33 ^D 32 ^D 31 ^D 30 ^D 23 ^D 22 ^D 20 ^D 19 ^D 18 ^D 17 ^D 16 ^D 9 ^D 8 ^D 7 ^D 6 ^D 5 ^D 4 ;
P 3 =D 61 ^D 56 ^D 52 ^D 48 ^D 46 ^D 45 ^D 44 ^D 43 ^D 42 ^D 37 ^D 33 ^D 29 ^D 28 ^D 27 ^D 23 ^D 21 ^D 20 ^D 19 ^D 15 ^D 14 ^D 13 ^D 9 ^D 8 ^D 7 ^D 3 ^D 2 ^D 1 ;
P 2 =D 60 ^D 55 ^D 51 ^D 48 ^D 47 ^D 46 ^D 45 ^D 44 ^D 41 ^D 40 ^D 36 ^D 32 ^D 29 ^D 26 ^D 25 ^D 22 ^D 21 ^D 20 ^D 18 ^D 15 ^D 12 ^D 11 ^D 9 ^D 6 ^D 5 ^D 3 ^D 2 ^D 0 ;
P 1 =D 59 ^D 54 ^D 50 ^D 47 ^D 46 ^D 45 ^D 43 ^D 41 ^D 39 ^D 35 ^D 31 ^D 28 ^D 26 ^D 24 ^D 23 ^D 22 ^D 20 ^D 17 ^D 14 ^D 12 ^D 10 ^D 8 ^D 6 ^D 4 ^D 3 ^D 1 ^D 0 ; and
P 0 =D 58 ^D 53 ^D 49 ^D 47 ^D 46 ^D 44 ^D 42 ^D 40 ^D 39 ^D 34 ^D 30 ^D 27 ^D 25 ^D 24 ^D 23 ^D 22 ^D 21 ^D 20 ^D 16 ^D 13 ^D 11 ^D 10 ^D 7 ^D 5 ^D 4 ^D 2 ^D 1 ^D 0 .
2. A parity bit generator for generating at least six parity bits {P 0 , P 1 , P 2 . . . P 5 } corresponding to twenty four data bits {D 0 , D 1 , D 2 . . . D 23 }, comprising:
at least one electronic logic circuit configured to calculate said parity bits as follows:
P 5 =D 23 ^D 22 ^D 21 ^D 19 ^D 18 ^D 17 ^D 16 ^D 15 ^D 14 ^D 13 ^D 12 ^D 11 ^D 10 ;
P 4 =D 23 ^D 22 ^D 20 ^D 19 ^D 18 ^D 17 ^D 16 ^D 9 ^D 8 ^D 7 ^D 6 ^D 5 ^D 4 ;
P 3 =D 23 ^D 21 ^D 20 ^D 19 ^D 18 ^D 17 ^D 16 ^D 9 ^D 8 ^D 7 ^D 3 ^D 2 ^D 1 ;
P 2 =D 22 ^D 21 ^D 20 ^D 18 ^D 15 ^D 12 ^D 11 ^D 9 ^D 6 ^D 5 ^D 3 ^D 2 ^D 0 ;
P 1 =D 23 ^D 22 ^D 21 ^D 20 ^D 17 ^D 14 ^D 12 ^D 10 ^D 8 ^D 6 ^D 4 ^D 3 ^D 1 ^D 0 ; and
P 0 =D 23 ^D 22 ^D 21 ^D 20 ^D 16 ^D 13 ^D 11 ^D 10 ^D 7 ^D 5 ^D 4 ^D 2 ^D 1 ^D 0 .
3. A machine implemented method of generating at least eight parity bits {P 0 , P 1 , P 2 . . . P 7 } corresponding to sixty four data bits {D 0 , D 1 , D 2 . . . D 63 }, said method comprising:
(i) calculating
P 7 =D 63 ^D 62 ^D 61 ^D 60 ^D 59 ^D 58 ^D 57 ^D 56 ^D 55 ^D 54 ^D 53 ^D 52 ^D 51 ^D 50 ^D 49 ^D 48 ^D 43 ^D 42 ^D 41 ^; ^D 40 ^D 39 ;
(ii) calculating
P 6 =D 63 ^D 62 ^D 61 ^D 60 ^D 59 ^D 58 ^D 47 ^D 46 ^D 38 ^D 37 ^D 36 ^D 35 ^D 34 ^D 33 ^D 32 ^D 31 ^D 30 ^D 29 ^D 28 ^; ^D 27 ^D 26 ^D 25 ^D 24 ;
(iii) calculating
P 5 =D 63 ^D 57 ^D 56 ^D 55 ^D 54 ^D 53 ^D 45 ^D 44 ^D 38 ^D 37 ^D 36 ^D 35 ^D 34 ^D 23 ^D 22 ^D 21 ^D 19 ^D 18 ^D 17 ^; ^D 16 ^D 15 ^D 14 ^D 13 ^D 12 ^D 11 ^D 10 ;
(iv) calculating
P 4 =D 62 ^D 57 ^D 52 ^D 51 ^D 50 ^D 49 ^D 47 ^D 45 ^D 44 ^D 38 ^D 33 ^D 32 ^D 31 ^D 30 ^D 23 ^D 22 ^D 20 ^D 19 ^D 18 ^D 17 ^D 16 ^D 9 ^D 8 ^D 7 ^D 6 ^D 5 ^D 4 ;
(v) calculating
P 3 =D 61 ^D 56 ^D 52 ^D 48 ^D 46 ^D 45 ^D 44 ^D 43 ^D 42 ^D 37 ^D 33 ^D 29 ^D 28 ^D 27 ^D 23 ^D 22 ^D 20 ^D 19 ^D 15 ^D 14 ^D 13 ^D 9 ^D 8 ^D 7 ^D 3 ^D 2 ^D 1 ;
(vi) calculating
P 2 =D 60 ^D 55 ^D 51 ^D 48 ^D 47 ^D 46 ^D 45 ^D 44 ^D 41 ^D 40 ^D 36 ^D 32 ^D 29 ^D 26 ^D 25 ^D 22 ^D 21 ^D 20 ^D 18 ^D 15 ^D 12 ^D 11 ^D 9 ^D 6 ^D 5 ^D 3 ^D 2 ^D 0 ;
(vii) calculating
P 1 =D 59 ^D 54 ^D 50 ^D 47 ^D 46 ^D 45 ^D 43 ^D 41 ^D 39 ^D 35 ^D 31 ^D 28 ^D 26 ^D 24 ^D 23 ^D 22 ^D 21 ^D 20 ^D 17 ^D 14 ^D 12 ^D 10 ^D 8 ^D 6 ^D 4 ^D 3 ^D 2 ^D 1 ^D 0 ; and
(viii) calculating
P 0 =D 58 ^D 53 ^D 49 ^D 47 ^D 46 ^D 44 ^D 42 ^D 40 ^D 39 ^D 34 ^D 30 ^D 27 ^D 25 ^D 24 ^D 23 ^D 22 ^D 21 ^D 20 ^D 16 ^D 13 ^D 11 ^D 10 ^D 7 ^D 5 ^D 4 ^D 2 ^D 1 ^D 0 .
4. A machine implemented method of generating at least six parity bits {P 0 , P 1 , P 2 . . . P 5 } corresponding to twenty four data bits {D 0 , D 1 , D 2 . . . D 23 }, said method comprising:
(i) calculating P 5 =D 23 ^D 22 ^D 21 ^D 19 ^D 18 ^D 17 ^D 16 ^D 15 ^D 14 ^D 13 ^D 12 ^D 11 ^D 10 ;
(ii) calculating P 4 =D 23 ^D 22 ^D 20 ^D 19 ^D 18 ^D 17 ^D 16 ^D 9 ^D 8 ^D 7 ^D 6 ^D 5 ^D 4 ;
(iii) calculating P 3 =D 23 ^D 21 ^D 20 ^D 19 ^D 15 ^D 14 ^D 13 ^D 9 ^D 8 ^D 7 ^D 3 ^D 2 ^D 1 ;
(iv) calculating P 2 =D 22 ^D 21 ^D 20 ^D 18 ^D 15 ^D 12 ^D 11 ^D 9 ^D 6 ^D 5 ^D 3 ^D 2 ^D 0 ;
(v) calculating P 1 =D 23 ^D 22 ^D 21 ^D 20 ^D 17 ^D 14 ^D 12 ^D 10 ^D 8 ^D 6 ^D 4 ^D 3 ^D 1 ^D 0 ; and
(vi) calculating P 0 =D 23 ^D 22 ^D 21 ^D 20 ^D 16 ^D 13 ^D 11 ^D 10 ^D 7 ^D 5 ^D 4 ^D 2 ^D 1 ^D 0 .
5. A parity bit generator for generating at least eight parity bits {P 0 , P 1 , P 2 . . . P 7 } corresponding to 64 data bits {D 0 , D 1 , D 2 . . . D 63 }, comprising:
(i) means for calculating
P 7 =D 63 ^D 62 ^D 61 ^D 60 ^D 59 ^D 58 ^ 57 ^D 56 ^ 55 ^D 64 ^D 53 ^D 52 ^D 51 ^D 50 ^D 49 ^D 48 ^D 43 ^D 42 ^D 41 ^D 40 ^D 39 ;
(ii) means for calculating
P 6 =D 63 ^D 62 ^D 61 ^D 60 ^D 59 ^D 58 ^ 47 ^D 46 ^ 38 ^D 37 ^D 36 ^D 35 ^D 34 ^D 33 ^D 32 ^D 31 ^D 30 ^D 29 ^D 28 ^D 27 ^D 26 ^D 25 ^D 24 ;
(iii) means for calculating
P 5 =D 23 ^D 22 ^D 21 ^D 19 ^D 18 ^D 17 ^D 16 ^D 15 ^D 14 ^D 13 ^D 12 ^D 11 ^D 10 ;
(iv) means for calculating
P 4 =D 62 ^D 57 ^D 52 ^D 51 ^D 50 ^D 49 ^D 47 ^D 45 ^D 44 ^D 38 ^D 33 ^D 32 ^D 31 ^D 30 ^D 23 ^D 22 ^D 20 ^D 19 ^D 18 ^D 17 ^D 16 ^D 9 ^D 8 ^D 7 ^D 6 ^D 5 ^D 4 ;
(v) means for calculating
P 3 =D 61 ^D 56 ^D 52 ^D 48 ^D 46 ^D 45 ^ 44 ^D 43 ^ 42 ^D 37 ^D 33 ^D 29 ^D 28 ^D 27 ^D 23 ^D 21 ^D 20 ^D 19 ^D 15 ^D 14 ^D 13 ^D 9 ^D 8 ^D 7 ^D 3 ^D 2 ^D 1 ;
(vi) means for calculating
P 2 =D 60 ^D 55 ^D 51 ^D 48 ^D 47 ^D 46 ^ 45 ^D 44 ^ 41 ^D 40 ^D 36 ^D 32 ^D 29 ^D 26 ^D 25 ^D 22 ^D 21 ^D 20 ^D 18 ^D 15 ^D 12 ^D 11 ^D 9 ^D 6 ^D 5 ^D 3 ^D 2 ^D 0 ;
(vii) means for calculating
P 1 =D 59 ^D 54 ^D 50 ^D 47 ^D 46 ^D 45 ^ 43 ^D 41 ^ 39 ^D 35 ^D 31 ^D 28 ^D 26 ^D 24 ^D 23 ^D 22 ^D 20 ^D 17 ^D 14 ^D 12 ^D 10 ^D 8 ^D 6 ^D 4 ^D 3 ^D 1 ^D 0 ; and
(viii) means for calculating
P 0 =D 58 ^D 53 ^D 49 ^D 47 ^D 46 ^D 44 ^D 42 ^D 40 ^D 39 ^D 34 ^D 30 ^D 27 ^D 25 ^D 24 ^D 23 ^D 22 ^D 21 ^D 20 ^D 16 ^D 13 ^D 11 ^D 10 ^D 7 ^D 5 ^D 4 ^D 2 ^D 1 ^D 0 .
6. A parity bit generator for generating at least six parity bits {P 0 , P 1 , P 2 . . . P 5 } corresponding to twenty four data bits {D 0 , D 1 , D 2 . . . D 23 }, comprising:
(i) means for calculating P 5 =D 23 ^D 22 ^D 21 ^D 19 ^D 18 ^D 17 ^D 16 ^D 15 ^D 14 ^D 13 ^D 12 ^D 11 ^D 10 ;
(ii) means for calculating P 4 =D 23 ^D 22 ^D 20 ^D 19 ^D 18 ^D 17 ^D 16 ^D 9 ^D 8 ^D 7 ^D 6 ^D 5 ^D 4 ;
(iii) means for calculating P 3 =D 23 ^D 21 ^D 20 ^D 19 ^D 15 ^D 14 ^D 13 ^D 9 ^D 8 ^D 7 ^D 3 ^D 2 ^D 1 ;
(iv) means for calculating P 2 =D 22 ^D 21 ^D 20 ^D 18 ^D 15 ^D 12 ^D 11 ^D 9 ^D 6 ^D 5 ^D 3 ^D 2 ^D 0 ;
(v) means for calculating P 1 =D 23 ^D 22 ^D 21 ^D 20 ^D 17 ^D 14 ^D 12 ^D 10 ^D 8 ^D 6 ^D 4 ^D 3 ^D 1 ^D 0 ; and and
(vi) means for calculating P 0 =D 23 ^D 22 ^D 21 ^D 20 ^D 16 ^D 13 ^D 11 ^D 10 ^D 7 ^D 5 ^D 4 ^D 2 ^D 1 ^D 0 .