<< Chapter < Page | Chapter >> Page > |
To perform decoding when errors occur, we want to find the codeword (one of the filled circles in [link] ) that has the highest probability of occurring: the one closest to the one received. Note that if a datawordlies a distance of 1 from two codewords, it is impossible to determine which codeword was actually sent. This criterion means that if any two codewordsare two bits apart, then the code cannot correct the channel-induced error. Thus, to have a code that can correct all single-bit errors, codewords must havea minimum separation of three. Our repetition code has this property.
Introducing code bits increases the probability that any bit arrives in error (because bit interval durations decrease).However, using a well-designed error-correcting code corrects bit reception errors. Do we win or lose by using anerror-correcting code? The answer is that we can win if the code is well-designed. The (3,1) repetition code demonstrates that we can lose ( [link] ). To develop good channel coding, we need to develop first a general framework forchannel codes and discover what it takes for a code to be maximally efficient: Correct as many errors as possible usingthe fewest error correction bits as possible (making the efficiency as large as possible.) We also need a systematic way of finding the codeword closest to any received dataword. A much bettercode than our (3,1) repetition code is the following (7,4) code. where the generator matrix is In this (7,4) code, of the possible blocks at the channel decoder correspond to error-freetransmission and reception.
Error correction amounts to searching for the codeword closest to the received block in terms of the Hamming distance between the two. The error correction capability of a channel code is limited by howclose together any two error-free blocks are. Bad codes would produce blocks close together, which would result in ambiguitywhen assigning a block of data bits to a received block. The quantity to examine, therefore, in designing code errorcorrection codes is the minimum distance between codewords.
Suppose we want a channel code to have an error-correction capability of bits. What must the minimum Hamming distance between codewords be?
How do we calculate the minimum distance between codewords? Because we have codewords, the number of possible unique pairs equals , which can be a large number. Recall that our channel coding procedure is linear, with . Therefore . Because always yields another block of data bits, we find that the difference between any two codewords isanother codeword! Thus, to find we need only compute the number of ones that comprise all non-zero codewords. Finding these codewords is easy once weexamine the coder's generator matrix. Note that the columns of are codewords (why is this?), and that all codewords can be found by all possiblepairwise sums of the columns. To find , we need only count the number of bits in each column and sums of columns. For our example (7, 4), 's first column has three ones,the next one four, and the last two three. Considering sums of column pairs next, note that because the upper portion of is an identity matrix, the corresponding upper portion of all column sums musthave exactly two bits. Because the bottom portion of each column differs from the other columns in at least one place, thebottom portion of a sum of columns must have at least one bit. Triple sums will have at least three bits because the upperportion of is an identity matrix. Thus, no sum of columns has fewer than threebits, which means that , and we have a channel coder that can correct all occurrencesof one error within a received -bit block.
Notification Switch
Would you like to follow the 'Fundamentals of electrical engineering i' conversation and receive update notifications?