Corresponding to this word, from a formal variable x. It can be seen that this correspondence is not just one-to-one, but also isomorphic. Since the "words" consist of letters from the field, they can be added and multiplied (element by element), and the result will be in the same field. The polynomial corresponding to the linear combination of the pair of words and is equal to the linear combination of the polynomials of these words

This allows us to consider the set of words of length n over a finite field as a linear space of polynomials with degree at most n-1 over the field

Algebraic description

If the code word obtained by a cyclic shift by one bit to the right from the word , then its corresponding polynomial c 1 (x) is obtained from the previous one by multiplying by x:

Taking advantage of the fact that

Shift to the right and left, respectively j discharges:

If a m(x) is an arbitrary polynomial over the field GF(q) and c(x) - codeword of cyclic ( n,k) code, then m(x)c(x)mod(x n − 1) also the code word of this code.

Generating polynomial

Definition The generating polynomial of the cyclic ( n,k) code C is called such a non-zero polynomial from C, the degree of which is the smallest and the coefficient at the highest degree g r = 1 .

Theorem 1

If a C- cyclic ( n,k) code and g(x) is its generating polynomial, then the degree g(x) is equal to r = nk and each codeword can be uniquely represented as

c(x) = m(x)g(x) ,

where degree m(x) less than or equal to k − 1 .

Theorem 2

g(x) is the generating polynomial of the cyclic ( n,k) of the code is a divisor of the binomial x n − 1

Consequences: thus, as a generating polynomial, you can choose any polynomial, divisor x n− 1 . The degree of the selected polynomial will determine the number of check symbols r, number information symbols k = nr .

Generative matrix

The polynomials are linearly independent, otherwise m(x)g(x) = 0 for nonzero m(x) , which is impossible.

This means that code words can be written, as for linear codes, as follows:

, where G is generating matrix, m(x) - informational polynomial.

Matrix G can be written in symbolic form:

Checking Matrix

For each codeword of a cyclic code, . That's why check matrix can be written as:

Coding

Unsystematic

With non-systematic coding, the code word is obtained as the product of an information polynomial by a generating polynomial

c(x) = m(x)g(x) .

It can be implemented using polynomial multipliers.

Systematic

With systematic coding, the code word is formed in the form of an information subblock and a check

Let the information word form the highest powers of the code word, then

c(x) = x r m(x) + s(x),r = nk

Then from the condition , it follows

This equation defines the systematic coding rule. It can be implemented using multicycle linear filters (MLF)

Examples

Binary (7,4,3) code

As a divider x 7 − 1 we choose a generating polynomial of the third degree g(x) = x 3 + x + 1 , then the resulting code will have length n= 7 , number of check symbols (degree of the generating polynomial) r= 3 , number of information symbols k= 4 , minimum distance d = 3 .

Generative matrix code:

,

where the first line is a polynomial entry g(x) coefficients in ascending order. The remaining lines are cyclic shifts of the first line.

Check matrix:

,

where the i-th column, starting from the 0th, is the remainder of the division x i on a polynomial g(x) , written in ascending order of powers, starting from the top.

So, for example, the 3rd column is , or in vector notation .

It is easy to verify that GH T = 0 .

Binary (15,7,5) BCH code

As a generating polynomial g(x) you can choose the product of two divisors x 15 − 1 ^

g(x) = g 1 (x)g 2 (x) = (x 4 + x + 1)(x 4 + x 3 + x 2 + x + 1) = x 8 + x 7 + x 6 + x 4 + 1 .

Then each code word can be obtained using the product of the information polynomial m(x) with degree k− 1 thus:

c(x) = m(x)g(x) .

For example, the information word corresponds to the polynomial m(x) = x 6 + x 5 + x 4 + 1 , then the code word c(x) = (x 6 + x 5 + x 4 + 1)(x 8 + x 7 + x 6 + x 4 + 1) = x 14 + x 12 + x 9 + x 7 + x 5 + 1 , or in vector form

see also

Links

Wikimedia Foundation. 2010 .

See what "Cyclic codes" are in other dictionaries:

    shortened cyclic codes- - [L.G. Sumenko. English Russian Dictionary of Information Technologies. M.: GP TsNIIS, 2003.] Topics Information Technology in general EN shortened cyclic codes ...

    Non-binary cyclic codes that allow you to correct errors in data blocks. The elements of the code vector are not bits, but groups of bits (blocks). Reed Solomon codes that work with bytes (octets) are very common. Reed Solomon's code is ... Wikipedia

    Golay codes- A family of perfect linear block codes with error correction. The most useful is the binary Golay code. The ternary Golay code is also known. Golay codes can be thought of as cyclic codes. … … Technical Translator's Handbook

    Error detection in communication technology is an action aimed at monitoring the integrity of data during recording / playback of information or during its transmission over communication lines. Error correction (error correction) procedure for recovering information after ... ... Wikipedia

    Error detection in communication technology is an action aimed at monitoring the integrity of data during recording / playback of information or during its transmission over communication lines. Error correction (error correction) procedure for recovering information after ... ... Wikipedia

This is a subclass of linear codes that have the gem property that a cyclic permutation of symbols in an encoded block yields another possible encoded block of the same code. Cyclic codes are based on the application of the ideas of the algebraic Galois field theory1.

Many of the most important noise-immune codes of communication systems, -

in particular cyclic, are based on finite arithmetic structures

Galois fields. field is called the set of elements that are a finite field

Operation ranks are in quotation marks because they are not always generally accepted. arithmetic operations. The field always has a zero element (0), or zero, and a single element (1), or one. If number q elements of the field is limited, then the field is called final field, or finite Galois field, and is denoted GF(q) y where q- field order. The smallest Galois field is the two-element field GF( 2), consisting of only two elements 1 and 0. In order to

1 Evariste Galois (1811 - 1832) - French mathematician, laid the foundations of modern algebra.

performing operations on elements GF( 2) did not lead to going beyond this field, they are carried out modulo 2 (in general, this is determined by the order of the field for simple Galois fields).

The field has a number of specific mathematical properties. For the elements of the field, the operations of addition and multiplication are defined, and the results of these operations must belong to the same set.

For addition and multiplication operations, the usual mathematical associativity rules are followed - a + (b + c) = (a + b)+ c, commutativity - a + b = b + a and a b = b a and distributivity - a (b+ c) = a b + a With.

For each field element a there must be an inverse element by addition (-a) and if a not equal to zero, inverse element by multiplication (th ’).

The field must contain additive unit - element 0, such that a + 0 = a for any field element a.

The field must contain multiplicative unit - element 1, such that aL = a for any field element a.

For example, there are fields real numbers, rational numbers, complex numbers. These fields contain an infinite number of elements.

In fact, all sets formed by cyclic permutation of a codeword are also codewords. So, for example, cyclic permutations of the combination 1000101 will also be code combinations 0001011, 0010110, 0101100, etc. This property makes it possible to greatly simplify the encoder and decoder, especially in error detection and single error correction. Attention to cyclic codes is due to the fact that their high corrective properties are implemented on the basis of relatively simple algebraic methods. At the same time, for decoding an arbitrary linear block code, table methods requiring a large amount of decoder memory.

A cyclic code is called a linear block (n, k)- a code that is characterized by the property of cyclicity, i.e. a shift to the left by one step of any allowed code word also gives an allowed code word belonging to the same code, and for which the set of code words is represented by a set of polynomials of degree (P- 1) or less divisible by the generating polynomial g(x) degrees r=n-ky which is a factor of a binomial X n+

In a cyclic code, code words are represented by polynomials (polynomials)

where P - code length; A i - Galois field coefficients (code combination values).

For example, for the code combination 101101, the polynomial entry has the form

Examples of cyclic codes are even-check codes, repetition codes, Hamming codes, PC codes, and turbo codes.

Hamming code. Error correction capabilities in Hamming code are related to the minimum code distance d0. All multiplicity errors are corrected q= cnt (d 0- l)/2 (here cnt means "integer part") and multiplicity errors are detected d 0 - 1. So, with odd parity d Q = 2 and single errors are detected. In Hamming code d 0 = 3. In addition to the information digits, L= log 2 Q redundant control bits, where Q- number of information bits. Parameter L rounded up to the next higher integer value. The L-bit control code is the inverted result of bitwise addition (modulo 2 addition) of the numbers of those information bits whose values ​​are equal to one.

Example 7.7

Let's have the main code 100110, i.e. Q= 6. Let's define an additional code.

Solution

We find that L= 3 and the complement code is

where P is the symbol of the bitwise addition operation, and after inversion we have 000. Now the additional one will be transmitted with the main code. In the receiver, the additional code is again calculated and compared with the transmitted one. The comparison code is fixed, and if it is different from zero, then its value is the number of the erroneously received digit of the main code. So, if the code 100010 is received, then the calculated additional code is equal to the inverse of 010Ш10 = 100, i.e. 011, which means an error in the 3rd digit.

A generalization of Hamming codes are cyclic BCH codes, which allow you to correct multiple errors in the received codeword.

Reed-Solomon codes are based on Galois fields, or finite zeros. Arithmetic operations addition, subtraction, multiplication, division, etc. over elements of a finite zero give a result that is also an element of that zero. The Reed-Solomon encoder or decoder must necessarily perform these operations. All operations to implement the code require special hardware or specialized software.

Turbo codes. Redundant codes can be used both independently and in the form of some combination of several codes, when the character sets of one redundant code are considered as elementary information symbols of another redundant code. This association became known as cascading code. The great advantage of concatenated codes is that their use makes it possible to simplify the encoder and especially the decoder in comparison with similar devices of non-cascaded codes of the same length and redundancy. Cascaded coding led to the creation of turbo codes. Turbocode called a parallel signal structure consisting of two or more systematic codes. The basic principle of their construction is the use of several parallel component encoders. Both block and convolutional codes, Hamming codes, PC code, BCH, etc. can be used as component codes. The use of perforation (puncturing) allows increasing the relative speed of the turbo code by adapting its correcting ability to the statistical characteristics of the communication channel. The principle of formation of the turbo code is as follows: the input signal X, consisting of To bit, fed in parallel to N interleavers. Each of the latter is a device that permutes elements in a block of To bits in pseudo-random order. The output signal from the interleavers - reordered symbols - is fed to the respective elementary encoders. Binary sequences x p i= 1,2,..., JV, at the output of the encoder are check symbols, which, together with information bits, make up a single code word. The use of an interleaver makes it possible to prevent the occurrence of sequences of correlated errors when decoding turbo codes, which is important when using the traditional recurrent decoding method in processing. Depending on the choice of the component code, turbo codes are divided into convolutional turbo codes and block product codes.

Corresponding to this word, from a formal variable x. It can be seen that this correspondence is not just one-to-one, but also isomorphic. Since the "words" consist of letters from the field, they can be added and multiplied (element by element), and the result will be in the same field. The polynomial corresponding to the linear combination of the pair of words and is equal to the linear combination of the polynomials of these words

This allows us to consider the set of words of length n over a finite field as a linear space of polynomials with degree at most n-1 over the field

Algebraic description

If the code word obtained by a cyclic shift by one bit to the right from the word , then its corresponding polynomial c 1 (x) is obtained from the previous one by multiplying by x:

Taking advantage of the fact that

Shift to the right and left, respectively j discharges:

If a m(x) is an arbitrary polynomial over the field GF(q) and c(x) - codeword of cyclic ( n,k) code, then m(x)c(x)mod(x n − 1) also the code word of this code.

Generating polynomial

Definition The generating polynomial of the cyclic ( n,k) code C is called such a non-zero polynomial from C, the degree of which is the smallest and the coefficient at the highest degree g r = 1 .

Theorem 1

If a C- cyclic ( n,k) code and g(x) is its generating polynomial, then the degree g(x) is equal to r = nk and each codeword can be uniquely represented as

c(x) = m(x)g(x) ,

where degree m(x) less than or equal to k − 1 .

Theorem 2

g(x) is the generating polynomial of the cyclic ( n,k) of the code is a divisor of the binomial x n − 1

Consequences: thus, as a generating polynomial, you can choose any polynomial, divisor x n− 1 . The degree of the selected polynomial will determine the number of check symbols r, number of information symbols k = nr .

Generative matrix

The polynomials are linearly independent, otherwise m(x)g(x) = 0 for nonzero m(x) , which is impossible.

This means that code words can be written, as for linear codes, as follows:

, where G is generating matrix, m(x) - informational polynomial.

Matrix G can be written in symbolic form:

Checking Matrix

For each codeword of a cyclic code, . That's why check matrix can be written as:

Coding

Unsystematic

With non-systematic coding, the code word is obtained as the product of an information polynomial by a generating polynomial

c(x) = m(x)g(x) .

It can be implemented using polynomial multipliers.

Systematic

With systematic coding, the code word is formed in the form of an information subblock and a check

Let the information word form the highest powers of the code word, then

c(x) = x r m(x) + s(x),r = nk

Then from the condition , it follows

This equation defines the systematic coding rule. It can be implemented using multicycle linear filters (MLF)

Examples

Binary (7,4,3) code

As a divider x 7 − 1 we choose a generating polynomial of the third degree g(x) = x 3 + x + 1 , then the resulting code will have length n= 7 , number of check symbols (degree of the generating polynomial) r= 3 , number of information symbols k= 4 , minimum distance d = 3 .

Generative matrix code:

,

where the first line is a polynomial entry g(x) coefficients in ascending order. The remaining lines are cyclic shifts of the first line.

Check matrix:

,

where the i-th column, starting from the 0th, is the remainder of the division x i on a polynomial g(x) , written in ascending order of powers, starting from the top.

So, for example, the 3rd column is , or in vector notation .

It is easy to verify that GH T = 0 .

Binary (15,7,5) BCH code

As a generating polynomial g(x) you can choose the product of two divisors x 15 − 1 ^

g(x) = g 1 (x)g 2 (x) = (x 4 + x + 1)(x 4 + x 3 + x 2 + x + 1) = x 8 + x 7 + x 6 + x 4 + 1 .

Then each code word can be obtained using the product of the information polynomial m(x) with degree k− 1 thus:

c(x) = m(x)g(x) .

For example, the information word corresponds to the polynomial m(x) = x 6 + x 5 + x 4 + 1 , then the code word c(x) = (x 6 + x 5 + x 4 + 1)(x 8 + x 7 + x 6 + x 4 + 1) = x 14 + x 12 + x 9 + x 7 + x 5 + 1 , or in vector form

see also

Links

Wikimedia Foundation. 2010 .

  • Cyclic forms in music
  • Cyclic Boundary Conditions

See what "Cyclic codes" are in other dictionaries:

    shortened cyclic codes- - [L.G. Sumenko. English Russian Dictionary of Information Technologies. M .: GP TsNIIS, 2003.] Topics information technology in general EN shortened cyclic codes ...

    Reed-Solomon codes- non-binary cyclic codes that allow you to correct errors in data blocks. The elements of the code vector are not bits, but groups of bits (blocks). Reed Solomon codes that work with bytes (octets) are very common. Reed Solomon's code is ... Wikipedia

    Golay codes- A family of perfect linear block codes with error correction. The most useful is the binary Golay code. The ternary Golay code is also known. Golay codes can be thought of as cyclic codes. … … Technical Translator's Handbook

    Error Correcting Codes

    Error Correcting Codes- Error detection in communication technology is an action aimed at monitoring the integrity of data during recording / playback of information or during its transmission over communication lines. Error correction (error correction) procedure for recovering information after ... ... Wikipedia

    Error Correcting Codes- Error detection in communication technology is an action aimed at monitoring the integrity of data during recording / playback of information or during its transmission over communication lines. Error correction (error correction) procedure for recovering information after ... ... Wikipedia

The main properties and the very name of cyclic codes are related to the fact that all allowed combinations of binary symbols in the transmitted message can be obtained by a cyclic shift operation of some source word: Usually, code combinations of a cyclic code are considered not as a sequence of zeros and ones, but as a polynomial of some degree . Any number in any positional number system can be represented in general terms as: where x is the base of the number system; a - digits of this number system; p-1, p-2, ... - an indicator of the degree to which the base is raised, and at the same time sequence numbers, which occupy the ranks. For the binary system, x=2, and a is either "0" or "1". For example, the binary combination 01001 can be written as a polynomial in the argument x: When writing a code combination as a polynomial, the unit in the 1st digit is written as a member x", and zero is not written at all. Representing code combinations in the form of polynomials allows you to establish a one-to-one correspondence between them and reduce actions on combinations to action on polynomials.Thus, the addition of binary polynomials is reduced to the addition modulo 2 of the coefficients with equal powers of the variable.For example, Multiplication is performed according to the usual rule of multiplication of power functions, however, the resulting coefficients at a given degree are added modulo 2.For example , The division is also carried out as a normal division of polynomials; in this case, the subtraction operation is replaced by the operation of addition modulo 2: As noted above, the codes are called cyclic because the cyclic shift a n ^ a l L,..., a 2 ,a 1 ,a d1 a n1 of the allowed combination a n (, a n _ 2 ,...,a 1 , and 0 is also an allowed combination. Such a cyclic permutation when using representations in the form of polynomials is formed as a result of multiplying this polynomial by x. ( x + a 0 , then Y (x) x \u003d a n] x n + a n 2 x n " 1 + ... + a x x 2 + a ^ x. In order for the degree of the polynomial not to exceed n-1, the term x" is replaced by one, therefore: For example, we have the code combination 1101110-> x in + x 5 + x 3 +. x g -1-x. Let's shift it by one digit. We get: Which is the same as multiplying the original polynomial on x: The theory of constructing cyclic codes is based on sections of higher algebra that studies the properties of binary polynomials.A special role in this theory is played by the so-called irreducible polynomials, i.e. polynomials that cannot be represented as a product of polynomials of lower degrees. the th-term is divisible only by itself and by one. It is known from higher algebra that the binomial x "+1 is divisible by an irreducible polynomial without remainder. In coding theory, irreducible polynomials are called generating polynomials, since they "form" allowed code combinations (irreducible polynomials are tabulated, see Table 8.4) (9). The idea of ​​constructing a cyclic code is that the polynomial representing information part code combination, you need to convert to a polynomial of degree no more than n-1, which is divisible without a remainder by the generating polynomial P (x). It is essential that the degree of the latter corresponds to the number of digits of the check part of the code combination. In cyclic codes, all allowed combinations, represented as polynomials, have one feature: divisibility without remainder by the generating polynomial P(x). The construction of an allowed code combination is as follows: 1. We represent the information part of the code combination of length k as a polynomial O(x). 2. We multiply O(x) by the monomial Y and get 0(x)x r, i.e. we shift the ¿-bit ​​code combination by r bits. 3. Divide the polynomial O(x)x" by the generating polynomial P(x), the degree of which is equal to r. As a result of multiplying O(x) by x r, the degree of each monomial included in O(x) increases by r. When dividing the product of x r O[x) and the generatrix of a polynomial of degree r yields a quotient C(x) of the same degree as 0(x).The results of these operations can be represented as: (8.28) where Wx) is the remainder of dividing 0(x)x r by P(x). Since C(x) has the same degree as 0(x), then C(x) is a code combination of the same ¿-digit code. The degree of the remainder obviously cannot be greater than the degree of the generating polynomial, i.e., its highest degree is equal to r-1. Consequently, largest number digits of the remainder does not exceed r. Multiplying both sides of (8.28) by P(x), crawling: (8.29) (the sign of subtraction is replaced by the sign of addition modulo 2). Obviously, F(x) is divisible by P(x) without a remainder. The polynomial F(x) is the allowed code combination of the cyclic code. From (8.29) it follows that the allowed code combination of a cyclic code can be obtained in two ways: by multiplying the code combination simple code C(x) by the generating polynomial P(x) or by multiplying the code combination 0(x) of the simple code by the monomial x r and adding to this product the remainder P(x) obtained by dividing the product by the generating polynomial P(x). With the first encoding method, the information and check bits are not separated from each other (the code is inseparable). This complicates the practical implementation of the decoding process. In the second method, a separable code is obtained: information digits occupy senior positions, the remaining n-k digits are test ones. This coding method is widely used in practice. Example 3. Code combination 0111 is given. Let's construct a cyclic code with d o = 3. Solution. At the first stage, based on the required d o = 3, we determine the code length l and the number of check elements k. To do this, we use Table 8.6.1. For a given four-bit codeword N-16. Then for d \u003d 3 from relation 16 (Table 8.3) we find n - 7, respectively, k \u003d n - m - \u003d 7 - 4 \u003d 3. Therefore, code (7.4) is needed. According to the table of generators of polynomials (Table 8.4), for k = 3, we determine P (x) = x 3 + x 2 + 1. Further: 1) for message 0111 we have O (x) = x 2 + x + 1; 2) multiply 0 (x) by x 3 (since r \u003d 3): O (x) x 3 \u003d (x 2 -I- x + 1) x 3 \u003d x 5 + x 4 + x 3; 3) divide (E (x) x 3 by P (x): 4) we get: ^ (x) \u003d O (x) x 3 0 I (x) \u003d x 5 + x 4 + x 3 + 1. This polynomial corresponds to the code combination: All of these operations can be performed on binary numbers: Table 8.4
4) F(0,1) = O(0,l)x 3 (0,l)©R(0 1 l) = 011100000001= 0111 001. Now let's construct an allowed codeword in the first way: F(x)=C( x)P(x). Let's do the multiplication, representing the polynomials as binary numbers: It can be seen that information and check bits cannot be distinguished in the resulting code combination. Error detection in cyclic coding comes down to dividing the received codeword by the same generating polynomial that was used in coding (its form must be known at the reception). If there are no errors in the received code combination (or they are such that the given transmitted code combination is converted into another allowed one), then the division by the generating polynomial will be performed without a remainder. If the division produces a remainder, then this indicates an error. Example 4. As an allowed code combination, we take the code combination obtained in the previous example: P (x) \u003d x 5 + x 4 + x 3 + 1, and P (x) \u003d x 3 + x 2 + 1, or in binary the form E(0.1) = 0111001; P(0.1) = 1101. Let's assume that an error occurred in the most significant (7th) digit in the information part (digits are counted from right to left). The received code combination looks like 1111001. Let's perform the error detection operation: The presence of a remainder of 110 indicates an error. Cyclic codes are widely used in information transmission systems. For example, in the widely used modem protocol \7.42, to encode code groups, a generating polynomial q (X) = X 16 + X "-2 + X 5 + 1 is used, which is equivalent to the code 1 0001 0000 0010 0001, as well as a higher-order generating polynomial d(X) = X 32 + X 26 + X 23 + X 22 + X 16 + X 12 + X 11 + X 10 + X 8 + X 1 + X 5 + X 4 + X 2 + 1. 8.6.

Efficient codes that detect single, multiple errors and bursts of errors include cyclic codes(CRC - Cyclic Redundance Code). They are highly reliable and can be used for block synchronization, in which the selection of, for example, an odd bit would be difficult.

One variant of cyclic coding is to multiply source code by the generator polynomial g(x), and decoding - in division by g(x). If the remainder of the division is not zero, then an error has occurred. An error signal is sent to the transmitter, which causes a retransmission.

The generating polynomial is binary representation one of the simple factors into which the number X n -1 is decomposed, where X n denotes a unit in the n-th bit, n is equal to the number of bits of the code group. So, if n \u003d 10 and X \u003d 2, then X n -1 \u003d 1023 \u003d 11 * 93, and if g (X) \u003d 11 or in binary code 1011, then examples of cyclic codes A i *g(X) of numbers A i in the code group with this generating polynomial can be seen in the following table. 3.1.

Basic option The cyclic code widely used in practice differs from the previous one in that the division operation by the generating polynomial is replaced by the following algorithm: 1) K zeros are assigned to the original encoded number A, where K is the number of bits in the generating polynomial, reduced by one; 2) an operation O is performed on the received number A * (2 K), which differs from division in that at each step of the operation, instead of subtracting, a bitwise "exclusive OR" operation is performed: 3) the resulting remainder B is the CRC - redundant K-bit code, which replaces in the encoded number C the zeros assigned to the right to K, i.e.

C \u003d A * (2 K) + B.

At the receiving end, operation O is performed on code C. If the remainder is not equal to zero, then an error occurred during transmission and a retransmission of code A is required.

EXAMPLE Let A = 1001 1101 forming the polynomial 11001.

Since K \u003d 4, then A * (2 K) \u003d 100111010000. The execution of operation O for calculating the cyclic code is shown in fig. 3.2.

Table 3.1

Number Cyclic code Number Cyclic code
0 0000000000. 13 0010001111
1 0000001011 14 0010011010
2 0000010110 15 0010100101
3 0000100001 16 0011000110
5 0000110111 18 0011000110
6 0001000010 19 0011010001
..... ........ ....... .......

The positive properties of cyclic codes are a low probability of not detecting an error and a relatively small number of redundant bits.

Rice. 3.2. Example of obtaining a cyclic code