You are on page 1of 33

E r ro r D e te c t i o n

&
C o r re c t i o n
Error is a condition when the receiver’s information does not
match the sender’s information. During transmission, digital
signals suffer from noise that can introduce errors in the binary
bits traveling from sender to receiver. That means a 0 bit may
change to 1 or a 1 bit may change to 0.

Data (Implemented either at the Data link layer or Transport


Layer of the OSI Model) may get scrambled by noise or get
corrupted whenever a message is transmitted. To prevent such
errors, error-detection codes are added as extra data to digital
messages. This helps in detecting any errors that may have
occurred during message transmission.
Types of Errors
Single-Bit Error:
A single-bit error refers to a type of data transmission error that
occurs when one bit (i.e., a single binary digit) of a transmitted
data unit is altered during transmission, resulting in an incorrect
or corrupted data unit.
Multiple-Bit Error:
A multiple-bit error is an error type that arises when more than
one bit in a data transmission is affected.

Burst Error:
When several consecutive bits are flipped mistakenly in digital
transmission, it creates a burst error. This error causes a sequence
of consecutive incorrect values.
To detect errors, a common technique is to introduce redundancy
bits that provide additional information.
Various techniques for error detection include:

1.Simple Parity Check


2.Two-dimensional Parity Check
3.Checksum
4.Cyclic Redundancy Check (CRC)
Error Detection Methods
Simple Parity Check:
Simple-bit parity is a simple error detection method that involves
adding an extra bit to a data transmission.
It works as:
1 is added to the block if it contains an odd number of 1’s, and
0 is added if it contains an even number of 1’s
This scheme makes the total number of 1’s even, that is why it is called
even parity checking.
Disadvantages
Single Parity check is not able to detect even no. of bit error.

• For example, the Data to be transmitted is 101010. Codeword


transmitted to the receiver is 1010101 (we have used even
parity).
Let’s assume that during transmission, two of the bits of code
word flipped to 1111101.

On receiving the code word, the receiver finds the no. of ones to
be even and hence no error, which is a wrong assumption.
Two-dimensional Parity Check:
Two-dimensional Parity check bits are calculated for each row,
which is equivalent to a simple parity check bit. Parity check bits
are also calculated for all columns, then both are sent along
with the data. At the receiving end, these are compared with the
parity bits calculated on the received data
Checksum:
Checksum error detection is a method used to identify errors in
transmitted data. The process involves dividing the data into
equally sized segments and using a 1’s complement to calculate
the sum of these segments. The calculated sum is then sent
along with the data to the receiver. At the receiver’s end, the
same process is repeated and if all zeroes are obtained in the
sum, it means that the data is correct.
Checksum – Operation at Sender’s Side
❑Firstly, the data is divided into k segments each of m bits.
❑On the sender’s end, the segments are added using 1’s
complement arithmetic to get the sum. The sum is complemented
to get the checksum.
❑The checksum segment is sent along with the data segments.

Checksum – Operation at Receiver’s Side


❑At the receiver’s end, all received segments are added using 1’s
complement arithmetic to get the sum. The sum is complemented.
❑If the result is zero, the received data is accepted; otherwise
discarded.
Cyclic Redundancy Check (CRC)
CRC is a redundancy error technique used to determine the error.
Following are the steps used in CRC for error detection:
• In CRC technique, a string of n 0s is appended to the data unit, and this n number is less
than the number of bits in a predetermined number, known as division which is n+1 bits.
• Secondly, the newly extended data is divided by a divisor using a process is known as binary
division. The remainder generated from this division is known as CRC remainder.
• Thirdly, the CRC remainder replaces the appended 0s at the end of the original data. This
newly generated unit is sent to the receiver.
• The receiver receives the data followed by the CRC remainder. The receiver will treat this
whole unit as a single unit, and it is divided by the same divisor that was used to find the
CRC remainder.
If the resultant of this division is zero which means that it has no error, and the data is
accepted.
CRC generator and checker
Generator Polynomial
CRC uses Generator Polynomial which is available on both
sender and receiver side.
An example generator polynomial is of the form like x3 + x + 1.
This generator polynomial represents key 1011.
Another example is x2 + 1 that represents key 101.
Example 1 (No error in transmission):
Data word to be sent - 100100
Key - 1101 [Or generator polynomial x3 + x2 + 1]
Sender Side:

Therefore, the remainder is 001 and hence the encoded data sent is 100100001
Receiver Side:
Code word received at the receiver side 100100001

Therefore, the remainder is all zeros. Hence, the data received has no error.
Example 2: (Error in transmission)
Data word to be sent - 100100
Key - 1101
Sender Side:

Therefore, the remainder is 001 and hence the code word sent is 100100001.
Receiver Side
Let there be an error in transmission media
Code word received at the receiver side – 100000001

Since the remainder is not all zeroes, the error is detected at the receiver side.
Hamming Code for Error detection and
correction
Hamming code is a set of error-correction codes that can be used
to detect and correct the errors that can occur when the data is
moved or stored from the sender to the receiver. It is a technique
developed by R.W. Hamming for error correction.

Redundant bits – Redundant bits are extra binary bits that are
generated and added to the information-carrying bits of data transfer
to ensure that no bits were lost during the data transfer.
The number of redundant bits can be calculated using the following
formula:
2^r ≥ m + r + 1
where, r = redundant bit, m = data bit
Suppose the number of data bits is 7, then the number of redundant bits can be
calculated using: = 2^4 ≥ 7 + 4 + 1
Thus, the number of redundant bits= 4 Parity bits.

Determining the position of redundant bits – These redundancy bits are placed at
positions that correspond to the power of 2.
As in the above example:
• The number of data bits = 7
• The number of redundant bits = 4
• The total number of bits = 11
• The redundant bits are placed at positions corresponding to power of 2- 1, 2, 4,
and 8
Suppose the data to be transmitted is 1011001, the bits will be placed as
follows:

Each parity bit calculates the parity for some of the bits in the code word. The position of
the parity determines the sequence of bits that it alternatively checks and skips.
Position 1 − Check 1 bit, then skip 1 bit, check 1 bit and then skip 1 bit and so on (Ex −
1,3,5,7,11, etc.)
Position 2 − Check 2 bit, then skip 2 bit, check 2 bit, then skip 2 bit (Ex −
2,3,6,7,10,11,14,15, etc.)
Position 4 − Check 4 bit, then skip 4 bit, check 4 bit, then skip 4 bit (Ex − 4, 5, 6, 7, 12, 13,
14, 15, etc.)
Position 8 − Check 8 bit, then skip 8 bit, check 8 bit, then skip 8 bit (Ex − 8, 9, 10, 11, 12,
13, 14, 15, 24, 25, 26, 27, 28, 29, 30, 31).

Set the parity bit 1 if the total number of 1s in the positions it checks odd or
set the parity bit 0 if the total number of 1s in the positions it checks even.
Determining the Parity bits:
R1 bit is calculated using parity check at all the bits positions whose
binary representation includes a 1 in the least significant position. R1:
bits 1, 3, 5, 7, 9, 11

To find the redundant bit R1, we check for even parity. Since the total
number of 1’s in all the bit positions corresponding to R1 is an even
number the value of R1 (parity bit’s value) = 0
R2 bit is calculated using parity check at all the bits positions whose
binary representation includes a 1 in the second position from the least
significant bit. R2: bits 2,3,6,7,10,11

To find the redundant bit R2, we check for even parity. Since the total
number of 1’s in all the bit positions corresponding to R2 is odd the
value of R2(parity bit’s value)=1
R4 bit is calculated using parity check at all the bits positions whose
binary representation includes a 1 in the third position from the least
significant bit. R4: bits 4, 5, 6, 7

To find the redundant bit R4, we check for even parity. Since the
total number of 1’s in all the bit positions corresponding to R4 is odd
the value of R4(parity bit’s value) = 1
R8 bit is calculated using parity check at all the bits positions whose
binary representation includes a 1 in the fourth position from the
least significant bit. R8: bit 8,9,10,11

To find the redundant bit R8, we check for even parity. Since the total
number of 1’s in all the bit positions corresponding to R8 is an even
number the value of R8 (parity bit’s value)=0
Thus, the data transferred is:
Error detection and correction:
Suppose in the above example the 6th bit is changed from 0 to 1
during data transmission, then it gives new parity values in the
binary number:
For all the parity bits we will check the number of 1’s in their respective
bit positions.
• For R1: bits 1, 3, 5, 7, 9, 11. We can see that the number of 1’s in these
bit positions are 4 and that’s even so we get a 0 for this.
• For R2: bits 2,3,6,7,10,11 . We can see that the number of 1’s in these
bit positions are 5 and that’s odd so we get a 1 for this.
• For R4: bits 4, 5, 6, 7 . We can see that the number of 1’s in these bit
positions are 3 and that’s odd so we get a 1 for this.
• For R8: bit 8,9,10,11 . We can see that the number of 1’s in these bit
positions are 2 and that’s even so we get a 0 for this.

The bits give the binary number 0110 whose decimal representation is 6.
Thus, bit 6 contains an error.
To correct the error the 6th bit is changed from 1 to 0.
THANK YOU

You might also like