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 transmitter comprising for transmitting ECC encoded data:
a parity generator for generating a set of at least six parity bits {P 0 , P 1 , P 2 . . . P 5 } to protect a set of at least twenty four data bits {D 0 , D 1 , D 2 . . . D 23 ,} each parity bit having a parity bit position in said parity bit set, each data bit having a data bit position in said data bit set;
said parity generator calculating 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 15 ^D 14 ^D 13 ^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 .
2. A receiver comprising:
a data decoder for decoding ECC encoded data comprising at least twenty four data bits and a plurality of provided parity bits generated using a parity bit generator, said decoder comprising
a parity bit generator for calculating parity bits from said data bits;
a syndrome calculator for calculating a syndrome (SYN) from said parity bits as calculated, and said provided parity bits;
a syndrome decoder for determining an index value i from said syndrome (SYN);
error correcting logic for correcting a one bit error in the i th position within said data bits;
wherein said syndrome decoder decodes i=0 when said syndrome calculator calculates SYN=0x07; i=1 when said syndrome calculator calculates SYN=0x0B; i=2 when said syndrome calculator calculates SYN=0x0D; i=3 when said syndrome calculator calculates SYN=0x0E; i=4 when said syndrome calculator calculates SYN=0x13; i=5 when said syndrome calculator calculates SYN=0x15; i=6 when said syndrome calculator calculates SYN=0x16; i=7 when said syndrome calculator calculates SYN=0x19; i=8 when said syndrome calculator calculates SYN=0x1A; i=9 when said syndrome calculator calculates SYN=0x1C; i=10 when said syndrome calculator calculates SYN=0x23; i=11 when said syndrome calculator calculates SYN=0x25; i=12 when said syndrome calculator calculates SYN=0x26; i=13 when said syndrome calculator calculates SYN=0x29; i=14 when said syndrome calculator calculates SYN=0x2A; i=15 when said syndrome calculator calculates SYN=0x2C; i=16 when said syndrome calculator calculates SYN=0x31; i=17 when said syndrome calculator calculates SYN=0x32; i=18 when said syndrome calculator calculates SYN=0x34; i=19 when said syndrome calculator calculates SYN=0x38; i=20 when said syndrome calculator calculates SYN=0x1F; i=21 when said syndrome calculator calculates SYN=0x2F; i=22 when said syndrome calculator calculates SYN=0x37; i=23 when said syndrome calculator calculates SYN=0x3B.
3. A system for managing data errors, comprising:
a transmitter comprising:
a parity generator for generating a set of at least six parity bits {P 0 , P 1 , P 2 . . . P 5 } to protect a set of at least twenty four data bits {D 0 , D 1 , D 2 . . . D 23 }, each parity bit having a parity bit position in said parity bit set, each data bit having a data bit position in said data bit set;
said parity generator calculating 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 15 ^D 14 ^D 13 ^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
a receiver comprising:
a data decoder for decoding ECC encoded data comprising at least twenty four data bits and a plurality of provided parity bits generated using a parity bit generator, said decoder comprising
a parity bit generator for calculating parity bits from said data bits;
a syndrome calculator for calculating a syndrome (SYN) from said parity bits as calculated, and said provided parity bits;
a syndrome decoder for determining an index value i from said syndrome (SYN);
error correcting logic for correcting a one bit error in the i th position within said data bits;
wherein said syndrome decoder decodes i=0 when said syndrome calculator calculates SYN=0x07; i=1 when said syndrome calculator calculates SYN=0x0B; i=2 when said syndrome calculator calculates SYN=0x0D; i=3 when said syndrome calculator calculates SYN=0x0E; i=4 when said syndrome calculator calculates SYN=0x13; i=5 when said syndrome calculator calculates SYN=0x15; i=6 when said syndrome calculator calculates SYN=0x16; i=7 when said syndrome calculator calculates SYN=0x19; i=8 when said syndrome calculator calculates SYN=0x1A; i=9 when said syndrome calculator calculates SYN=0x1C; i=10 when said syndrome calculator calculates SYN=0x23; i=11 when said syndrome calculator calculates SYN=0x25; i=12 when said syndrome calculator calculates SYN=0x26; i=13 when said syndrome calculator calculates SYN=0x29; i=14 when said syndrome calculator calculates SYN=0x2A; i=15 when said syndrome calculator calculates SYN=0x2C; i=16 when said syndrome calculator calculates SYN=0x31; i=17 when said syndrome calculator calculates SYN=0x32; i=18 when said syndrome calculator calculates SYN=0x34; i=19 when said syndrome calculator calculates SYN=0x38; i=20 when said syndrome calculator calculates SYN=0x1F; i=21 when said syndrome calculator calculates SYN=0x2F; i=22 when said syndrome calculator calculates SYN=0x37; i=23 when said syndrome calculator calculates SYN=0x3B.