ECE4253 Digital Communications | |
Department of Electrical and Computer Engineering - University of New Brunswick, Fredericton, NB, Canada | |
The mathematics of error control can be based on either a matrix or a polynomial approach. This page shows how any polynomial G(x) may be used to define an equivalent check matrix and generator matrix. Conversely, it is not always possible to find a polynomial G(x) corresponding to an arbitary generator matrix.
The generator polynomial G(x) can be up to degree p=36, and the input data size is limited to k=36 bits.
G(x) = x10+x9+x8+x6+x5+x3+1
(11101101001)
This polynomial G(x) is degree 10, giving a 10-bit parity field. (See factors of G(x))
The systematic 31-bit codewords will have 21 data bits and 10 parity bits.
When codewords are cyclic the circular shift of a valid codeword produces another valid codeword.
For example, rotating the 31-bit codeword (01) left by one bit gives the codeword (02): (02) = 0000000000000000000111011010010 |
DATA = 00 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DATA = 01 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
DATA = 02 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 |
DATA = 03 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
DATA = 04 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
DATA = 05 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
DATA = 06 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
DATA = 07 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
DATA = 08 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
DATA = 09 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
DATA = 10 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
DATA = 11 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
DATA = 12 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
DATA = 13 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
DATA = 14 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
DATA = 15 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
DATA = 16 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
DATA = 17 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
DATA = 18 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
DATA = 19 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
DATA = 20 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
DATA = 21 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
DATA = 22 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
DATA = 23 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
DATA = 24 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
DATA = 25 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
DATA = 26 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
DATA = 27 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
DATA = 28 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
DATA = 29 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
DATA = 30 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
DATA = 31 : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 |
When codewords are linear, any linear combination of codewords is another codeword. For example, the 31-bit codeword (01) is the sum (02)+(03) (03) = 0000000000000000000111011010010 (01) = 0000000000000000000011101101001 |
This sample subset of 31-bit codewords has a minimum distance D=5, correcting up to t=2 errors.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
00 | -- | 07 | 08 | 07 | 08 | 07 | 08 | 07 | 05 | 08 | 07 | 10 | 09 | 08 | 07 | 06 | 05 | 06 | 07 | 08 | 07 | 08 | 09 | 10 | 08 | 09 | 08 | 09 | 10 | 07 | 06 | 11 |
01 | 07 | -- | 07 | 08 | 07 | 08 | 07 | 08 | 08 | 05 | 10 | 07 | 08 | 09 | 06 | 07 | 06 | 05 | 08 | 07 | 08 | 07 | 10 | 09 | 09 | 08 | 09 | 08 | 07 | 10 | 11 | 06 |
02 | 08 | 07 | -- | 07 | 08 | 07 | 08 | 07 | 07 | 10 | 05 | 08 | 07 | 06 | 09 | 08 | 07 | 08 | 05 | 06 | 09 | 10 | 07 | 08 | 08 | 09 | 08 | 09 | 06 | 11 | 10 | 07 |
03 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 08 | 10 | 07 | 08 | 05 | 06 | 07 | 08 | 09 | 08 | 07 | 06 | 05 | 10 | 09 | 08 | 07 | 09 | 08 | 09 | 08 | 11 | 06 | 07 | 10 |
04 | 08 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 09 | 08 | 07 | 06 | 05 | 08 | 07 | 10 | 07 | 08 | 09 | 10 | 05 | 06 | 07 | 08 | 10 | 07 | 06 | 11 | 08 | 09 | 08 | 09 |
05 | 07 | 08 | 07 | 08 | 07 | -- | 07 | 08 | 08 | 09 | 06 | 07 | 08 | 05 | 10 | 07 | 08 | 07 | 10 | 09 | 06 | 05 | 08 | 07 | 07 | 10 | 11 | 06 | 09 | 08 | 09 | 08 |
06 | 08 | 07 | 08 | 07 | 08 | 07 | -- | 07 | 07 | 06 | 09 | 08 | 07 | 10 | 05 | 08 | 09 | 10 | 07 | 08 | 07 | 08 | 05 | 06 | 06 | 11 | 10 | 07 | 08 | 09 | 08 | 09 |
07 | 07 | 08 | 07 | 08 | 07 | 08 | 07 | -- | 06 | 07 | 08 | 09 | 10 | 07 | 08 | 05 | 10 | 09 | 08 | 07 | 08 | 07 | 06 | 05 | 11 | 06 | 07 | 10 | 09 | 08 | 09 | 08 |
08 | 05 | 08 | 07 | 10 | 09 | 08 | 07 | 06 | -- | 07 | 08 | 07 | 08 | 07 | 08 | 07 | 08 | 09 | 08 | 09 | 10 | 07 | 06 | 11 | 05 | 06 | 07 | 08 | 07 | 08 | 09 | 10 |
09 | 08 | 05 | 10 | 07 | 08 | 09 | 06 | 07 | 07 | -- | 07 | 08 | 07 | 08 | 07 | 08 | 09 | 08 | 09 | 08 | 07 | 10 | 11 | 06 | 06 | 05 | 08 | 07 | 08 | 07 | 10 | 09 |
10 | 07 | 10 | 05 | 08 | 07 | 06 | 09 | 08 | 08 | 07 | -- | 07 | 08 | 07 | 08 | 07 | 08 | 09 | 08 | 09 | 06 | 11 | 10 | 07 | 07 | 08 | 05 | 06 | 09 | 10 | 07 | 08 |
11 | 10 | 07 | 08 | 05 | 06 | 07 | 08 | 09 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 08 | 09 | 08 | 09 | 08 | 11 | 06 | 07 | 10 | 08 | 07 | 06 | 05 | 10 | 09 | 08 | 07 |
12 | 09 | 08 | 07 | 06 | 05 | 08 | 07 | 10 | 08 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 10 | 07 | 06 | 11 | 08 | 09 | 08 | 09 | 07 | 08 | 09 | 10 | 05 | 06 | 07 | 08 |
13 | 08 | 09 | 06 | 07 | 08 | 05 | 10 | 07 | 07 | 08 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 10 | 11 | 06 | 09 | 08 | 09 | 08 | 08 | 07 | 10 | 09 | 06 | 05 | 08 | 07 |
14 | 07 | 06 | 09 | 08 | 07 | 10 | 05 | 08 | 08 | 07 | 08 | 07 | 08 | 07 | -- | 07 | 06 | 11 | 10 | 07 | 08 | 09 | 08 | 09 | 09 | 10 | 07 | 08 | 07 | 08 | 05 | 06 |
15 | 06 | 07 | 08 | 09 | 10 | 07 | 08 | 05 | 07 | 08 | 07 | 08 | 07 | 08 | 07 | -- | 11 | 06 | 07 | 10 | 09 | 08 | 09 | 08 | 10 | 09 | 08 | 07 | 08 | 07 | 06 | 05 |
16 | 05 | 06 | 07 | 08 | 07 | 08 | 09 | 10 | 08 | 09 | 08 | 09 | 10 | 07 | 06 | 11 | -- | 07 | 08 | 07 | 08 | 07 | 08 | 07 | 05 | 08 | 07 | 10 | 09 | 08 | 07 | 06 |
17 | 06 | 05 | 08 | 07 | 08 | 07 | 10 | 09 | 09 | 08 | 09 | 08 | 07 | 10 | 11 | 06 | 07 | -- | 07 | 08 | 07 | 08 | 07 | 08 | 08 | 05 | 10 | 07 | 08 | 09 | 06 | 07 |
18 | 07 | 08 | 05 | 06 | 09 | 10 | 07 | 08 | 08 | 09 | 08 | 09 | 06 | 11 | 10 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 08 | 07 | 07 | 10 | 05 | 08 | 07 | 06 | 09 | 08 |
19 | 08 | 07 | 06 | 05 | 10 | 09 | 08 | 07 | 09 | 08 | 09 | 08 | 11 | 06 | 07 | 10 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 08 | 10 | 07 | 08 | 05 | 06 | 07 | 08 | 09 |
20 | 07 | 08 | 09 | 10 | 05 | 06 | 07 | 08 | 10 | 07 | 06 | 11 | 08 | 09 | 08 | 09 | 08 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 09 | 08 | 07 | 06 | 05 | 08 | 07 | 10 |
21 | 08 | 07 | 10 | 09 | 06 | 05 | 08 | 07 | 07 | 10 | 11 | 06 | 09 | 08 | 09 | 08 | 07 | 08 | 07 | 08 | 07 | -- | 07 | 08 | 08 | 09 | 06 | 07 | 08 | 05 | 10 | 07 |
22 | 09 | 10 | 07 | 08 | 07 | 08 | 05 | 06 | 06 | 11 | 10 | 07 | 08 | 09 | 08 | 09 | 08 | 07 | 08 | 07 | 08 | 07 | -- | 07 | 07 | 06 | 09 | 08 | 07 | 10 | 05 | 08 |
23 | 10 | 09 | 08 | 07 | 08 | 07 | 06 | 05 | 11 | 06 | 07 | 10 | 09 | 08 | 09 | 08 | 07 | 08 | 07 | 08 | 07 | 08 | 07 | -- | 06 | 07 | 08 | 09 | 10 | 07 | 08 | 05 |
24 | 08 | 09 | 08 | 09 | 10 | 07 | 06 | 11 | 05 | 06 | 07 | 08 | 07 | 08 | 09 | 10 | 05 | 08 | 07 | 10 | 09 | 08 | 07 | 06 | -- | 07 | 08 | 07 | 08 | 07 | 08 | 07 |
25 | 09 | 08 | 09 | 08 | 07 | 10 | 11 | 06 | 06 | 05 | 08 | 07 | 08 | 07 | 10 | 09 | 08 | 05 | 10 | 07 | 08 | 09 | 06 | 07 | 07 | -- | 07 | 08 | 07 | 08 | 07 | 08 |
26 | 08 | 09 | 08 | 09 | 06 | 11 | 10 | 07 | 07 | 08 | 05 | 06 | 09 | 10 | 07 | 08 | 07 | 10 | 05 | 08 | 07 | 06 | 09 | 08 | 08 | 07 | -- | 07 | 08 | 07 | 08 | 07 |
27 | 09 | 08 | 09 | 08 | 11 | 06 | 07 | 10 | 08 | 07 | 06 | 05 | 10 | 09 | 08 | 07 | 10 | 07 | 08 | 05 | 06 | 07 | 08 | 09 | 07 | 08 | 07 | -- | 07 | 08 | 07 | 08 |
28 | 10 | 07 | 06 | 11 | 08 | 09 | 08 | 09 | 07 | 08 | 09 | 10 | 05 | 06 | 07 | 08 | 09 | 08 | 07 | 06 | 05 | 08 | 07 | 10 | 08 | 07 | 08 | 07 | -- | 07 | 08 | 07 |
29 | 07 | 10 | 11 | 06 | 09 | 08 | 09 | 08 | 08 | 07 | 10 | 09 | 06 | 05 | 08 | 07 | 08 | 09 | 06 | 07 | 08 | 05 | 10 | 07 | 07 | 08 | 07 | 08 | 07 | -- | 07 | 08 |
30 | 06 | 11 | 10 | 07 | 08 | 09 | 08 | 09 | 09 | 10 | 07 | 08 | 07 | 08 | 05 | 06 | 07 | 06 | 09 | 08 | 07 | 10 | 05 | 08 | 08 | 07 | 08 | 07 | 08 | 07 | -- | 07 |
31 | 11 | 06 | 07 | 10 | 09 | 08 | 09 | 08 | 10 | 09 | 08 | 07 | 08 | 07 | 06 | 05 | 06 | 07 | 08 | 09 | 10 | 07 | 08 | 05 | 07 | 08 | 07 | 08 | 07 | 08 | 07 | -- |
To determine the minimum distance between any two codewords in a linear block code, it is sufficient to check every codeword once against the all-zero codeword. In other words, the Hamming distance of a code may be determined from the distances in row 00 only. Moreover, the distance from a given codeword to zero is found by the sum of the 1's in the codeword. A much larger sampling of codewords could be easily checked in this way. |
|
(8,7) Simple Parity Bit (D=2) no error correction
(7,4) Hamming Code (D=3) single bit error correction
(15,11) Hamming Code (D=3) single bit error correction
(15,10) Extended Hamming Code (D=4) single bit error correction
(31,21) BCH Code (D=5) double bit error correction (notes)
(15,5) BCH Code (D=7) triple bit error correction (notes)
(23,12,7) Binary Golay Code (D=7) triple bit error correction
(35,27) Fire Code specialized 3-bit burst error correction
16-bit CRC (CCITT) commonly used for error detection (notes)
2024-05-16 11:47:59 ADT
Last Updated: 2015-02-06 |
Richard Tervo [ tervo@unb.ca ] | Back to the course homepage... |