Lecture Notes on Cyclic Codes in Information Theory, Lecture notes of Engineering

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

2022/2023

Uploaded on 03/14/2023

myfuture
myfuture 🇺🇸

4.4

(18)

258 documents

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
UNIVERSITY OF ANBAR LECTURE NOTES ON INFORMATION THEORY FOR 4
th
CLASS STUDENTS
COLLEGE OF ENGINEERING
by: Dr. Naser Al-Falahy
ELECTRICAL ENGINEERING
- 70 -
CYCLIC CODES
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-
Li neari ty pr o perty: The sum of any two code words in the code is also a code
word
Cy clic p ropert y: 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
, ... , c
n
, 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)
= (c
i+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
WEEK 13
pf3
pf4
pf5

Partial preview of the text

Download Lecture Notes on Cyclic Codes in Information Theory and more Lecture notes Engineering in PDF only on Docsity!

COLLEGE OF ENGINEERING by: Dr. Naser Al-Falahy ELECTRICAL ENGINEERING

CYCLIC CODES

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 wordCyclic 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

WEEK 13

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.

Systematic Cyclic Codes

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

  1. The remaining two code words 1111111 and 0000000 remain unchanged under cyclic shift.

Table a Data vs. cyclic code words

Cyclic Code Decoding

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: