Beruflich Dokumente
Kultur Dokumente
roots. It is quite easy to implement but there is a problem • Given a set of syndrome values, the Berlekamp will find
associated with this, which results in a decoder failure and is the best suited polynomial that will satisfy the given syndrome,
dealt with in that section. say Λ(x) is the error locator polynomial obtained. Whilst
The following code does a Chien search performing Chien search, we assume that the Λ(x) found
earlier has a number of roots equal to that of the degree(Λ(x)).
for i=0:n-1
i.e Λ(x) = (x−a)(x−b)(x−c)... where a, b, c are in the field.
temp1=gf(0,m,prim_poly);
So if the Λ(x) obtained doesn’t have ′ k ′ roots, k = deg(L(x)),
for j=1:L+1
then the decoder has detected k errors, but is not able to find
temp1=temp1+
the location of some or all of its roots. If such a scenario arises,
c(j)*(gf(2,m,prim_poly)ˆ(i*j));
then Chien search and hence the decoder will fail because of
end
”its inability to locate the positions of all the errors”.
if temp1==0
roots(k)=gf(2,m,prim_poly)ˆi;
k=k+1; IV. C ONCLUSION
end The project implements an efficient RS encoder and
end decoder from the scratch and uses only the Galois Field
operations already present in the MATLAB environment. All
other functions are user-defined. To test the correctness of
F. Forney’s Algorithm to estimate error and erasure values the decoder(the encoder has been tested already using the
Having found the error locations, the key equation is RSenc), we refer to a solved example given in the book by
TODD.K.MOON, namely example 6.20. The received vector
Ω(x) = S(x)Γ(x)Λ(x) (modx2t ) (6) is the input to the decoder and the output is as follows:
and the polynomial called the combined error/erasure locator Example 6.20
polynomial is obtained by Φ(x) = Λ(x)Γ(x). Then error and The first output is the received vector, the second the erasure
erasure values are obtained by locator polynomial(the coefficients are in polynomial form in
Ω(Xk−1 ) GF),the third is the syndrome(again all elements in polynomial
eik = − (7) form of GF),the fourth error evaluator polynomial(polynomial
Φ′ (Xk−1 ) form coefficients), the error vector in exponential form, and
Ω(Yk−1 ) the decoded vector in exponential form.
fik = − (8)
Φ′ (Yk−1 ) rx =
12 99 6 11 0 11 100
The following code computes one of the error values, this 100 99 6 99 5
should be done for all error and erasure locations.
temp1=gf(0,m,prim_poly); T = GF(2ˆ4) array. Primitive polynomial = Dˆ4+D+1
for j=1:2*t Array elements =
temp1=temp1+W(j)*(roots(i)ˆ(j-1)); 1 7 13
end
temp2=gf(0,m,prim_poly); s = GF(2ˆ4) array. Primitive polynomial = Dˆ4+D+1
for j=1:P_size Array elements =
temp=gf(0,m,prim_poly); 1 0 10
for k=1:j 15 4 5
temp=temp+P(j+1)*(roots(i)ˆ(j-1));
end W = GF(2ˆ4) array. Primitive polynomial = Dˆ4+D+1
temp2=temp2+temp; Array elements =
end 1 9 11
e(X_exp(i)+1)=-(temp1/temp2); 0 0 0
e_exp =
III. D ECODER FAILURE Columns 1 through 13
There can be two cases of decoder failure: 99 99 99 99 99 99
• Any RS code is an MDS code, so there can never be a 14 1 99 99 99 5 99
case where the number of errors alone(excluding the erasures) Columns 14 through 15
will exceed t. The decoder will fail if there are some erasures 99 99
along with errors such that e + 2v > 2t, where e is the number
of erasures and v is the number of errors, in which case the rx =
reason is ”too many errors and erasures for the decoder to Columns 1 through 13
handle.” 12 99 6 11 0 11 14
4
1 99 6 99 99 99
Columns 14 through 15
99 99
Apart from this Example 6.18 in Moon has also been tested
and verified for each step of Berlekamp-Massey and all other
outputs.
R EFERENCES
[1] Todd.K.Moon, Error-Correction Coding
[2] Shu Lin, Costello, Error-Control Coding-Fundamentals and Applications
2ed