07.01.2015 Views

3.7 Elements of Algebraic Decoding

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>3.7</strong> <strong>Elements</strong> <strong>of</strong> <strong>Algebraic</strong> <strong>Decoding</strong><br />

<br />

The channel is viewed as a q-ary input, q-ary output, discrete<br />

memoryless channel.<br />

When an error is made in transmission <strong>of</strong> a code symbol with<br />

probability P, the error is equally likely to be any <strong>of</strong> the q-1<br />

possibilities. A possible extension is to let the demodulator<br />

produce one <strong>of</strong> q symbols or an erasure when the demodulator<br />

has a low confidence in its ability to decide which symbol<br />

occurred.<br />

<br />

Consider now the log-likelihood function for such a channel.<br />

The conditional probability that<br />

r = c<br />

i<br />

i<br />

is received, given that<br />

ci<br />

was sent, satisfies<br />

⎧1 - P ,<br />

⎪<br />

P ( ri<br />

| ci<br />

) = ⎨ P<br />

,<br />

⎪⎩ q - 1<br />

r<br />

r<br />

i<br />

i<br />

= c<br />

≠ c<br />

i<br />

i<br />

where<br />

ri<br />

is the i-th component <strong>of</strong> the received word<br />

r<br />

= ( r ,r , L,<br />

1)<br />

0 1<br />

rn-<br />

Thus,<br />

⎧log(<br />

1 - P)<br />

,<br />

⎪<br />

log P( ri<br />

| ci<br />

) = ⎨ P<br />

log(<br />

),<br />

⎪⎩ q - 1<br />

r<br />

r<br />

i<br />

i<br />

= c<br />

≠ c<br />

i<br />

i


The ML decoding for this channel is equivalent to minimum<br />

Hamming distance decoding.<br />

<br />

In general, Hamming distance is the basis for two important<br />

possible types <strong>of</strong> decoders:<br />

(1) Complete error-correcting decoder:<br />

A decoder which, given a received word<br />

r , selects the<br />

codeword c that minimizes ( r, c )<br />

d H<br />

as the transmitted<br />

codeword.<br />

The complete decoder is thus, for most channels, the ML<br />

decoder.<br />

If there are more than one codeword c<br />

that minimizes<br />

d H<br />

( r, c )<br />

, the complete decoder chooses randomly from<br />

among the closest codewords.<br />

(2) Bounded-distance decoder


3.8 Syndrome and Error Detection<br />

Suppose a codeword c = c ,c , L,<br />

) in a block code C is<br />

(<br />

0 1<br />

cn-1<br />

transmitted and the received word is given by r = r ,r , L,<br />

) .<br />

(<br />

0 1<br />

rn-<br />

1<br />

The difference between r and c gives the error pattern <strong>of</strong><br />

errors.<br />

e<br />

= r + c<br />

= ( r0 + c0<br />

,r1<br />

+ c1<br />

, L ,rn-1<br />

+ cn-1)<br />

= ( e0<br />

,e1<br />

, L,<br />

en-1<br />

)<br />

<br />

There are a total<br />

n<br />

2 possible error patterns.<br />

Among these error patterns, only<br />

n-k<br />

2 <strong>of</strong> them are correctable<br />

by an (n, k) linear block code.<br />

<br />

To minimize the probability <strong>of</strong> a decoding error, it is desired<br />

to design a code, which corrects the<br />

n-k<br />

2 most probable<br />

error patterns.<br />

<br />

The (n-k)-vectors<br />

s<br />

r<br />

H<br />

c<br />

e<br />

T<br />

≡ ⋅ = ( + )<br />

⋅ H<br />

T<br />

= e ⋅ H<br />

T<br />

s = ( s ,s , L,<br />

) 1<br />

0 1<br />

sn-k-


Note that H is a (n-k)× n matrix.<br />

Then r is a codeword in code C if and only if s = 0 .<br />

Hence, if s ≠ 0 , r is not a codeword, and contains<br />

transmission errors. In this case, we say that the presence <strong>of</strong><br />

errors is being detected.<br />

If s = 0 , r is a codeword. In this case, r is assumed to be<br />

error-free and accepted by the receiver.<br />

A decoding error is committed if r<br />

is a codeword which is<br />

different from the actually transmitted codeword.<br />

<br />

s<br />

= ( s L )<br />

T<br />

0<br />

,s1<br />

, ,sn-k-1<br />

= e ⋅ H<br />

The equation gives a relationship between the unknown error<br />

pattern and the syndrome.<br />

The elements <strong>of</strong> s are linear combinations only <strong>of</strong> the errors,<br />

e<br />

i , and, therefore, is called the syndrome <strong>of</strong> the error patterns.


Example:<br />

If the parity-check matrix <strong>of</strong> the (6, 3)codeisgivenby<br />

H<br />

⎡1<br />

=<br />

⎢<br />

0<br />

⎢<br />

⎢⎣<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

1<br />

0<br />

1<br />

1⎤<br />

1<br />

⎥<br />

⎥<br />

0⎥⎦<br />

Suppose that the received word is r = ( 10 10 0 1)<br />

.<br />

We first find that the syndrome s ≡ r ⋅ H<br />

T = ( 0 1 1)<br />

.<br />

Hence r is not a codeword.<br />

<br />

Syndrome circuit:<br />

Considerthecase<strong>of</strong>(6, 3) code given above with<br />

H T<br />

⎡1<br />

⎢<br />

0<br />

⎢<br />

⎢0<br />

= ⎢<br />

⎢<br />

0<br />

⎢1<br />

⎢<br />

⎣1<br />

0<br />

1<br />

0<br />

1<br />

0<br />

1<br />

0⎤<br />

0<br />

⎥<br />

⎥<br />

1⎥<br />

⎥<br />

1<br />

⎥<br />

1⎥<br />

⎥<br />

0⎦<br />

T<br />

s = ( s , s1<br />

, s2<br />

) = r ⋅ H = ( r0<br />

, r1<br />

, r2<br />

, r3<br />

, r4<br />

, r5<br />

0<br />

)<br />

⎡1<br />

⎢<br />

0<br />

⎢<br />

⎢0<br />

⎢<br />

⎢<br />

0<br />

⎢1<br />

⎢<br />

⎣1<br />

0<br />

1<br />

0<br />

1<br />

0<br />

1<br />

0⎤<br />

0<br />

1<br />

1<br />

1<br />

⎥ ⎥⎥⎥⎥⎥⎥ 0⎦


∴<br />

s<br />

s<br />

s<br />

s<br />

0<br />

1<br />

2<br />

= r<br />

0<br />

= r + r<br />

1<br />

= r<br />

2<br />

+ r<br />

3<br />

4<br />

+ r<br />

3<br />

+ r<br />

+ r<br />

5<br />

5<br />

+ r<br />

4<br />

can be implemented as a combinational circuit.<br />

Example:<br />

(7, 4) linear block code.<br />

Let<br />

H<br />

⎡1<br />

=<br />

⎢<br />

0<br />

⎢<br />

⎢⎣<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

1<br />

1<br />

1<br />

0<br />

0<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1⎤<br />

0<br />

⎥<br />

⎥<br />

1⎥⎦<br />

Suppose c = ( 10 0 10 1 1)<br />

and r = ( 10 0 10 0 1)<br />

is transmitted<br />

is received.<br />

T<br />

Thenthesyndrome<strong>of</strong> r is s = ( s s s ) = r ⋅ H ( 1 1 1)<br />

.<br />

0 1 2<br />

=<br />

Let e = (e ,e ,e ,e ,e ,e , ) be the error pattern<br />

0 1 2 3 4 5<br />

e6<br />

Since<br />

s<br />

= r ⋅ H<br />

T<br />

We have<br />

1<br />

= e0<br />

+ e3<br />

+ e5<br />

+ e6<br />

1 = e<br />

1 = e<br />

1<br />

2<br />

+ e<br />

+ e<br />

3<br />

4<br />

+ e<br />

4<br />

+ e<br />

5<br />

+ e<br />

5<br />

+ e<br />

6


There are 16 possible solutions for e .<br />

0 0 0 0 0 10<br />

1 10 10 10<br />

0 1 10 1 10<br />

10 1 1 1 10<br />

1 1 10 0 0 0<br />

0 0 1 10 0 0<br />

10 0 0 10 0<br />

0 10 1 10 0<br />

10 10 0 1 1<br />

0 1 1 10 1 1<br />

1 10 0 1 1 1<br />

0 0 0 1 1 1 1<br />

0 10 0 0 0 1<br />

10 0 10 0 1<br />

0 0 10 10 1<br />

1 1 1 1 10 1<br />

While the true error pattern is<br />

e = r + c = ( 10 0 10 0 1)<br />

+ ( 10 0 10 1 1)<br />

= ( 0 0 0 0 0 10)


3.9 Standard Array<br />

<br />

The standard array is a way <strong>of</strong> tabulating all <strong>of</strong> the<br />

n<br />

q<br />

n-tuples<br />

over GF(q).<br />

<br />

This<br />

n-k k<br />

q × q rectangular array is used as a decoding table by<br />

simply locating the minimum-weight n-tuple word in the table.<br />

<br />

The n-tuple in the i-th column equals the sum <strong>of</strong> the codeword<br />

heading the i-th column and the minimum-weight error pattern<br />

which appears in the same <strong>of</strong> the first column.<br />

<br />

Formation <strong>of</strong> standard array:<br />

For an (n, k) linear binary code<br />

Let<br />

c<br />

= 0, c , L,<br />

k be the<br />

1 1<br />

c2<br />

k<br />

2 codewords in C.<br />

(1) First we arrange the<br />

the array with c 1<br />

= 0<br />

k<br />

2 codewords from C as the top row <strong>of</strong><br />

as the first element.<br />

(2) Suppose we have formed the (j-1)-th row <strong>of</strong> the array.<br />

(3) Choose a vector e<br />

j from V n which is not in the previous j-1<br />

rows.


Form the j-th row by adding<br />

e<br />

j to each codeword ci<br />

in the<br />

top row and placing<br />

e<br />

j<br />

+ ci<br />

under i<br />

c .<br />

(4) The array is completed when no vector can be chosen from<br />

V<br />

n .<br />

(5) This array, called standard array, is shown below.<br />

c 1<br />

= 0 c<br />

2<br />

• • •<br />

c<br />

i<br />

• • •<br />

k c 2<br />

e2<br />

e<br />

2<br />

+ c2<br />

• • •<br />

e<br />

2<br />

+ c i<br />

• • •<br />

e<br />

2<br />

+ c 2<br />

k<br />

M<br />

e e c<br />

2 -k<br />

2<br />

n-k<br />

2<br />

n + • • •<br />

e<br />

n + • • •<br />

c<br />

2 -k<br />

i<br />

e<br />

n-k<br />

+ c<br />

2 2<br />

k<br />

Note:<br />

(a) Each row is called a coset.<br />

(b) There are exactly<br />

n-k<br />

2 cosets.<br />

(c) The first element <strong>of</strong> each coset is called the coset leader.<br />

(d) Every vector in<br />

array.<br />

Vn<br />

appears one and only once in the<br />

(e) All the vectors in a given row must have the same<br />

syndrome. The syndrome <strong>of</strong> the vectors in different rows<br />

cannot be equal.


Example: (page 95) (6, 3) linear block code.<br />

⎡0<br />

G =<br />

⎢<br />

1<br />

⎢<br />

⎢⎣<br />

1<br />

1<br />

0<br />

1<br />

1<br />

1<br />

0<br />

1<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0⎤<br />

0<br />

⎥<br />

⎥<br />

1⎥⎦<br />

Standard array:<br />

000000 000001 000010 000100 001000 010000 100000 001001<br />

110001<br />

101010<br />

011011<br />

011100<br />

101101<br />

110110<br />

000111<br />

110000<br />

101011<br />

011010<br />

011101<br />

101100<br />

110111<br />

000110<br />

110011<br />

101000<br />

011001<br />

011110<br />

101111<br />

110100<br />

000101<br />

110101<br />

101110<br />

011111<br />

011000<br />

101001<br />

110010<br />

000011<br />

111001<br />

100010<br />

010011<br />

010100<br />

100101<br />

111110<br />

001111<br />

100001<br />

111010<br />

001011<br />

001100<br />

111101<br />

100110<br />

010111<br />

010001<br />

001010<br />

111011<br />

111100<br />

001101<br />

010110<br />

100111<br />

111000<br />

100011<br />

010010<br />

010101<br />

100100<br />

111111<br />

001110<br />

Table 3.4 Standard Array for the (6, 3) single-error-correcting code.


3.10 Syndrome <strong>Decoding</strong> Using Standard Array<br />

<br />

Syndrome decoding can be done by using a table (standard array)<br />

which consists <strong>of</strong><br />

n-k<br />

2 correctable error patterns (coset leaders)<br />

and their corresponding syndrome.<br />

s<br />

s<br />

s 1<br />

= 0<br />

e 1<br />

= 0<br />

T<br />

2<br />

= e2<br />

⋅ H<br />

2<br />

T<br />

3<br />

= e3<br />

⋅ H<br />

3<br />

e<br />

e<br />

M<br />

M<br />

s<br />

T<br />

-k e k ⋅ H<br />

2 n 2<br />

n-<br />

e 2<br />

= n-k<br />

Example:<br />

Consider the (6, 3) linear block code generated by<br />

⎡0<br />

G =<br />

⎢<br />

1<br />

⎢<br />

⎢⎣<br />

1<br />

1<br />

0<br />

1<br />

1<br />

1<br />

0<br />

1<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0⎤<br />

0<br />

⎥<br />

⎥<br />

1⎥⎦<br />

The parity-check matrix is<br />

H T<br />

⎡1<br />

=<br />

⎢<br />

0<br />

⎢<br />

⎢⎣<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

1<br />

0<br />

1<br />

1⎤<br />

1<br />

⎥<br />

⎥<br />

0⎥⎦


Syndrome decoding table for this code is constructed by using H<br />

and is shown below<br />

s<br />

e<br />

000 000000<br />

110 000001<br />

101 000010<br />

011 000100<br />

001 001000<br />

010 010000<br />

100 100000<br />

111 001001<br />

Suppose the received word is r = ( 10 10 0 1)<br />

Then s = r ⋅ H<br />

T = ( 0 1 1)<br />

The corresponding error pattern is e = ( 0 0 0 10 0 )


Implementation <strong>of</strong> Syndrome <strong>Decoding</strong> (Fig. 3.9)<br />

The decoding circuit can be implemented by combinational<br />

circuit from the syndrome-error pattern look-up table, such as<br />

the table shown in the Example.<br />

e<br />

e<br />

0<br />

1<br />

= s<br />

= s&<br />

M<br />

0<br />

0<br />

I s&<br />

I s<br />

1<br />

1<br />

I s&<br />

I s&<br />

2<br />

2<br />

e<br />

5<br />

= s<br />

0<br />

I s<br />

1<br />

I s&<br />

2<br />

+ s<br />

1<br />

I s<br />

2<br />

I s<br />

3<br />

Here s&<br />

1 is the complement <strong>of</strong> s<br />

1 .

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!