This document explains how cyclic codes can be represented and analyzed using polynomials, where binary patterns are translated into polynomial form with coefficients of 0 and 1. It covers operations such as addition, subtraction, multiplication, and division of polynomials, as well as shifting and the creation of codewords from datawords. The polynomial representation simplifies the process of division and allows for easier analysis of cyclic codes through defined terms like dataword, syndrome, codeword, error, and generator.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
3 views
Polynomials binary form
This document explains how cyclic codes can be represented and analyzed using polynomials, where binary patterns are translated into polynomial form with coefficients of 0 and 1. It covers operations such as addition, subtraction, multiplication, and division of polynomials, as well as shifting and the creation of codewords from datawords. The polynomial representation simplifies the process of division and allows for easier analysis of cyclic codes through defined terms like dataword, syndrome, codeword, error, and generator.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11
Polynomials
A better way to understand cyclic codes
and how they can be analyzed is to represent them as polynomials. Again, this section is optional. A pattern of Os and 1s can be represented as a polynomial with coefficients of 0 and 1. The power of each term shows the position of the bit; the coefficient shows the value of the bit. Figure 10.21 shows a binary pattern and its polynomial representation. In Figure 10.21a we show how to translate a binary pattern to a polynomial; in Figure 1O.21b we show how the polynomial can be shortened by removing all terms with zero coefficients and replacing xl by x and xO by 1. Figure 10.21 A polynomial to represent a binary word I1I0I0I0I0I1I1I I iii + oX' + ox4 + o~ + o? + Ixl + Ixo I a. Binary pattern and polynomial b. Short form Figure 10.21 shows one immediate benefit; a 7-bit pattern can be replaced by three terms. The benefit is even more conspicuous when we have a polynomial such as x23 + X3 + 1. Here the bit pattern is 24 bits in length (three Is and twenty-one Os) while the polynomial is just three terms. Degree ofa Polynomial The degree of a polynomial is the highest power in the polynomial. For example, the degree of the polynomial x6 + x + 1 is 6. Note that the degree of a polynomial is 1 less that the number of bits in the pattern. The bit pattern in this case has 7 bits. Adding and Subtracting Polynomials Adding and subtracting polynomials in mathematics are done by adding or subtracting the coefficients of terms with the same power. In our case, the coefficients are only 0 and 1, and adding is in modulo-2. This has two consequences. First, addition and subtraction are the same. Second, adding or subtracting is done by combining terms and deleting pairs of identical terms. For example, adding x5 + x4 + x2 and x6 + x4 + x2 gives just x6 + x5. The terms x4 and x2 are deleted. However, note that if we add, for example, three polynomials and we get x2 three times, we delete a pair of them and keep the third. 292 CHAPTER 10 ERROR DETECTIONAND CORRECTION Multiplying or Dividing Terms In this arithmetic, multiplying a term by another term is very simple; we just add the powers. For example, x3 x x4 is x7 , For dividing, we just subtract the power of the second term from the power of the first. For example, x51x2 is x3. Multiplying Two Polynomials Multiplying a polynomial by another is done term by term. Each term of the first polynomial must be multiplied by all terms of the second. The result, of course, is then simplified, and pairs of equal terms are deleted. The following is an example: (~+X3 +~ +x)(~ +x+ 1) =~+~+~+~+0+~+0+~+~+~+~+x =x7 +x6 +x3 +x Dividing One Polynomial by Another Division of polynomials is conceptually the same as the binary division we discussed for an encoder. We divide the first term of the dividend by the first term of the divisor to get the first term of the quotient. We multiply the term in the quotient by the divisor and subtract the result from the dividend. We repeat the process until the dividend degree is less than the divisor degree. We will show an example of division later in this chapter. Shifting A binary pattern is often shifted a number of bits to the right or left. Shifting to the left means adding extra Os as rightmost bits; shifting to the right means deleting some rightmost bits. Shifting to the left is accomplished by multiplying each term of the polynomial by xn, where m is the number of shifted bits; shifting to the right is accomplished by dividing each term of the polynomial by xn. The following shows shifting to the left and to the right. Note that we do not have negative powers in the polynomial representation. Shifting left 3 bits: Shifting right 3 bits: 10011 becomes 10011000 10011 becomes 10 x4 + x + 1 becomes x7 + x4 +~ x4 + x + 1 becomes x When we augmented the dataword in the encoder of Figure 10.15, we actually shifted the bits to the left. Also note that when we concatenate two bit patterns, we shift the first polynomial to the left and then add the second polynomial. Cyclic Code Encoder Using Polynomials Now that we have discussed operations on polynomials, we show the creation of a codeword from a dataword. Figure 10.22 is the polynomial version of Figure 10.15. We can see that the process is shorter. The dataword 1001 is represented as x3 + 1. The divisor 1011 is represented as x3 + x + 1. To find the augmented dataword, we have left- shifted the dataword 3 bits (multiplying by x\ The result is x6 + x3 . Division is straightforward. We divide the first term of the dividend, x6, by the first term of the divisor, x3. The first term of the quotient is then x6/x3, or x3. Then we multiply x3 by the divisor and subtract (according to our previous definition of subtraction) the result from the dividend. The SECTION 10.4 CYCLiC CODES 293 result is x4, with a degree greater than the divisor's degree; we continue to divide until the degree of the remainder is less than the degree of the divisor. Figure 10.22 CRC division using polynomials Dataword I x3 + 1 t Divisor x3 + x Dividend: x3 + x + I ) x6 + x3 augmented x6 + .0+ x3 dataword .0 .0 + x2 + x I x2 + x IRemainder Codeword I x6 + x3 I xl + x I Dataword Remainder It can be seen that the polynomial representation can easily simplify the operation of division in this case, because the two steps involving all-Os divisors are not needed here. (Of course, one could argue that the all-Os divisor step can also be eliminated in binary division.) In a polynomial representation, the divisor is normally referred to as the generator polynomial t(x). The divisor in a cyclic code is normally called the generator polynomial or simply the generator. Cyclic Code Analysis We can analyze a cyclic code to find its capabilities by using polynomials. We define the following, wheref(x) is a polynomial with binary coefficients. Dataword: d(x) Syndrome: sex) Codeword: c(x) Error: e(x) Generator: g(x)