



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
A set of lecture notes on cyclic codes, a subclass of linear block codes, for 4th class students in the College of Engineering at the University of Anbar. The notes cover the properties of cyclic codes, their mathematical structure, encoding and decoding schemes, and examples of their implementation. The document also includes a discussion of systematic cyclic codes and a method for generating them.
Typology: Lecture notes
1 / 6
This page cannot be seen from the preview
Don't miss anything!




COLLEGE OF ENGINEERING by: Dr. Naser Al-Falahy ELECTRICAL ENGINEERING
Cyclic codes form a subclass of linear block codes. Indeed, many of the important linear block codes discovered to date are either cyclic codes or closely related to cyclic codes. An advantage of cyclic codes over most other types of codes is that they are easy to encode Furthermore; cyclic codes possess a well-defined mathematical structure, which has led t the development of very efficient decoding schemes for them. A binary code is said to be a cyclic code if it exhibits two fundamental properties- Linearity property: The sum of any two code words in the code is also a code word Cyclic property: Any cyclic shift of a code word in the code is also a code word.
Cyclic codes are such that code words are simple lateral shifts of one another. For example, if c = (c 1 , c 2 , ...c (^) n-1 , c (^) n ) is a code word, then so are (C 2 , C 3 , ..., cn, c 1 ) and (C 3 , C 4 , … , c n , c 1 , c 2 ), and so on. We shall use the following notation. If
c = (c 1 , c 2 , ..., c (^) n )
is a code vector of a code C, then c (i)^ denotes c shifted cyclically i places to the left, that
is, c (i)^ = (ci+1 + c (^) i + 2 ,…. c (^) n , c 1 , c 2 , ..., c (^) i )
Cyclic codes can be described in a polynomial form. This property is extremely useful in the analysis and implementation of these codes. The code vector c can be expressed as the (n - 1)-degree polynomial.
c ( x ) = c 1 x n - 1^ + c 2 x n - 2^ +... + c (^) n
Modulo-2 addition is used everywhere in the mathematical processes.
One of the interesting verify this property as follows:
Also note that: c(x)= d(x)g(x)
The generator polynomial g(x) must be of the order n — k
COLLEGE OF ENGINEERING by: Dr. Naser Al-Falahy ELECTRICAL ENGINEERING
Example : Find a generator polynomial g(x) for a (7,4) cyclic code, and find code vectors for the following data vectors: 1010,1111, 0001, and 1000.
In this case n = 7 and n — k = 3, and
x^7 + 1 = (x + l)(x^3 + x + 1 ) ( x 3 + x 2 + 1 )
For a (7, 4) code, the generator polynomial must be of the order n — k = 3, In this case, there are two possible choices for g ( x ): (x^3 + x + 1) or (x^3 + x^2 + 1). Let us choose the 2nd^ choice,
g ( x ) = x^3 + x^2 + 1 Now , for d= 1010
d(x)= x^3 +x,
c(x)=d(x)g(x) = (x^3 +x)( x^3 + x 2 + 1)= x^6 +x 5 +x^4 +x
Hence; c= 1 1 1 0 0 1 0
The same scenario should be applied on the other data, yields:
d c 1010 1110010 1111 1001011 0001 0001101 1000 1101000
Note the structure of the code words. The first k digits are not necessarily the data digits. Hence, this is not a systematic cyclic code.
In a systematic code, the first k digits are data digits, and the last m = n — k digits are the parity-check digits. Systematic codes are a special case of general codes. Our discussion thus far applies to general cyclic codes, of which systematic cyclic codes are a special case. We shall now develop a method of generating systematic cyclic codes.
We shall show that for a systematic code, the code word polynomial c ( x ) corresponding to the data polynomial d(x) is given by:
where ρ(x) is the remainder from dividing xn - k^ d(x) by g(x)
COLLEGE OF ENGINEERING by: Dr. Naser Al-Falahy ELECTRICAL ENGINEERING
words can be obtained by successive cyclic shifts of the two code words 1110010 and
Table a Data vs. cyclic code words
In decoding the cyclic code, we consider that:
If no error occurred during the transmission, no remainder remains & the syndrome s(x) is zero(no error).
Note that the syndrome is of order s(x)= n-k-
For noisy channel; certain error may occurs that make the received code:
r(x) =c(x)+e(x)
with non-zero syndrome:
COLLEGE OF ENGINEERING by: Dr. Naser Al-Falahy ELECTRICAL ENGINEERING
Again, as before, a received word r could result from any one of the 2 k^ code words and a suitable error. For example, for the code in the above table, if r = 0110010, this could mean c = 1110010 and e = 1000000, or c = 1101000 and e = 1011010, or 14 more such combinations. As seen earlier, the most likely error pattern is the one with the minimum weight (or minimum number of 1 's). Hence, here c = 1110010 and e = 1000000 is the correct decision.
It is convenient to prepare a decoding table, that is, to list the syndromes for all correctable errors. For any r, we compute the syndrome, and from the table we find the corresponding correctable error e. Then we determine c = r + e.
Example Construct the decoding table for the single-error correcting (7,4) code, Determine the data vectors transmitted for the following received vectors r : (a) 1101101; (b) 0101000; (c) 0001100.
Solution:- The first step is to construct the decoding table. Because n — k — 1 = 2, the syndrome polynomial is of the second order, and there are seven possible nonzero syndromes. There are also seven possible correctable single-error patterns because n — 1. We should compute the syndrome for each of the seven correctable error patterns. For example, for e = 1000000, e ( x ) = x 6. Because g ( x ) = x^3 + x 2 + 1 , for this code, we have:
This make the syndrome to be s= 110
In similar way, we repeat the above scenario to calculate other syndrome for the other error patterns, as shown in table b: