Error control codes are necessary for transmission and storage of large volumes of date sensitive to errors. BCH codes and Reed Solomon codes are the most important class of multiple error correcting codes for binary and non-binary channels respectively. Peterson and later Berlekamp and Massey discovered powerful algorithms which became viable with the help of new digital technology. Use of Galois fields gave a structured approach to designing of these codes. This presentation deals with above in a very structured and systematic manner.
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
Error control coding bch, reed-solomon etc..
1. ERROR CONTROL CODES
BCH CODES, REED-SOLOMON CODES, LFSR,
Nested codes, Justesen codes,Alternant codes,
Goppa codes
Prerequisite– Galois Fields Basics
Refer to presentation on Basics of Galois Fields by
this Author.
2. Revising Cyclic Codes using field elements
(WilliamWesley Peterson)
Codeword polynomial c(x) of an (n,k) cyclic code is given
as c(x) = f(x) g(x) where
For nonsystematic code, f(x) is information polynomial d(x).
For systematic code, f(x) is quotient q(x) obtained by
dividing d(x)xn-k
by g(x). c(x)/g(x) = data.
g(x) is a factor of c(x) .
Any root of g(x) is also a root of c(x).
If β is root of g(x) then,
g(β) = 0 and f(β) g(β) = 0
Example – For (7,4) cyclic code, g(x) = 1+x+x3.
Three roots of 1+x+x3 are α, α2, α4 belonging to GF(23).
Let c(x) = 1+x+x2+x5. (1110010)
Verify that c(α) = c(α2) = c(α4) = 0.
3. Revising Cyclic Codes using field elements
Example – For (15,11) cyclic code, g(x) = 1+x+x4. Find
roots in GF(24) and show that roots of g(x) are also roots of
c(x).
Solution : Four roots of 1+x+x4 are α, α2, α4 and α8
belonging to GF(24).
Let c(x) = 1+x+x2+x3+x4+x6
Verify from table that c(α) = c(α2) = c(α4) = c(α8) = 0.
4. Definitions
A block length n of the form n = qm
-1 is called a Primitive
Block Length for a code over GF(q).
A cyclic code over GF(q) of primitive block length is called a
Primitive Cyclic Code.
Two elements of GF(qm
) that share the same minimal
polynomial over GF(q) are called Conjugates (with respect
to GF(q)).
5. Generator Polynomial
Polynomials 1+x+x3 and 1+x+x4 serve two functions.
1. They are generator polynomials of cyclic codes.
2. As they are irreducible, they are used to construct finite
fields.
A generator polynomial need not be necessarily irreducible,
in which case it can not be used to construct finite fields
e.g. for (15,7) code,
g(x) = 1+x4 +x6+x7+x8 = (1+x+x4) (1+x +x2+x3+x4)
6. Generator Polynomial
α, α2, α4 form conjugate set in GF(23) with minimal
polynomial 1+x+x3
1+x+x3 can be specified by α, α2, α4 in GF(23) as
1+x+x3 = (x+ α)(x+ α2)(x+ α4)
α, α2, α4 and α8 form conjugate set in GF(24) with minimal
polynomial 1+x+x4
1+x+x4 can be specified by α, α2, α4 and α8 in GF(24) as
1+x+x4 = (x+ α)(x+ α2)(x+ α4)(x+ α8)
7. Constructing Generator Polynomial
To construct a generator polynomial g(x) from an arbitrary
set of r field elements β1,β2,β3,…βr.
Find polynomial of least degree having β1,…βr. as its roots.
g(x) = (x+β1) (x+β2) (x+β3)… (x+βr)
May not always be a binary polynomial.
Ex- if β1 = α and β2 = α2 in GF(23) , g(x) = x2 + α4x + α3.
Solution – replace each factor (x+βi) by mi(x), minimum
polynomial of βi .
8. Constructing g(x) using minimum polynomial
Minimum polynomial of an element is irreducible polynomial
with binary coefficients obtained using element with its
conjugate sets.
g(x) = m1(x) (m2x)… (mrx).
g(x) may contain multiple factors of conjugates min poly if
any element belongs to conjugate sets of other..
LCM of g(x) would eliminate common multiples.
g(x) = LCM[m1(x) (m2x)… (mrx)].
In GF(2m), product of 2 or more minimum polynomials
divides xq-1
+1, where q = 2m
.
Hence above g(x) can generate cyclic codes.
9. Constructing g(x) using minimum polynomial
Example-
Construct a generator polynomial for (7,4) code using roots
α, α2, α4 belonging to GF(23).
Conjugates of α are α, α2, α4 in GF(23). Also for α2, α4 .
m1(x) = 1 + x + x3 .
m2(x) = 1 + x + x3 .
m3(x) = 1 + x + x3 .
g(x) = LCM[m1(x) (m2x) m3(x)] = 1 + x + x3 .
Example-
Construct a generator polynomial for (7,4) code using roots
α, α2, α3 belonging to GF(23).
10. Theorems
Theorem 1: A cyclic code consists of all multiples of
generator polynomial g(x) by polynomials of degree k-1 or
less.
Theorem 2: There is a cyclic code of block length n with
generator polynomial g(x) if and only if g(x) divides xn
-1.
Theorem 3: Let generator polynomial g(x) of a primitive
code has zeros β1, ….., βr,in GF(qm
). A polynomial c(x) over
GF(q) is a codeword polynomial if and only if
◦ c(β1) = c(β2).. .. c(βr)=0
Theorem 4 :If f(x) is the minimal polynomial over GF(q) of
β, an element of GF(qm
) then f(x) is also a minimal
polynomial of βq
.
Theorem 5:Let p be the characteristic of the field GF(q).
Then for any polynomial s(x) over GF(q) and any integer m
11. Theorems
Theorem 6: The minimal polynomial of β is
◦ f(x) = (x – β)(x – βq
)…(x – βqr-1
) where r is smallest
integer such that βqr
= β.
Theorem 7: Let GF(q) is a finite field and n and q are
relatively prime, then xn
-1 divides xqm-1
-1 for some m and
xn
-1 has n distinct zeros in the extension field GF(qm
).
12. Parity-Check polynomial
Let g(x) is a generator polynomial for an (n,k) cyclic code.
Then the polynomial h(x) is Parity-Check polynomial of the
code if it satisfies g(x) h(x) = xn + 1.
h(x) = (xn + 1) / g(x)
Degree of h(x) = n – (n-k) = k
h(x) = hkxk+ hk-1xk-1+…+ h2x2+ h1x+ h0
hk= h0= 1 and remaining 0 or 1.
(7,4) code with g(x) = x3 + x + 1has parity check polynomial
h(x) = (x7 + 1) /(1 + x + x3) = x4+ x2 + x +1
Analogous to Parity-check matrix H in Hamming codes.
14. Dual Cyclic Codes
The parity check polynomial h(x) of a code is used to
generate (n,n-k) Dual Code of C.
Reciprocal Polynomial h*(x) of h(x) is found as
◦ h*(x)= xr h(1/x)
◦ Where r is degree of h(x).
It has the effect of reversing the order of the coefficients.
Generator polynomial g(x) of dual code is h*(x).
Let : h(x) = h3x3 + h2x2+ h1x+ h0
h(1/x) = h3/x3 + h2/x2+ h1/x+ h0
h*(x) = h3 + h2x+ h1x2+ h0x3
h*(x) = h0x3 +h1x2 +h2x +h3 Coefficients of h*(x) reverse of h(x)
Example : h(x) = x4 + x2+ x+ 1
x4h(1/x) = x4 (1/x4 + 1/x2+ 1/x+ 1)
h*(x) = x4 + x3+ x2+ 1 = g(x)
Generator polynomial of code that is dual to (7,4) code.
15. Dual Cyclic Codes
Block length n of a code and its dual are same.
Dual of a dual code is original code.
Example : Given (9,6) cyclic code with generator
polynomial g(x) = x3 + 1. Construct its dual code.
Parity-check polynomial of (9,6) code –
h(x) = (x9 + 1) / (x3 + 1) = x6 + x3 + 1
h*(x) = x6 (1/x6 + 1/x3+ 1) = x6 + x3 + 1
Block length = 9
Degree of g(x) = 6
Information length = 3
Hence dual to (9,6) cyclic code is (9,3) code with g(x) = x6 +
x3 + 1.
16. Idempotents
Idempotence is the property of operations which can be
applied multiple times without altering the result beyond
initial application.
Example: Unary operation like abs(abs(x)) = abs(x).
Example: Binary operation like max(x,x) ≡ x.
17. Idempotents
An element x of a set with a binary operation ∗ is called
an idempotent element (or just an idempotent) if x ∗ x = x.
An idempotent element of a ring is an element a such
that a2 = a.
Example: Prime Numbers have only 2 idempotents, 0,1 in
mod-n.
Example: In Group of integers mod-n, if n is squarefree(not
divisible by perfect square) and has m factors, there will be
2m idempotents. (idempotent for each factor.)
6 has 2 factors, hence will have 22 idempotents.
02 = 0 = 0 (mod 6)
12 = 1 = 1 (mod 6) Next such elements are 10, 15...Test.
22 = 4 = 4 (mod 6)
32 = 9 = 3 (mod 6)
42 = 16 = 4 (mod 6)
52 = 25 = 1(mod 6).
0, 1, 3, and 4 are idempotents of this group, while 2 and 5 are not.
18. Mattson-Solomon Polynomial
It is like discrete Fourier Transform which converts a time domain
polynomial in x to frequency domain polynomial in z.
Let α be a primitive nth root of unity over GF(q).
(α)n = 1
For each polynomial p(x) ЄRn, there is another polynomial Pms(z)
called the Mattson-Solomon polynomial defined as --
Pms(z) = ∑
i=0
n-1
p(α-i) zi
Pms(z) = ∑
i=0
n-1
p(αn-i) zi
Pms(z) = ∑
i=1
n
p(αi) zn-i
20. Mattson-Solomon Polynomial
Given Mattson-Solomon polynomial Pms(z), original
polynomial p(x) can be obtained as -
p(x) = (1/n)∑
i=0
n-1
Pms (αi) xi
21. Mattson-Solomon Polynomial
Example : Find MS polynomials for following in (7,3,4)
simplex code where α is element of GF(23).
1+x+x2+x4 x(1+x+x2+x4)
P6 1 α α2 α3 α4 α5 α6 p0
P5 1 α2 α4 α6 α α3 α5 p1
P4 = 1 α3 α6 α2 α5 α α4 p2
P3 1 α4 α α5 α2 α6 α3 p3
P2 1 α5 α3 α α6 α4 α2 p4
P1 1 α6 α5 α4 α3 α2 α p5
P0 1 1 1 1 1 1 1 p6
24. MDS (Maximum Distance Separable) Codes
Singleton Bound : The minimum distance ( minimum
weight) of any linear (n,k) code satisfies –
◦ d* ≤ 1 + n – k.
Proof: The smallest-weight non-zero code has weight d*.
Smallest systematic codes exists with only one information
symbol and n-k parity symbols.
Such codewords can not have weight larger than 1+(n-k).
Hence minimum weight of the code can not be larger than
1+(n-k).
25. MDS (Maximum Distance Separable) Codes
Any code whose minimum distance satisfies d* = 1 + n - k
is called maximum distance separable code.
A code which can correct t errors has designed distance of
the code d = 2t + 1.
Actual Minimum distance d* or dmin ≥ d.
Hence d* ≥ d = 2t + 1 = n-k+1
As per Singleton Bound, d* ≤ 1 + n – k.
Hence d* = n-k+1 and d* = d
Hence the reason.
26. MDS Codes - Characteristics
Proposition 1: A q-ary [n,k] linear code is an MDS code if,
and only if, the minimum non-zero weight of any codeword
is n - k + 1.
Claim 1: A code (n,n) for any n and q is an MDS code if
and only if minimum non zero weight is 1.
n-bit data coded to another n-bit code without parity.
Hence a nonzero code should have atleast one “1”.
Claim 2: A code (n,1) for any n and q is an MDS code if
and only if minimum weight is n.
1 bit message encodes to n bit code. Cyclic code will give
all zero for “0” and all “1s” for “1”. Hence min weight n.
27. MDS Codes - Characteristics
Proposition 2: A q-ary [n,k] linear code is an MDS code if,
and only if, every set of (n-k) columns of a parity check
matrix is linearly independent.
28. BCH Codes
Bose-Chaudhuri-Hocquenghem codes.
BCH Codes are subset of cyclic codes
Powerful multiple error correcting codes with mathematical
properties.
Binary and non-binary BCH codes exist.
Reed-Solomon codes are non-binary BCH codes.
Its generator polynomial can be created using any number
of roots, required for desired error correcting capabilities.
29. Construction of BCH Codes
BCH codes have generator polynomial with roots carefully
specified to give error correcting capability.
A t-error correcting cyclic code with generator polynomial
g(x) is a binary BCH code if and only if g(x) is the least
degree polynomial over GF(2) that has
◦ β, β2
, β3
,β4
, … β2t
, as roots where..
β, is an element of GF(2m
).
If the field element β is primitive then codes are called
Primitive BCH Codes having block length of n = 2m
-1.
The g(x) has degree r = (n-k) ≤ mt
◦ where information length k = 2m
-1 – r
Capable of correcting any combination of t or fewer errors (t
≤ 2m-1
) in block of n.
30. Construction of BCH Codes
Example – Construct a double error correcting BCH code
over GF(24
).
Taking β = α, (a primitive element of GF(24
) and t = 2, roots
required are α, α2
, α3
, α4
.
g(x) = LCM[m1(x) (m2x) m3(x) m4(x)].
m1(x) = m2(x) = m4(x) = 1 + x + x4
.
m3(x) = 1 + x + x2
+ x3
+ x4
g(x) = m1(x) m3(x) = 1 + x4
+ x6
+ x7
+ x8
Block length n = 2m
-1 = 15
Degree of g(x) r = 8
Information length k = n-r = 7
Double error correcting (15,7) BCH code with g(x) = 1 + x4
+ x6
+ x7
+ x8
is constructed.
If β = any conjugate of α, e.g. α2
, it will give same g(x).
Try with β = α3
also.
31. Construction of BCH Codes
A t-error correcting code has a guaranteed minimum
distance of d = 2t+1.
dmin
of code may be greater than d giving error correcting
capability greater than t.
Minimum distance of d = 2t+1 is called Designed Distance
of code with dmin
≥ d.
Generation of BCH codes is same as Linear cyclic codes
and are similarly found from g(x).
However detection process is specific to BCH.
32. Construction of BCH Codes
Example – Construct a single error correcting BCH code
over GF(24
).
Taking β = α and t = 1, roots required are α, α2
.
g(x) = LCM[m1(x) (m2x)].
m1(x) = 1 + x + x4
.
m2(x) = 1 + x + x4
.
g(x) = m1(x) = 1 + x + x4
.
Block length n = 2m
-1 = 15
Degree of g(x) r = 4
Information length k = n-r = 11
Hence Double error correcting (15,11) BCH code with
g(x) = 1 + x + x4
is constructed.
33. Error Syndrome of BCH Codes Also for Cyclic Code
g(x) and c(x) have α, α2
, α3
,… α2t
and their conjugates as
their roots.
If c(x) = c0+c1x+c2x2
+…cn-1xn-1
and αi
is the root, 1≤ i ≤ 2t.
c(αi
) = c0+c1(αi
) +c2(αi
)2
+…cn-1(αi
) (n-1)
=0 for all i,1≤ i ≤ 2t.
[c0,c1,c2,…cn-1 ] [1 αi
α2i
…α(n-1) i
]T
= 0 for all i, 1≤ i ≤ 2t.
If αj
is the conjugate of αi
, then can be eliminated from
above range as it will give same result as αi
.
Then for correct code, CHT
= 0, where H =
1 α α2 α3 α4 … αn-1
1 (α3) (α3)2 (α3)3 (α3)4 … (α3)n-1
H= 1 (α5) (α5)2 (α5)3 (α5)4 … (α5)n-1
. . . . . … .
1 (α2t-1) (α2t-1)2 (α2t-1)3 (α2t-1)4 … (α2t-1)n-1
35. Error Syndrome in BCH Codes
Roots of g(x) are also roots of c(x).
If α, α2
,.. α2t
are roots of g(x), and t-error correcting BCH
code c(x),
then c(αi
) = 0 for i=1,2,…2t.
Received word v(x) = c(x) + e(x) [with error]
v(αi
) = c(αi
) + e(αi
) for i=1,2,…2t.
v(αi
) = e(αi
) as c(αi
) = 0
Hence Si = v(αi
) = e(αi
)
36. Error Syndrome in BCH Codes –Method 1
Example – (15,7) BCH code over GF(24
) with t=2
c(x) = 1+ x+ x4
+ x5
+ x6
+ x9
. (110011100100000)
S1 = v(α) = 1+ α + α4
+ α5
+ α6
+ α9
= 0
S2 = v(α2
) = 1+ α2
+ α8
+ α10
+ α12
+ α3
= 0
S3 = v(α3
) = 1+ α3
+ α12
+ 1+ α3
+ α12
= 0
S4 = v(α4
) = 1+ α4
+ α + α5
+ α9
+ α6
= 0
Let c(x) is contaminated with e(x) = x7
+x4
to give
v(x)= 1+ x+ x5
+ x6
+ x7
+ x9
.
S1 = v(α) = 1+ α + α5
+ α6
+ α7
+ α9
= α3
S2 = v(α2
) = 1+ α2
+ α10
+ α12
+ α14
+ α3
= α6
S3 = v(α3
) = 1+ α3
+ 1+ α3
+ α6
+ α12
= α4
S4 = v(α4
) = 1+ α4
+ α5
+ α9
+ α13
+ α6
= α12
If number of errors do not exceed the error correcting limit of a
BCH, then error pattern e(x) can be determined from S1 to S2t .
A particular error pattern will give same S1 to S2t in all code
words.
Data set for all error words can be created along with correction
words.
37. Error Syndrome in BCH Codes
Another Example from same code set– (15,7) BCH code over
GF(24
) with t=2
c(x) = x + x2
+ x5
+ x6
+ x7
+ x10
. (011001110010000)
No error.
S1 = v(α) = 0
S2 = v(α2
) = 0
S3 = v(α3
) = 0
S4 = v(α4
) = 0
Let c(x) is contaminated with same e(x) = x7
+x4
to give
v(x)= x + x2
+ x4
+ x5
+ x6
+ x10
.
S1 = v(α) = α3
S2 = v(α2
) = α6
S3 = v(α3
) = α4
S4 = v(α4
) = α12
Same error pattern gives same S1 to S2t in both code words.
46. Example: Two code words c1(x) and c2(x) belonging to DEC
(15,7) BCH constructed over GF(24
) incur 2 and 1 errors so
giving (a) v1(x) = x11
+ x9
+ x8
+ x6
+ x5
+ x +1 and
(b) v2(x) = x12
+ x11
+ x10
+ x9
+ x7
+ x5
+ x respectively .
Find c1(x) and c2(x).
Solution: (a) Error syndromes are—
S1 = v(α) = α3
S3 = v(α3
) = α13
x2 + α3
x + α7
= 0 X1X2 = α7
, X1+X2 = α3
,
Roots are X1= α10
X2 = α12
,
e(x) = x10
+ x12
c1(x) = x12
+ x11
+ x10
+ x9
+ x8
+ x6
+ x5
+ x +1
(b) S1 = α4
S3 = α12
X = α4
c2(x) = x12
+ x11
+ x10
+ x9
+ x7
+ x5
+ x4
+ x
47. Example: Code word belonging to DEC (15,7) BCH
constructed over GF(24
) is c1(x) = x8
+ x7
+ x6
+ x4
+ 1
Determine outcome of decoder when it incurs error patters
(a) e(x) = x7
+ x2
+1
(b)e(x) = x11
+ x9
+ x6
+ x4
Solution : (a) v (x) = x8
+ x6
+ x4
+ x2
S1 = v(α) = α11
S3 = v(α3
) = 1
x2 + α11
x + α3
= 0
No element of GF(24
) is a solution. Decoding failure.
(b) v (x) = x11
+ x9
+ x8
+ x7
+ 1
S1 = v(α) = α7
S3 = v(α3
) = 0
x2 + α7
x + α14
= 0
e(x) = x2
+ x12
Decoding Error.
48. Error Location Polynomial
For t-error correcting codes, polynomial of degree ≤ t and
has coefficients as function of error syndrome.
For µ ≤ t errors, a polynomial of degree µ can be found
whose µ roots are reciprocal of required error-location
number.
Let σ1 = S1 and σ2= (S1
3 + S3) / S1 ,-- then
x + σ1 = 0 Single error
x2 + σ1x + σ2 = 0 Double error
xµ + σ1xµ-1+ σ2 xµ-2 +…σµ-1x + σµ = 0 µ errors
µ roots give µ error location numbers.
Replacing x by 1/x to form equation whose roots are
reciprocal of error location numbers—
1/xµ + σ1/xµ-1+ σ2 /xµ-2 +…σµ-1/x + σµ = 0 OR
σ0+ σ1x+ σ2 x2 +…σµ-1xµ-1 + σµ xµ= 0 where σ0=0
49. Error Location Polynomial
Error location polynomial is --
σ(x) = σ0+ σ1x+ σ2 x2 +…σµ-1xµ-1 + σµ xµ= 0
More convenient and conventional to use error location
polynomial whose reciprocal roots are error location
numbers.
For double error correcting codes, error-location
polynomial is –
1 + σ1x + σ2 x2= 0
50. Example : Given that v (x) = x9
+ x8
+ x6
+ x4
+ 1 represents a
codeword c(x) of double error correcting (15,7) code, that
has incurred 2 errors. Determine c(x).
Solution: For GF(24
)
S1 = v(α) =1
S3 = v(α3
) =α4
σ1 = S1 =1, σ2 = (S1
3 + S3) / S1 = α
σ(x) = 1 + σ1x + σ2 x2 = 1 + x + α x2 = 0
Using Chien Search, roots are α6
and α8
.
Hence error location numbers are –
X1 = 1/ α6
= α9
X2 = 1/ α8
= α7
e(x) = x9
+ x7
c (x) = x8
+ x7
+ x6
+ x4
+ 1
51. Error Location Polynomial
If the roots of error location polynomial are field elements
β1, β2,… βµ, then error location numbers are—
X1 = 1/β1,
X2 = 1/β2, …
Xµ = 1/βµ
Error location polynomial can be expressed as—
52. Error Location Polynomial
Decoding BCH code demands determination of error
location polynomial and its coefficients.
σ0, σ1, σ2, …, σµ, to be determined from error syndromes.
These coefficients are called elementary symmetric
functions of error location numbers.
Comparing following two sets of equations— Shown below
◦ Error location numbers Vs error syndromes
◦ Error location numbers Vs polynomial coefficients
Eliminating error location numbers from these two sets–
S1 = X1 + X2 + ….Xµ
S2 = X1
2 + X2
2 + ….Xµ2
….
S2t= X1
2t + X2
2t + ….Xµ2t
53. Error Location Polynomial – µerrors, 2µ syndromes
Last term iσi is 0 for even values of i and σi for odd i.
Remaining error syndromes are--
54. Error Location Polynomial –
These linear equations are called Newton’s Identity.
The two sets can be expressed as--
55. Error Location Polynomial – Binary Codes
S2i = Si
2
e.g. S2= S1
2
and 2σ2 = 0
Hence S2= σ1S1 + 2σ2 reduces to S1= σ1
S2 and hence Si with even i are excluded.
57. Error Location Polynomial – Example-TEC
µ = 3. Error Location polynomial --
multiplying S2 to S3 and adding to S5 --
58. Error Location Polynomial – Example-TEC
From middle expression -
σ3 may be simplified by substituting σ1 and σ2 .
59. Error Location Polynomial – Example
Given a triple error correcting code and its error syndromes
S1 = α3, S3 = α8, S5= 1 over GF(24), determine the error
location polynomial. Find error location numbers.
60. Example: Given the (15,7) double error correcting binary BCH
code constructed over GF( 24
) .The decoder inputs-
v1 = (100011011000101)
v2 = (001010111010001)
Determine resulting error location polynomials. What is the
decision of decoder . Find actual codes transmitted.
Hint: v1 =uncorrectable error patterns
C2 =?
61. The Peterson-Gorenstein- Zierler decoder
General purpose decoder used for any t-error correcting
BCH code.
Based on error location polynomial.
Without changing the equation, reversing the order of terms
in equations for syndrome, matrix can be given as -
62. The Peterson-Gorenstein- Zierler decoder
The code is designed to correct t errors.
Let there be µ errors, µ ≤ t.
The matrix M is non-singular (has inverse) for i = µ but
singular for µ ≤ i ≤ t. Then
63. The Peterson-Gorenstein- Zierler decoder
Example: A code is designed to correct 5 errors but only 3
errors actually occur.
t = 5, and µ = 3.Taking i = 5, ..
For i = 5, det(M) = 0 and M is singular.
For i = 4, 4X4 matrix M will also be singular.
If i = µ = 3, the 3X3 matrix M is non-singular, having
inverse.
Hence error polynomial coefficients can be found using --
σ = M-1
S.
64. Decoding Procedure
1. Calculate error syndrome S1, S2,…S2t from v(x).
2. Assume number of errors, i = t.
3. Construct the matrix M.
4. Find det(M). If det(M) = 0
1. Reduce i by 1. Go back to step 3
2. Otherwise continue to step 5.
5. Determine M-1
and construct S.
6. Find polynomial coefficients using σ = M-1
S. Find σ(x).
7. Find roots of σ(x) and take their reciprocals.
8. Error location numbers are given by reciprocal roots.
65. Decoding Procedure – Example µ< t
Consider (15,5) triple error correcting BCH code with –
v(x)= x8
+ x5
+ x2
+ x + 1 where v(x) is code c(x) with 2
errors.
Step 1: Error syndromes over GF(24) are –
66. Decoding Procedure - Example
Step 2 : Assume maximum number of errors, i = 3.
Step 3 : The matrix M is
Step 4 : Determinant of M is
67. Decoding Procedure - Example
As Matrix M is singular(No inverse), i is reduced by 1. i=2.
Step 3 : The matrix M is
Step 4 : Determinant of M is
As Matrix M is non-singular(Has inverse), find M-1
.
Step 5 : M
-1
= adj(M)/det(M)
68. Decoding Procedure - Example
Step 6 :Using σ = M-1
S
Step 7 :Using Chien rule over GF(24), roots of σ(x) are α5
and α11.
Reciprocal of α5 and α11 are error location numbers α10 and
α4.
Error pattern e(x) = x10 + x4..
c(x) = v(x) + e(x) = x10 + x8
+ x5
+ x4 + x2
+ x + 1
69. Decoding Procedure – Same Example, µ= t
Consider (15,5) triple error correcting BCH code with –
v(x)= x13
+ x10
+ x8
+ x4
+ x + 1 where v(x) is code c(x) with
some errors. Find the number of errors , error pattern and
c(x).
Step 1: Error syndromes over GF(24) are –
70. Decoding Procedure - Example
Step 2 : Assume maximum number of errors, i = 3.
Step 3 : The matrix M is
Step 4 : Determinant of M is
M non-singular, 3 errors have occurred. Inverse of M is
71. Decoding Procedure - Example
Step 6 :Using σ = M-1
S
Step 7 :Using Chien rule over GF(24), roots of σ(x) are α2,
α10 and α13.
Reciprocal of α2, α10 and α13 are error location numbers α13
α5 and α2.
Error pattern e(x) = x13 + x5 + x2..
c(x) = v(x) + e(x) = x10 + x8
+ x5
+ x4 + x2
+ x + 1
72. Peterson-Gorenstein- Zierler decoder -
DRAWBACKS
Matrix inversion.
For large error-correction limit , determinants evaluation
can be computationally slow and inefficient.
A second matrix inversion required while dealing with non-
binary codes.
Need to avoid matrix inversion.
73. Non-Binary BCH Codes
In binary codes, code symbols lie in GF(2).
Non - binary cyclic code has its symbols in GF(q) where q
is a prime number or any power of a prime number.
A non-binary (n, k) cyclic codes can be constructed from a
polynomial g(x) of degree n-k, where g(x) has coefficients
in GF(q) and divides xn-1.
For binary codes xn-1= xn+1
Non - binary cyclic code concerns with detection and
correction of errors in symbols.
Error location and magnitude of error, both need to be
determined in Non - binary cyclic code .
(In binary codes, error magnitudes are 1 and only location
of error is required.)
74. Non-Binary BCH Codes
A t-error correcting non-binary BCH code of block length n
= qm-1 is a (n,k) cyclic code if its g(x) has coefficients in
GF(q)and roots β, β2
,…β2t
in GF(qm
).
Non-binary BCH codes requires minimal polynomial over
GF(q).
Generator polynomial is given as –
g(x) = LCM[m1(x), m2(x),… m2t(x)]
Where mi(x) is minimal polynomial over GF(q).
If q = 2, minimal polynomials are binary, giving Binary BCH.
Most important class of non-binary BCH codes are Reed-
Solomon codes.
Both Symbols and generator polynomial roots lie in the field
GF(q).
Block length n = q-1.
Here q = 2m and field GF(2m).
75. Reed-Solomon Codes
A t-error correcting Reed-Solomon code of block length n =
q-1 is a (n,k) cyclic code if its g(x) has coefficients and roots
in GF(q). q = 2m
.
Its g(x) is the least degree polynomial that has β, β2, β3,…
β2t as roots where β belongs to GF(2m
).
As before, minimal polynomial is not obtained using
conjugates of roots.
The minimal polynomial over GF(2m
) of an element β in
GF(2m
) is obtained directly from root –-- mβ
= x + β
g(x) = (x + β ) (x + β2
) (x + β3
)…(x + β2t
)
No need to take LCM as all factors are distinct.
76. Reed-Solomon Codes- Generator Polynomial
Example :-Find generator polynomial for double error
correcting Reed-Solomon code over GF(24
) if β = α.
g(x) = (x + α ) (x + α2
) (x + α3
)(x + α4
)
g(x) = x4
+ α13
x3
+ α6
x2
+ α3
x + α10
n = 24
– 1 = 15
Degree of g(x) r = 4
k = n – r = 11
Hence it is generator polynomial for DEC (15,11) Reed-
Solomon Code.
77. Reed-Solomon Codes- Generator Polynomial
Example :- Construct a systematic Single error correcting
Reed-Solomon code with block length 7.
Field can be GF(23
) as this gives codes with block length n
= 23
– 1= 7
For t = 1, β = α, g(x) = (x + α ) (x + α2
) = x2
+ α4
x + α3
n = 7, r = 2. Therefore k= 5. Hence…
SEC (7,5) Reed Solomon code with g(x) = x2
+ α4
x + α3
Let data is i = ( 1 0 α α5
α2
)
i(x) = x4
+ αx2
+ α5
x + α2
Multiplying by xn-k
= x2
x2
i(x) = x6
+ αx4
+ α5
x3
+ α2
x 2
Dividing by g(x) to get remainder – r(x) = x + α2
c(x) = x2
i(x) + r(x) = x6
+ αx4
+ α5
x3
+ α2
x 2
+ x + α2
C = ( 1 0 α α5
α2
1 α2
)
78. Reed-Solomon Codes- Generator Polynomial
Example :- Construct a (15,13) systematic SEC Reed-
Solomon code for i = (0 0 α 0 0 1 α7
α2
0 0 1 α α2
) where α
is a primitive element for GF(24
)
Solution :- g(x) = (x + α ) (x + α2
) = x2
+ α5
x + α3
n= 15, r= 2, k= 13.
r(x) = α3
x + α6
C = (0 0 α 0 0 1 α7
α2
0 0 1 α α2
α3
α6
)
79. Example :- Assume GF(4) = (0, 1, α, α2} with α2 + α + 1 = 0.
Design RS code over GF(4) with n = 3, designed distance 2
and k = 2 with g(x) =x - α2. Find all 42 codewords. Root=α2
Solution: Messages { 00, 01, 0 α ,0 α2, 10,…, α2α2} total 16.
Let D = 01, d(x) = 1.
Rem[x(n-k)d(x)/g(x)] = Rem[x/(x + α2)] = α2.
Code = 01α2. Check C(α2) = 0
Let D = αα2. d(x) = αx+ α2
Rem[x(n-k)d(x)/g(x)] = Rem[x.(αx+ α2)/(x + α2)] = 1.
Code = αα21. = α β 1. (β =α2 )
000 10α α0α2 α201
01α2 111 α10 α2 1α
0α1 1αα2 ααα α2α0
0α2α 1α20 αα21 α2α2α2
Example
80. R-S code can be extended by adding an overall parity
check without increasing minimum distance.
Theorem 1. Let C be the (n = qm – 1, k, d ) RS code with
g(x) = (x - α) (x - α2).. . (x – αd-1). (d=2t+1)
Then extending each codeword C= (c0,c1,…cN-1) by adding
an overall parity check cN produces an (n+1, k, d+1) code
where cN= -∑ci. i= 0 to N-1
D increases to D+1 provided cN= -∑ci ≠ 0.
0000 10αα2 α0α21 α201α
01α2α 1111 α10α2 α2 1α0
0α1α2 1αα20 αααα α2α01
0α2α1 1α20α αα210 α2α2α2α2
Extended Reed-Solomon Codes
81. Example:c(x) = x6
+ α3
x4
+ α5
x3
+ α6
x 2
+ x + α2
= (1)x6
+ (1+α)x4
+ (1+ α +α2
)x3
+ (1+α2
)x 2
+ (1)x + α2
C = ( 1 0 α3
α5
α6
1 α2
)
Let α = (α1, α2, .. . , αn ) where the αi are distinct elements of
GF(qm
)
let ν = (v1, v2,.. , vn ) where the vi are nonzero elements of
GF(qm
).
Then the generalized RS code, GRSK(α, v ),consists of all
vectors--
GRSK(α, v )= (v1f(α1), v2f(α2), v3f(α3), … vnf(αn) )
where , f(x)єF[x]k
where F[x]k ranges over set of polynomials in F[x] of degree
< K with coefficients from GF(qm
). i.e. αi can be expressed
as polynomial of α, α2
, etc
Generalized Reed-Solomon Codes
82. Reed-Solomon Codes- Error Correction Capability
Generator polynomial g(x) of t-error-correcting R-S code
has 2t linear factors for roots β, β2, β3,… β2t.
Hence Degree of g(x) = n - k =2t
Hence Parity check symbols = 2t
Code is called 2t error correcting(n, n-2t) R-S code.
R-S codes are MDS codes hence for 2t error correction,
dmin = 2t + 1 = n – k + 1
Such codes are maximum distance codes.
Designed distance d0 and minimum distance dmin are same
for R-S codes.
83. Reed-Solomon Codes- Number of code-words
A binary (n,k) RS code have 2k code words.
For non-binary RS code, code words are Very large.
A code has n positions, each take any of q = 2m values.
Hence a non-binary (n,n-2t) code has qn-2t code words.
e.g. SEC (7,5) RS Code in GF(23) has 32768 code words.
84. Reed-Solomon Codes- PGZ Decoding
Decoding RS code requires error positions as well as error
magnitude for each position.
Error polynomial with µ error position and magnitude is:
e(x) = yp1
xp1 +yp2
xp2 +…ypµ
xpµ
ypi
is error magnitude at position pi
v(x) = c(x) + e(x)
S1 = v(α) = e(α) = yp1
αp1 + yp2
αp2 +… ypµ
αpµ
S2 = v(α2
) = e(α2
) = yp1
α2p1 + yp2
α2p2 +… ypµ
α2pµ
….
S2t = v(α2t
) = yp1
α2tp1 + yp2
α2tp2 +… ypµ
α2tpµ
Let Xi = αpi and Yi = ypi
then syndrome equations are
S1 = Y1X1 + Y2X2 + …. YµXµ
S2 = Y1X1
2 + Y2X2
2 + …. YµXµ2
….
S2t= Y1X1
2t + Y2X2
2t + …. YµXµ2t
85. Reed-Solomon Codes- Decoding -- SEC
For non-binary RS Code, S2i ≠ Si
2
So 2t error syndromes need to be individually evaluated.
For SEC, t = 1, µ = 1
S1 = Y1X1
S2 = Y1X1
2
X1= S2 / S1
Y1= S1
2
/ S2
Compare values of position X1 and magnitude of error Y1
with binary RS code where S2 = S1
2
.
86. Reed-Solomon Codes- Decoding -- SEC
Example: For (7,5) SEC R-S code, v = (0 1 α5
α2
1 α6
α3
) where α is an
element of GF(23).Determine magnitude and position of error and
codeword if it is known that codeword underwent single error.
Solution:-
v = (0 1 α5
α2
1 α6
α3
) Standard right to left--
S1 = v(α) = α
S2 = v(α2
) = α3
X1= S2 / S1 = α3
/α = α2
Y1= S1
2
/ S2 = α2
/α3
=α6
Error located at x2
having magnitude α6
.
c(x) = v(x) = α6
x2
c(x) = x5
+ α5
x4
+ α2
x3
+ α2
x2
+ α6
x + α3
c = (0 1 α5
α2
α2
α6
α3
)
87. Reed-Solomon Codes- t error correction
Code determines number of errors µ and the location
numbers X1, X2, …. Xµ by any technique used for BCH
code.
Then µ error magnitudes can be obtained by solving first µ
equations for Y1, Y2, …. Yµ .
S = XY (S is NOT same as S of PGZ decoder.)
Y = X
-1
S X is in form of Vandermonde matrix.
X will always be non-singular as µ non-zero and distinct
errors already known to exist.
88. Decoding Reed-Solomon Codes- Example
Consider a codeword polynomial c(x) belonging to the
triple-error-correcting Reed-Solomon (15,9) code, that
incurred 3 errors giving v(x) as
v(x) = α3
x12
+ x8
+ α10
x7
+ α2
x5
+ α8
x4
+ α14
x3
+ α6
Error syndromes are – Assuming errors = 3
89. Decoding Reed-Solomon Codes- Example
Assuming errors = 3
•As det(M) ≠ 0, decoder assumes 3 errors have occurred.
96. The Berlekamp decoding algorithm
Fast and efficient algorithm for decoding BCH codes.
Uses error-location polynomial but avoids need for matrix
inversion while determining polynomial coefficients.
Algorithm more complex than Peterson-Gorenstein-Zierler
decoder.
Uses an iterative technique to find error-location polynomial
σ(x) whose coefficients satisfy Newton’s identities.
97. The Berlekamp algorithm - Method
A suitable set of initial conditions is required. Otherwise the
algorithm may fail to carry out the required number of
iterations.
The algorithm starts by finding a polynomial σ
(1)
(x)
◦ whose coefficients satisfy the first of Newton’s identities.
◦ which is a polynomial of least degree that meets the
requirement.
To find polynomial σ(2)
(x) –
◦ Check if σ(1)
(x) satisfies first 2 equations of Newton’s
identity.
◦ If yes, then σ
(2)
(x) = σ
(1)
(x).
◦ Otherwise σ(1)
(x) is modified by adding a suitable
correction term to give σ
(2)
(x) of least degree, whose
coefficients satisfy first 2 equations of Newton’s identity.
Process continues…
98. The Berlekamp algorithm - Method
Newton’s identities relate the error syndromes to the
coefficients of the error location polynomial.
At each iteration, polynomial coefficients are used to
estimate the error syndromes of the following iteration.
Let σ(i)
(x) be the polynomial of least degree whose
coefficients satisfy first i Newton’s identities. Then -
• To test whether coefficients of σ(i)
(x) satisfy (i+1)th identity—
• Predicted (i+1)th syndrome =
• Discrepancy between predicted and actual syndromes are
• di is known as the ith discrepancy.
99. The Berlekamp algorithm - Method
If di = 0,
◦ Coefficients of σ(i)
(x) satisfy the first (i+1) identities.
◦ σ(i+1)
(x) = σ(i)
(x)
◦ The degree ri+1 = ri.
If di ≠ 0,
◦ Coefficients of σ(i)
(x) fail to satisfy the first (i+1) identities.
◦ σ(i)
(x) needs to be modified by adding a suitable
correction polynomial.
◦ Correcting polynomial depends on one of previous
polynomial σ(k)
(x) such that—
The discrepancy dk ≠ 0.
nk has the largest value, where nk = k - rk (rk is the
degree of σ
(k)
(x).
Polynomial required is given by -
100. The Berlekamp algorithm - Method
It is polynomial of least degree whose coefficients satisfy
(i+1) Newton’s identities.
Correction polynomial has degree i+ rk - k = i - nk.
The degree of σ(i+1)
(x), ri+1 is ri or i - nk whichever is largest.
ri+1 = max(ri , i – nk)
After finding σ(i+1)
(x) and ri+1 , the coefficients of σ(i+1)
(x) are
used to estimate the next error syndrome -
Table is updated.
101. The Berlekamp algorithm - Method
Process continues iteratively until a polynomial σ(2t)
(x) with
coefficients satisfying all the Newton’s identities is obtained.
Error location polynomial is then σ(x) = σ(2t)
(x).
Error location numbers are inverse of roots of σ(x).
102. The Berlekamp algorithm - Example
Peterson-Gorenstein-Zierler decoder was used to decode a
(15,5) triple-error-correcting code in which error syndromes
were -- (α is an element of GF(24
).
S1 = α12
,
S2 = α9
,
S3 = α10
,
S4 = α3
,
S5 = α5
,
S6 = α5
Find error location polynomial and error location numbers.
For Berlekamp algorithm, initial conditions are -
103. The Berlekamp algorithm - Example
First iteration : i=0
d0 = α12
≠ 0
Need to find a polynomial prior to σ(0)
(x) that has dk ≠ 0 and
largest value of nk.
Only available : σ(-1)
(x) with k=-1 and d-1 = 1 ≠ 0.
Required polynomial is --
104. The Berlekamp algorithm - Example
First iteration : i=0
Degree of σ(1)
(x) is r1 = max(r0 , 0 – n-1) = max(0,1) = 1
To find d1, coefficients of σ(1)
(x) are used to estimate next
error syndrome.
105. The Berlekamp algorithm - Example
Second iteration : i=1
d1 = 0
from σ(2)
(x)
n2 = 2-r2 = 1
106. The Berlekamp algorithm - Example
Sixth iteration : i = 5
As 2t = 6 for triple error correcting code
Same as obtained before.
107. The Berlekamp algorithm - Example
If number of errors µ < t, then all 2t iterations not required.
If discrepancy di and following mi = t- ri -1 discrepancies are
zero, then σ(i)
(x) is required error-location polynomial.
Let t=3 and µ=1
σ(1)
(x) = 1 + S1x
r1 = 1
n1 = 0
d1 = 0
m1 = t - r1 -1 = 1 as t = 3
If next discrepancy is zero, no more iterations are required.
σ(1)
(x) = σ(x)
108. The Berlekamp algorithm - Example
Consider c(x) = x12
+ x11
+ x9
+ x8
+ x7
+ x2
+ 1 from (15,5)
triple-error-correcting binary BCH code incurs single error
e(x) = x11
and gives x12
+ x9
+ x8
+ x7
+ x2
+ 1. Show that
Berlekamp algorithm requires fewer than 2t iterations.
Over GF(24
) error syndromes and initial conditions are -
• d1 = α11
≠ 0. Hence k = -1
109. The Berlekamp algorithm - Example
m1 = t – r1 – 1 = 1.
Hence if next discrepancy is zero, STOP.
As d1 = 0,--
σ(x) is required polynomial.
1/ α11
is root. Hence error location number is α11
.
e(x) = x11
.
111. Peterson-Gorenstein-Zierler decoderVS Berlekamp algorithm
Number of iterations in Berlekamp algorithm is normally
less than 2t as errors normally less than t.
For binary code, iterations required are t instead of 2t.
Maximum number of iterations increases proportional to t.
Involvement of matrix inversion once for binary and twice
for non-binary code makes Peterson-Gorenstein-Zierler
decoder tedious.
Processing time of Peterson-Gorenstein-Zierler decoder
increases significantly as t increases as evaluation of
inverse of tXt matrix depends on t3
.
112. The Error Evaluator Polynomial – proof omitted
Determines error magnitudes without matrix inversion.
Let number of errors µ and error-location polynomial σ(x)
already found.
Error-evaluator polynomial is defined as --
• Magnitude Yj corresponding to error-location number Xj
is given by --
113. The Error Evaluator Polynomial – Example
A triple-error-correcting RS code is received with error as
v(x) = α3
x12
+ x8
+ α10
x7
+ α2
x5
+ α8
x4
+ α14
x3
+ α6
Find Error syndromes, error-location polynomial and error-
location numbers. Find error magnitudes.
HINT: If multiple largest nk option, select one with smallest ri
to make polynomial of least degree. Important
114. The Error Evaluator Polynomial – Example
To find error magnitudes
• Same as before.
115. The Error Evaluator Polynomial – Example
A code word belonging to triple-error-correcting (15,9)
Reed-Solomon code incurs errors and gives v(x). Find c(x).
v(x) = x10
+ α3
x8
+ α11
x7
+ α8
x6
+ α6
x5
+ α4
x4
+ α5
x2
+ α9
x + α6
116. The Error Evaluator Polynomial – Example
To find error magnitudes
• Same as before.
117. Berlekamp – Massy Algorithm
Berlekamp-Massy algorithm is used to design Linear
Feedback Shift Register to generate a sequence of binary
bits.
It designs LFSR with minimum number of shift registers to
generate given bit sequence.
Basis for generation is Berlekamp algorithm.
(It is not a decoding algorithm)
What is LFSR?
118. LFSR- Linear Feedback Shift Register
It consists of series of cells, set by initializing vector (called
secret key).
Each clock shifts bits one by one towards left (/or right).
EX-OR of subset of cell content placed in rightmost
(/leftmost) cell.
Components of LFSR are-
◦ Input sequence ( secret Key).
◦ Feedback.
◦ Output sequence
Feedback ensures linear relationship between input and
output.
The linear complexity of a sequence is the length of the
shortest LFSR, which can produce that sequence.
119. LFSR- Linear Feedback Shift Register
Let input sequence = (S0, S1, …Sn-1).
Number of shift registers = n.
Feedback is given as –
f(S) = ∑i=0
n-1
ciSi
where c0, c1,…cn-1 are constant coefficients.
Output is determined by initial value and linear recursion
relationship –
Sk+n = ∑i=0
n-1
ciSk+i , k≥0 or
∑i=0
n
ciSk+i = 0
Lk({si}i0) is the linear complexity of the sequence S0, S1, …,
Sk-1, and c(k)(x) to be the characteristic polynomial of Lk
stage LFSR that generates Si, 0 i Sk-1.
122. LFSR - Properties
Characteristic polynomial of an LFSR is the polynomial,
f(x) = c0 + c1x + … + cn-1xn-1 + xn
where cn = 1 by definition.
In last example, the characteristic polynomial is given as
1 + x2 + x3 + x4.
Period of LFSR can be determined from the characteristic
polynomial without knowledge of the input sequence.
Theorem : Every polynomial f(x) with coefficients in GF(2)
having f(0) = 1 divides xm + 1 for some m. The smallest m
for which this is true is called the period of f(x).
Example -Above example has c0 = 1, i,e f(0) = 1.
f(x) divides x7 + 1 as x7 + 1 = (1 + x2 + x3)(1 + x2 + x3 + x4)
in GF(2).
m = 7 is the smallest integer in which f(x) divides xm + 1,
thus the period of f(x) is 7.
123. LFSR - Properties
Theorem : An irreducible polynomial of degree n has a
period which divides 2n – 1.
Theorem : An irreducible polynomial of degree n whose
period is 2n – 1 is a primitive polynomial.
Example :f(x) = x4 + x3 + 1 is a monic irreducible polynomial
over GF(2). Find its period. (Highest or Leading Coefficient is 1)
We need to determine the smallest m such that f(x) divides
xm + 1.
f(x) is irreducible- it has a period which divides 24 – 1 = 15.
Since m > 4, our possible candidates are 5, 15 :
x5 + 1 = (x + 1)(x4 + x3 + 1) + (x3 + x)
x15 + 1 = (x11 + x10 + x9 + x8 + x6 + x4 +x3 + 1)(x4 + x3 + 1)
f(x) has period 15 and is a primitive polynomial.
Confirm by finding outputs.
124. Berlekamp – Massy Algorithm - Theorems
Berlekamp Massey Algorithm – This algorithm is similar to
Berlekamp decoding algorithm with a difference that –
Berlekamp decoding algorithm is used for decoding BCH
and RS codes,
While Berlekamp-Massey algorithm is used to find LFSR to
generate given binary sequence using same concept.
129. Mapping GF(2m) Codes into binary codes
With q=pm, elements of GF(q) can be represented by m-
tuples of elements from GF(p).
(N,K,D) Reed-Solomon codes over GF(q) becomes code
over GF(p) with (n = mN, k = mK, d ≥ D)
If q=2m, binary codes so obtained have high minimum
distance.
Example: Let 1, α are basis for GF(4). (refer vector spaces). Map
the symbols in GF(2).
GF(4) has 4 elements which can be coded using 0 and 1
0 00
1 10
α 01
1 + α = α2 11
131. Mapping GF(2m) Codes into binary codes
Let c=(c0, c1, …cN-1) belong to an (N,K,D) RS code over
GF(2m).
If we replace each ci by its binary m-tuple, and add an
overall parity check on each m-tuple, the resulting binary
code has parameter– (2→3, 2→3, 2→3,… )
n = (m+1)(N=2m-1), k = mK, d ≥ 2D = 2(2m-K) (N-K+1)
for any K=1,…. 2m - 2.
If RS code is already an extended code then same
arrangement as above will now give binary code
parameters as
(parity check in two levels) (3→4) →(2→3, 2→3,… )
n = (m+1)(N=2m), k = mK, d ≥ 2D = 2(2m-K+1) for any
K=1,…. 2m - 1. Check
E.g. From the (15, 10, 6) and (16, 10, 7) codes over GF(24)
we obtain (75,40,12) and (80, 40, 14) binary codes.
132. Nested (Concatenated) Codes
Gives very long block code with very large or even burst
error correcting capability.
Combines a code of small alphabet size and a code of
large alphabet size.
A block of q-ary symbols of length kK is broken into K sub-
blocks of k symbols. (e.g. q=2, k=3)
Each sub-block is viewed as an element from a qk-ary
alphabet. (one of 8 symbol levels)
A sequence of K such sub-blocks are encodes with an
(N,K) code over GF(qk). (e.g RS code)
Each of N qk-ary symbols are re-interpreted as k q-ary
symbols and coded with an (n,k) q-ary code.
Two distinct levels of coding.
New code (nN, kK)
133. Nested (Concatenated) Codes
Combination of encoder, channel and decoder is thought of
as super-channel with larger input/output alphabet GF(qk).
(N,K) super-code is constructed over qk –ary alphabet for
this super-channel.
134. Nested (Concatenated) Codes
Example: Code for octal channel by nesting a (7,4) RS
code over GF(8) with a (22,18) RS code over GF(84).
Inner Code: (7, 4) RS code over GF(8).
Outer code: (22,18) RS code over GF(84).
72 octal message character in GF(8) are arranged in array
of 4X18.
135. Nested (Concatenated) Codes
4 characters in a column over GF(8) are considered as one
character in GF(84).
18 such characters in GF(84) are coded into 22 characters
using (22,18,5) outer RS code.
Each of 22 coded characters in GF(84) are reconsidered as
4 characters in GF(8) to give array 4X22.
136. Nested (Concatenated) Codes
4 characters in each column are coded by (7,4,4) inner RS
code over GF(8) to give array of 7X22.
Produces single code of block length 154 over GF(8).
Code (154,72) nested code over GF(8)
Symbols are transmitted row by row.
137. Nested (Concatenated) Codes
Received message is received with errors and erasures.
Inner coding was done vertically while characters were
transmitted and reassembled at receiver row-wise.
In spite of large errors or burst errors, errors in each
column are less.
138. Nested (Concatenated) Codes
All columns where column errors ≤ t, they are corrected by
inner decoder.
Remaining error can now be corrected by outer decoder.
139. Nested (Concatenated) Codes
Example: Inner Code: (7, 3) DEC RS code over GF(8).
Outer code: (511, 505) TEC RS code over GF(83).
After nesting they form (3577, 1515) code over GF(8).
It can correct any pattern of 11 errors.
Input is block of 1515 octal characters.
Codeword is a vector of 3577 octal characters shown below
in two dimensional array for illustration.
140. Justesen Codes
Mapping codes converts (N,K) linear code over GF(qm
) into
(mN,mK) linear code over GF(q) by ‘tilting’ each qm
-ary
symbol into m q-ary symbols.
d* nonzero symbols of min wt. codeword tilts to md*
symbols, not all symbols zero.
Code rate remains unchanged but minimum distance is
much smaller fraction of block length.
Justesen modified the construction to give a good code for
long block lengths.
Advantage: Creates a simple form of multiple burst-error
correcting codes.
Gives infinite family of good binary codes.
141. Justesen Codes - Construction
Construction starts with all the codewords of a single fixed
(N,K) Reed-Solomon code that has the same number of
codewords as desired Justesen code.
Let α be the primitive element of GF(qm
).
Starting with codeword C = (c0, c1, … cN-1) from Reed-
Solomon code, first form the 2 by N array of GF(qm
)-ary
symbols. (ci Є GF(qm
) )
c0 c1 c2 … cN-1
α0c0 α1c1 α2c2 … αN-1cN-1
C’ = (c0,α0c0 ; c1,α1c1 ; c2,α2c2 ; … cN-1,αN-1cN-1)
Replace each element by binary m-tuple symbols we obtain
binary vector of length 2mN.
This gives one code word of the Jestesen Code.
Code rate R = k/2n, half of RS code.
142. Justesen Codes
Justesen code is the concatenation code of an RS code
and linear binary codes.
A natural decoding algorithm for Justesen code would be
one that reverses the process of concatenation.
Algorithm:
Decode each set of m bits to yi over GF(qm
).
Ties are broken arbitrarily to give two set.
Decode y = (y0, . . . , yn−1) using any decoding algorithms
for RS code.
The decoding algorithm can be used to correct all errors up
to less than dD/4 in number.
143. Justesen Codes
Theorem: The minimum distance of the (2mN, mK)
Justesen code constructed from an (N,K) RS code is
bounded by --
144. Justesen Codes
Proof:
The minimum weight codeword has N-K+1 distinct non-
zero columns.
The weight is atleast as great as word constructed by filling
N-K+1 columns by N-K+1 distinct 2m-tuples of smallest
weight.
In an m-tuple, there are (2m
i) ways of picking i non-zero
places and (q-1) different non-zero values.
Hence there is a column of weight I for every I that satisfies
(2).
The minimum distance is at-least large as the sum of the
weights of these columns. Hence (1).
145. Justesen Codes
Disadvantage: Not very attractive for random error
correction.
Good only for long block-lengths.
Hence did not get popular.
Hence they do not have well developed collection of
decoding algorithms.
146. Alternant Codes- Limitations of BCH codes:
A BCH code over GF(q) of block length n = qm-1 is a
subfield-subcode of a Reed-Solomon code over GF(qm).
subfield-subcode has same length as original but fewer
codes.
BCH code consists of all those Reed-Solomon codes that
are GF(q)-valued.
BCH codes with large block length and large minimum
distance contain fewer codes.
But in BCH code, with increasing block length and fixed
rate R’ (k/n≥R’),normalized minimum distance d*/n
approaches zero.
Hence, the BCH code uses very few of many code words of
RS code or else has poor distance structure.
Alternant codes, a variation of BCH code, increases
minimum distance by reducing RS code to a subfield by
new way.
147. Alternant Codes
Alternant codes are linear codes that are a variation of BCH
codes defined such that in spite of fixed rate, large
minimum distance can be obtained.
Let n = qm-1,
A fixed n-vector h of nonzero components over GF(qm)
called (time-domain) template, is chosen.
Reed-Solomon code over GF(qm) with designed distance
2t+1 is chosen.
If Alternant code is GF(q)-valued vectors C and C’ is
codeword in RS code then-
◦ c’i = ci hi for i= 0,1,…n-1 . (component-wise in Time domain)
hi is always nonzero.
So, let gi = hi
-1.
ci = gic’I for i= 0,1,…n-1 .
148. Alternant Codes
Minimum distance very large if template chosen properly.
Can be defined in frequency domain also.
Let h ≠ 0 and H is its frequency domain template.
Cyclic convolution H*C gives Reed-Solomon spectrum.
∑n-1
k=0
H((j-k)) Ck = 0 j = j0, … j0+ 2t-1.
If G is transform of vector gi ( =hi
-1), H*G is a delta function.
(If j=0, (H*G)j =1; otherwise (H*G)j =0.)
As polynomial this convolution becomes
◦ H(x)G(x) = 1 (mod xn-1).
H(x) is a polynomial over GF(q), it has no roots in GF(qm).
Hence H(x) is prime to xn-1.
H(x)G(x) + (xn-1) F(x) =1
Hence H(x)G(x) = 1 (mod xn-1).
149. Alternant Codes
The alternant code C(α, h ) consists of all codewords of
GRSk0
which have components from GF(q).
C(α,h) consists of all vectors C over GF(q) such that
CHT=0, where H is given by H = Vr(α1 …αn) .diag(h1 …hn)
1 … 1 h1 0 . 0
α1 … αn 0 h2 . 0
H= α1
2 . αn
2 . 0 . 0
. . . . . . .
(α1)r-1 … (αn)r-1 0 0 . hn
h1 … hn
h1α1 … hnαn
H= . . .
. . .
h1(α1)r-1 … hn(αn)r-1
150. Alternant Codes - example
Decoding by any method used for BCH or RS codes.
GF(8)
BCH Code Reed-Solomon Code (7, 5, 3) Alternant code
g=(5, 6, 1, 4, 1, 1, 7)
0000000 0000000 0000000
0000163
0000276
0000315
0001011 0001011
0001172
0001304
0007077 0001011
0007114 0001111
0007217
0010073
0010110 0010110 0010110
151. Goppa Codes
Goppa code of designed distance d is an alternant code of
designed distance d, with additional property that—
◦ The inverse frequency template G has width d.
◦ Inverse frequency template, called Goppa polynomial can
be described as G(x) with degree d-1.
A narrow sense Goppa code is a Goppa code with 2t parity
frequencies at locations αn-2t+1, αn-2t+2, ….α0.
The narrow sense Goppa code over GF(q) with block
length n = qm -1 and with Goppa polynomial G(x) is given
by the set of all vectors c = (c0, …cn-1) over GF(q) satisfying
∑
i=0
n-1
ci Π
i’≠i
(x – αi’ ) = 0 (mod G(x))
152. Goppa Codes
The Goppa code over GF(q) with block length n = qm and
with Goppa polynomial G(x) is given by the set of all
vectors c = (c0, …cn-1) over GF(q) satisfying –
∑
i=0
n-1
ci Π
i’≠i
(x – βi’ ) = 0 (mod G(x))
Where βi’ ranges over all elements of GF(qm).
Special case – Binary Goppa codes are codes whose
Goppa polynomial has no repeated zeros in any extension
fiels.
Called seperable Goppa codes.
d* is atleast 2r+1 where r is degree of G(x).
153. Goppa Codes -Example
Smallest example is (8, 2, 5) binary Goppa code.
G(x) = x2 + x + 1.
Roots(zeros) of G(x) are in GF(4) or in any extension of
GF(4).
Hence none are in GF(8).
Hence G(x) can be used to obtain a Goppa code with
blocklength 8, minimum distance of 5 and 2 information
symbols.
154. ERROR CONTROL CODING
BOOKS:-
• Theory of Error Control Codes by MacWilliams and Slone
• Theory and practice of Error Control Codes by Balahut
• Error Control Coding by Salvatore Gravano
• Error Control Coding by Shu Lin and Daniel Costello
• InformationTheory, Coding and Cryptography by Ranjan
Bose