• No results found

and the received vector r is higher than the distance between the codeword c 1 and the

Block Codes

c 2 and the received vector r is higher than the distance between the codeword c 1 and the

received vector r , which is tt. This also means that the probability P(r/c1) is higher than

the probability P(r/c2) for any other codeword c2. This is the process of maximum likelihood

decoding, and in this operation the received vector r is decoded as the codeword c1. This way

the code is able to successfully decode any error pattern of weight t=dmin−1

2

, where means the largest integer number no greater than dmin−1

2 .

As happened in the detection of errors, for the correction of errors there are more possible correctable patterns than those determined by the number t. For a linear block code Cb(n,k)

able to correct up to t errors, there are 2nk correctable error patterns including the error

patterns of t or fewer errors.

If a linear block code Cb(n,k), able to correct all the error patterns of weight t or less, is

used in a transmission over the BSC with error probability p, the error probability of the coded system is given by Pwe= n i=t+1 n i pi(1−p)ni (46)

In hybrid systems, where errors are in part corrected, and in part detected, these codes are utilized in such a way that error patterns of weightλare corrected and error patterns of weight l> λare detected. If the error pattern is of weightλor less, the system corrects it, and if the error pattern is of weight larger thanλ, but less than l+1, the system detects it. This is possible if dmin≥l+λ+1.

If for example the minimum distance of a linear block code Cb(n,k) is dmin=7, this code

can be used for correcting error patterns of weightλ=2 or less and detecting error patterns of weight l =4 or less.

2.9 Syndrome Detection and the Standard Array

A linear block code Cb(n,k) is constructed as a bijective assignment between the 2kmessage

vectors and the set{c1,c2, . . . ,c2k}. Each of these vectors is transmitted through the channel

and converted into a received vector r that can be any vector of the 2nvectors of the vector space

Vndefined over the binary field GF(2). Any decoding technique is essentially a decision rule,

based on the vector space Vn being partitioned into 2kpossible disjoint sets D1,D2, . . . ,D2k

such that the vector ci is in the set Di. There is a unique correspondence between the set Di

and the vector ci. If the received vector is in Di, it will be decoded as ci.

The standard array is a method for doing this operation [4, 6]. The array is constructed in the following way:

A row containing the codewords, including and starting from the all-zero vector (0,0, . . . ,0), is constructed. This row contains 2kvectors taken from the whole set of 2n possible vectors.

Then an error pattern e2is selected and placed below c1(the all-zero vector), and then the sum

vector cie2is placed below ci. This is done with all the error patterns taken from the vector

space that have to be allocated, a total of 2nkvectors.

c1=(0,0, . . . ,0) c2 . . . ci . . . c2k e2 c2e2 . . . cie2 . . . c2ke2 .. . e2nk c2e2nk . . . cie2nk . . . c2ke2nk (48)

In this array the sum of any two vectors in the same row is a code vector. There are only 2n/2k disjoint rows in this array. These rows are the so-called cosets of the linear block code Cb(n,k).

The vector that starts each coset is called the leader of that coset, and it can be any vector of that row.

Example 2.15: For the linear block code Cb(5,3) generated by the matrix given below,

determine the standard array.

G= ⎡ ⎣01 10 01 01 10 1 0 0 1 0 ⎤ ⎦

There are in this case 2k=23=8 columns and 2nk=22=4 rows in the standard array.

Table 2.3 shows the standard array for the code of Example 2.15.

The standard array can also be seen as constituted of 2kdisjoint columns, and in each of these columns are 2nkvectors having as the first vector a code vector. These 2k disjoint columns D1,D2, . . . ,D2k can be used in a decoding procedure. If having transmitted a codeword ci,

the received vector is r, this received vector will be in Diif the error pattern that occurred is its

coset leader. In this case the received vector will be successfully decoded. If the error pattern is not a coset leader, a decoding error happens. Due to this, the 2nkcoset leaders including

the all-zero pattern are the correctable error patterns. It can be deduced that a linear block code Cb(n,k) can correct 2nkerror patterns.

In order to minimize the error probability, all the correctable error patterns, which are the coset leaders, will have to be the most likely patterns. In the case of a transmission over the BSC, the most likely patterns are those of the lowest possible weight. Thus, each coset leader will be of the lowest possible weight among the vectors of that row. The decoding in this case will be maximum likelihood decoding, that is, minimum distance decoding, so that the decoded code vector is at minimum distance with respect to the received vector.

Table 2.3 Standard array for the code of Example 2.15

0 0 0 0 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 0 1

In conclusion it can be said that a linear block code Cb(n,k) is able to detect 2n−2kerror

patterns and correct 2nkerror patterns.

It can also be said that

For a linear block code Cb(n,k) with minimum distance dmin, all the vectors of weight

t =dmin−1

2

or less can be used as coset leaders. This is in agreement with the fact that not all the weight t+1 error patterns can be corrected, even when some of them can be. On the other hand, all the vectors of the same coset have the same syndrome, whereas syndromes for different cosets are different.

By taking a coset leader as the vector ei, any other vector of that coset is the sum of the

leader vector and the code vector ci. For this case, the syndrome is calculated as

(ciei)◦HT =ciHTeiHT=eiHT (49)

The syndrome of any vector of the coset is equal to the syndrome of the leader of that coset. Syndromes are vectors with (nk) components that have a bijective assignment with the cosets. For each correctable error pattern, there is a different syndrome vector. This allows us to implement simpler decoding by constructing a table where correctable error patterns and their corresponding syndrome vectors are arranged, so that when the decoder makes the syndrome calculation and knows the syndrome vector, it can recognize the corresponding error pattern. Thus, the decoder is able to correct the received vector by adding the error pattern to that received vector. Thus syndrome decoding consists of the following steps: With the information provided by the table Se, the syndrome vector is calculated as a function of the received vector using S=rHT; then the decoder resorts to the table to identify which error pattern