Burst-Error Correction
Burst-Error Correction
Burst-Error Correction
Chapter 7
Burst-Error Correction
1. Introduction
2. Known Codes and Coding Techniques for
Correcting Bursts
3. Fire Codes
4. Decoding of Burst-Error-Correcting
Codes
5. Binary RS Codes
6. Interleaving Technique
7. Concatenated Coding Scheme
8. Cascaded Coding Scheme: Product Code
1
Hang 2002.5
1. Introduction
In burst error channels, errors occur in clusters.
An error pattern, e = (e0 ,e1,e2 ,,...,en −1 ), is said to
be a burst of length l if its nonzero components
are confined to l consecutive positions, say
e j ,e j +1 ,...,e j +l -1 , the first and the last of which are
nonzero, i.e., e j = e j +l −1 = 1 .
For examples, the error pattern,
e = ( 0000101100100000 ), is a burst of length
7.
A linear code which is capable of correcting all
error bursts of length l or less but not all error
bursts of length l+1 is called an
l-burst-error-correcting code. The code is said
to have burst-error-correcting capability l.
For an l-burst-error-correcting linear code, all
the error burst of length l or less can be used as
coset leaders of a standard array.
Reiger Bound : The burst-error-correcting ca-
pability l of an (n,k) code is at most (n − k)/ 2 ,
i.e., l ≤ (n − k)/ 2.
2
Hang 2002.5
λ l-λ
3
Hang 2002.5
4
Hang 2002.5
3. Fire Codes
They are cyclic codes and were discovered by
P. Fire in 1959.
Let p(X) be a binary irreducible polynomial
of degree m. Let ρ be the smallest integer
such that p(X) divides X ρ + 1. The integer
ρ is called the period of p(X) .
Let l ≤ m such that 2l-1 is not divisible byρ.
And let n=LCM(2l-1,ρ).
Define the following polynomial:
g(X) = (X 2l −1 + 1 ) • p(X) .
6
Hang 2002.5
4. Decoding of Burst-Error-Correcting
Codes
Decoding consists two basic steps:
(1) Error-pattern determination, and (2) Burst
location determination.
These two steps can be easily achieved by er-
ror-trapping decoding.
The basic concept is to trap the error burst in a
(syndrome) shift register by cyclically shifting
the received vector r .
Let r ( X ) and e ( X ) be the received and error
polynomial respectively.
n − k −1
Let s ( X ) = s0 + s1 X + ... + sn − k −1 X be the syn-
drome of r ( X ) which is the remainder ob-
tained from dividing r ( X ) by the generator
polynomial g (X ) .
Recall that s ( X ) is actually equal to the re-
mainder of the error polynomial e ( X ) divid-
ing by g ( X ) , e ( X ) = a ( X ) ⋅ g ( X ) + s ( X ).
7
Hang 2002.5
r ( X ) = b( X ) g ( X ) + s ( X )
Note: r ( X ) = c( X ) + e( X ) = m( X ) g ( X ) + e( X )
⇒ e( X ) = (b( X ) − m( X ) )g ( X ) + s( X )
n-k k
Message
Xn-k-l Xn-k-1
Then,
e ( X ) = en − k − l X n − k − l + en − k − l +1 X n − k − l +1 + ... + en − k −1 X n − k −1 .
8
Hang 2002.5
9
Hang 2002.5
l-λ λ
Input r(X)
+ Syndrome Register
... l stages
Output
Buffer Register Gate +
Figure 7-2
11
Hang 2002.5
12
Hang 2002.5
5. Binary RS Codes
Consider a t-symbol-error correcting RS code
C of length 2m-1 with from GF(2m).
The binary code derived from C by represent-
ing each code symbol by a m-bit byte has
length n = m(2m-1) and number of parity bits
n-k = 2mt.
This binary RS code is capable of correcting
any single burst of length m(t-1)+1 or less be-
cause such a burst can only affect t or fewer
symbols in the original RS code C.
Example 7-4: Consider the NASA standard (255,
223) RS code over GF(28). It is capable of
correcting t=16 symbol errors. The binary code
derived from this RS code has length
n = 8 × 255 = 2040 , and dimension
k = 8 × 233 = 1784.
13
Hang 2002.5
6. Interleaving Technique
Let C be an (n, k) linear code.
Suppose we take λ code words from C and
arrange then intoλrows of anλ╳n array as
shown in Figure 7-3. This structure is called
block interleaver and C is the base code. A
typical system structure is shown in Figure
7-4.
Transmission
1st codeword
2nd codeword
3rd codeword
… …
… … λth codeword
n-k k
14
Hang 2002.5
Channel cj mi
mi Interleaver
encoder
Channel
(with memory)
mi Channel c
^
j
c k
decoder Deinterleaver
15
Hang 2002.5
16
Hang 2002.5
17
Hang 2002.5
l −1
Convolutional Interleaver
A convolutional interleaver can be used in place
of a block interleaver in much the same way.
Convolutional interleavers are better matched
for use with the class of convolutional codes
that will be described in next chapter.
Suppose the N input symbols are partitioned
into B groups (depth) and each group contains
M=N/B symbols. This convolutional interleaver
then has B sets of registers, and each shift reg-
ister stores M=N/B symbols.
Thus, the nearby symbols are separated by N
symbols – NxB interleaver. (B and N here are
similar to λ and n in the block interleaver.)
The overall delay (including interleaving and
de-interleaving) is (B-1)N symbols. (The time
20
Hang 2002.5
21
Hang 2002.5
1
M(=4Bytes)
2
From 2M To
3
Reed-Solomon Pre-Coder and
Encoder Trellis Encoder
(B-2)M
51
(B-1)M
(B=)52
Interleaved patterns:
Input:
365 313 261 209 157 105 53 1
107 55 3
…
22
Hang 2002.5
Output:
2329 261 209 157 105 53 1
2122 54 2 b b b b
b b b b b b
466
259
52 b b b b b b
2 (B-2)M
From To
Trellis Reed-Solomon
Decoder Decoder
2M
50
M(=4 Bytes)
51
(B=)52
23
Hang 2002.5
say a RS code.
Concatenated codes are effective against a
mixture of random errors and burst errors.
Scattered random errors are corrected by C1.
Bursts may affect relatively few bytes, but
probably so badly that C1 cannot correct them.
These few bytes can then be corrected by C2.
24
Hang 2002.5
Channel
Encoding
Encoding consists of two stages, the outer code
encoding and the inner code encoding, as
shown in Figure 7-6.
First, a message of k1k2 bits are divided into k2
bytes of k1 bits each. Each k1-bit byte is re-
garded as a symbol in GF( 2 k ).
1
25
Hang 2002.5
codeword v in C2.
Each k1-bit byte of v is then encoded into an
n1-bit codeword w in C1
This results in a string of n2 codewords con-
taining in C1, a total of n1n2 bits.
There are a total of 2 k k such strings which
1 2
k2-bytes n2-bytes
k1 - k1 -
C2 bits
bits
(n2-k2)-bytes k2-bytes
C1
26
Hang 2002.5
k1 -
bits
(n1-k1)
- bits
n2-bytes
Decoding
Decoding of a concatenated code also consists
of two stages, the inner code decoding and the
outer code decoding, as shown in Figure 7-6.
First, decoding is done for each inner code-
word as it arrives, and the parity bits are re-
moved. After n2 inner codewords have been
decoded, we obtain a sequence of n2 k1-bit
bytes.
This sequence of n2 bytes is then decoded
based on the outer code C2 to give k1k2 de-
coded message bits.
27
Hang 2002.5
29
Hang 2002.5
30
Hang 2002.5
n2
k2
m -bit
byte
. . . ...
λ -byte .
segm ent
.
n1 - k1
1st n 2 -th
Fram e Fram e
Encoding/Decoding
A message of k2 m-bit bytes (or k2m bits) is first
encoded into an n2-byte codeword in C2.
This codeword is then temporarily stored in a
buffer as a row in an array as shown in Figure
31
Hang 2002.5
7-7.
After λ outer codewords have been formed,
the buffer stores a λ × n2 array (of m-bit
bytes).
Each column of the array consists ofλm-bit
bytes (orλm bits), and is encoded into an n1-bit
codeword in C1 and transmitted in serial man-
ner.
Note that the outer code is interleaved to a
depth of λ and the inner code consists of λ
bytes of message bits.
33
Hang 2002.5
34