0% found this document useful (0 votes)
10 views12 pages

CRC - Cyclic Redundancy Check (DC Assignment)

The document discusses Cyclic Redundancy Check (CRC), a mathematical algorithm used for error detection in data transmission and storage. It explains key concepts such as input data, generator polynomial, and CRC code, along with the advantages and limitations of CRC. Additionally, it provides examples of CRC design for binary and polynomial forms, demonstrating the encoding and decoding processes to verify data integrity.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views12 pages

CRC - Cyclic Redundancy Check (DC Assignment)

The document discusses Cyclic Redundancy Check (CRC), a mathematical algorithm used for error detection in data transmission and storage. It explains key concepts such as input data, generator polynomial, and CRC code, along with the advantages and limitations of CRC. Additionally, it provides examples of CRC design for binary and polynomial forms, demonstrating the encoding and decoding processes to verify data integrity.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Daffodil Internation University

Data
Communication
CSE225

SUBMISSION DATE :
19 December 2024
PROPOSED BY :
Sumaiya Zahid Sara
ID: 0242310005101967
PROPOSED TO :
MD Jahidul Alam
Cyclic Redundancy Check (CRC)

Cyclic Redundancy Check or CRC is a mathematical algorithm that


detects errors in data transmission and storage.

Key Concepts in CRC:-

Input Data (Message):


The original data or message that needs to be checked for errors.

Generator Polynomial:
A predefined binary number, often represented as a polynomial,
used for division. This is the core of CRC's functionality.

CRC code (Checksum):


A sequence of bits calculated using the CRC algorithm, appended to
the data to create a CRC-encoded message.

How CRC works:


CRC works by generating a checksum from the data being
transmitted, appending it to the data, and sending it along.
The receiver then performs the same CRC algorithm
on the received data and compares the checksums.
If the checksums match, the data was transmitted
correctly. If they don't match, errors occurred
during transmission.

Advantages of CRC:
Efficient Error Detection:
CRC can detect common errors such as single-bit
errors, burst errors, and some patterns of multiple-
bit errors.

Fast Computation:
The algorithm is computationally efficient, making
it suitable for real-time systems and hardware
implementations.

Widely Used:
It's the backbone of many communication protocols,
including Ethernet, USB, and many file storage
systems.
Limitations of CRC:

Not Foolproof:
CRC cannot detect every possible error. For
instance, if errors perfectly cancel each other out,
the remainder will still be zero.

Requires Agreement on Polynomial:


Both sender and receiver must agree on the genera-
tor polynomial.

CRC Design for Binary:

The dataword is 110110101011 and the divisor is 1101. Decode the


codeword without error syndrome.

Solution:

The given dataword is 110110101011


The divisor = 1101

Step 1: Calculate the number of additional data bits


Number of additional data bits = Number of divisor bits - 1
=4-1
= 3 bits

Step 2: Augment the dataword


The augmented dataword is → 110110101011000

Now, the encoder for the dataword:

1010 ) 110110101011000
1010
------------
0110 (remainder)
1010
-------------
0101 (bring down next bit)
1010
------------
0011 (bring down next bit)
1010
-------------
0110 (bring down next bit)
1010
------------
0101 (bring down next bit)
1010
------------
0000 (final remainder)

The final codeword is the original dataword concatenated with the


remainder:
110110101011 + 000 = 110110101011000.

Now, the decoder for the dataword:

1010 ) 110110101011000
1010
---------
0111 (remainder)
1010
----------
0010 (bring down next bit)
1010
---------
0000 (bring down next bit)
1010
---------
0000 (bring down next bit)
1010
---------
0000 (final remainder)

So the syndrome is 0. There is no error.

CRC Design with Polynomial:

Example:

Given Dataword = 110101(x5+x4+x2+1)

Divisor = 1011(x3+x+1)

Step 1: Augmented Dataword

The number of additional digits = Number of divisor digits – 1

= 4−1=3.

Augmented Dataword = Dataword appended with 3 zeros

= 110101000
Polynomial form of augmented dataword:

x8+x7+x5+x3

Encoder (Sender):
Given:
Dataword:
x8+x7+x5+x3
Divisor:
x3+x+1

Perform the Division:


Step 1:
Divide x8 by x3
Quotient = x5
Subtract (x5⋅(x3+x+1)):
x^8+x^7+x^5+x^3 - (x^8+x^6+x^5) = x^7+x^6+x^3
Step 2:
Divide x7 by x3
Quotient = x4
Subtract (x4⋅(x3+x+1)):

X^7+x^6+x^3−(x^7+x^4+x^3)=x^6+x^4

Step 3:
Divide x^6 by x^3
Quotient = x^3
Subtract (x3⋅(x3+x+1)):
x6+x4−(x6+x3+x)=x4+x3+x
Step 4:
Divide x^4 by x^3
Quotient = x
Subtract (x⋅(x3+x+1)):
x4+x3+x−(x4+x2+x)=x3+x2

Step 5:
Divide x^3 by x^3
Quotient = 1

Subtract (1⋅(x3+x+1)):

x3+x2−(x3+x+1)=x2+x+1

Remainder:
x2+x+1.

Codeword:

x^8 + x^7 + x^5 + x^3 + x^2 + x + 1

Decoder (Receiver):

The decoder verifies whether the received codeword is error-free by


performing polynomial division of the codeword by the divisor. If
the remainder is zero, the codeword is valid; otherwise, an error has
occurred.

Given:

Codeword:

x^8 + x^7 + x^5 + x^3 + x^2 + x + 1

(binary: 110101111)

Divisor:

x^3 + x + 1

(binary: 1011)

Perform the Division:

Step 1:
Divide x^8 by x^3:
Quotient = x^5

Subtract (x^5 ⋅ (x^3 + x + 1)):

x^8 + x^7 + x^5 + x^3 + x^2 + x + 1 - (x^8 + x^6 + x^5) = x^7 + x^6 +
x^3 + x^2 + x + 1

Step 2:
Divide x^7 by x^3:
Quotient = x^4

Subtract (x^4 ⋅ (x^3 + x + 1)):


x^7 + x^6 + x^3 + x^2 + x + 1 - (x^7 + x^4 + x^3) = x^6 + x^4 + x^2 +
x+1

Step 3:
Divide x^6 by x^3:
Quotient = x^3

Subtract (x^3 ⋅ (x^3 + x + 1)):

x^6+x^4−(x^6+x^3+x) = x^4+x^3+x

Step 4:

Divide x^4 by x^3:


Quotient = x

Subtract (x⋅(x^3+x+1))

x^4 + x^3 + x^2 + 1 - (x^4 + x^2 + x) = x^3 + x + 1

Step 5:
Divide x^3 by x^3:
Quotient = 1

Subtract (1⋅(x3+x+1))

x^3 + x + 1 - (x^3 + x + 1) = 0
Final Remainder:
0

Interpretation:

• Since the remainder is 0, the received codeword is valid and


error-free.
• The dataword extracted is the original polynomial:
• x^8 + x^7 + x^5 + x^3 (binary: 110101000).

You might also like