Chapter 10 Error Detection and Correction
Chapter 10 Error Detection and Correction
Error Detection
and
Correction
10.1 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Position of the data-link layer
10.2
Data link layer duties
Packetizing: move data packets or frames from one hop to the next within the
same LAN or WAN
Addressing: uses physical addresses (MAC Addresses) that are assigned for
and used to find the next hop in the hop-to-hop delivery
Error Control: uses error detection and correction to reduce the severity of
error occurrence
Flow Control: controls how much data a sender can transmit before it must
wait for an acknowledgement from the receiver in order not to overwhelm it
Medium Access Control (MAC): controls how the nodes should access a
shared media in a way to prevent packet collisions
10.3
Note
10.4
10-1 INTRODUCTION
10.5
Note
10.6
Figure 10.1 Single-bit error
10.7
Note
10.8
Figure 10.2 Burst error of length 8
The length of the burst is measured from the 1st to the last corrupted bits
The burst error doesn’t necessarily mean that errors occur in consecutive bits
Burst errors are most likely to occur in serial transmission
The noise duration is usually longer than the duration of one bit
The severity of burst errors are dependent on the data rate & the noise duration
For example: a noise duration of 0.01 sec would corrupt 10 bits of a 1Kbps
transmission and 10,000 bits of a 1Mbps source
10.9
Error Detection & Correction Concepts
Error detection: find out whether an errors has occurred
Error correction: find the exact number of corrupted bits
and their exact location within the message
Error detection is the first step towards error correction
Error detection and correction use the concept of
redundancy, which is adding extra bits to the data unit
The extra bits carry information about the data unit that
help find out whether any change may have happened to
the data unit at the receiver side
The extra bits are discarded as soon as the accuracy of
the transmission has been determined
10.10
Note
10.11
Forward Error Correction vs. Retransmission
Error correction by retransmission
If error is detected, the sender is asked to retransmit
Forward Error Correction (FEC):
The receiver uses an error correcting code, which automatically
corrects certain types of errors
Theoretically, any error can be automatically corrected
Error correction is harder than error detection and needs more
redundant bits
The secret of error correction is to locate the invalid bits
To locate a single-bit error in a data unit, you need enough
redundant bits to cover all states of change in the data bits as
well as the redundant bits and the no-change case
10.12
Coding
Redundancy is achieved via coding schemes
Sender adds extra bits to the data bits based on a
certain relationship
Receiver checks the relationship in order to detect
and/or correct errors
Factors of coding schemes
The ratio of the redundant bits to the data bits
The robustness of the whole process
Categories of coding schemes:
Block coding
Convolution coding
10.13
Note
10.14
Figure 10.3 The structure of encoder and decoder
10.15
Modular Arithmetic
Use a limited number of integers
Define an upper limit called modulus, N
Use only the integers from 0 to N-1, inclusive
This is called modulo-N arithmetic
If a number is greater than N, it is divided by N and
the remainder is the result
If a number is negative, add as many N’s as needed to
make it positive
There is no carry out when numbers are added or
subtracted
In modulo-2 arithmetic, the addition and subtraction
are similar and are performed using the bit-wise XOR
function
10.16
Figure 10.4 XORing of two single bits or two words
10.17
10-2 BLOCK CODING
10.18
Figure 10.5 Datawords and codewords in block coding
10.19
Example 10.1
10.20
Figure 10.6 Process of error detection in block coding
10.21
Example 10.2
Let us assume that k = 2 and n = 3. Table 10.1 shows the list of datawords and
codewords. Later, we will see how to derive a codeword from a dataword.
Assume the sender encodes the dataword 01 as 011 and sends it to the receiver.
Consider the following cases:
1. The receiver receives 011. It is a valid codeword. The receiver extracts the
dataword 01 from it.
2. The codeword is corrupted during transmission, and 111 is received. This is
not a valid codeword and is discarded.
3. The codeword is corrupted during transmission, and 000 is received. This is a
valid codeword. The receiver incorrectly extracts the dataword 00.
Two corrupted bits have made the error undetectable.
10.22
Note
10.23
Figure 10.7 Structure of encoder and decoder in error correction
10.24
Example 10.3
10.27
Note
10.28
Example 10.4
10.29
Note
10.30
Example 10.5
10.31
Example 10.6
10.32
Note
10.33
Example 10.7
10.34
Example 10.8
10.35
Figure 10.8 Geometric concept for finding dmin in error detection
10.38
Example 10.9
Solution
This code guarantees the detection of up to three errors
(s = 3), but it can correct up to one error. In other words,
if this code is used for error correction, part of its
capability is wasted. Error correction codes need to have
an odd minimum distance (3, 5, 7, . . . ).
10.39
10-3 LINEAR BLOCK CODES
10.40
Note
10.41
Example 10.10
10.42
Example 10.11
10.43
Note
10.44
Table 10.3 Simple even parity-check code C(5, 4)
10.45
Figure 10.10 Encoder and decoder for simple parity-check code
10.46
Example 10.12
Let us look at some transmission scenarios. Assume the sender sends the
dataword 1011. The codeword created from this dataword is 10111, which is
sent to the receiver. We examine five cases:
1. No error occurs; the received codeword is 10111. The syndrome is 0. The
dataword 1011 is created.
2. One single-bit error changes a1. The received codeword is 10011. The
syndrome is 1. No dataword is created.
3. One single-bit error changes r0. The received codeword is 10110. The
syndrome is 1. No dataword is created.
4. An error changes r0 and a second error changes a3.The received codeword is
00110. The syndrome is 0.The dataword 0011 is created at the receiver.
Note that here the dataword is wrongly created due to the syndrome value.
5. Three bits a3, a2, and a1 are changed by errors. The received codeword is
01011. The syndrome is 1.The dataword is not created. This shows that the
simple parity check, guaranteed to detect one single error, can also find any
odd number of errors.
10.47
Note
10.48
Figure 10.11 Two-dimensional parity-check code
10.50
Performance of the Two-Dimensional
Parity Check
Increases the likelihood of detecting burst errors
It fails if the error bits are in exactly the same
positions in two different data units (the changes
will cancel each other in this case)
10.51
The Hamming Error Correction Codes
The category of Hamming codes discussed
here is with dmin= 3:
2-bit detection & 1-bit correction
We need to choose an integer m≥3 such that:
n=2m-1 & k=n-m
The number of check bits r=m
For example:
If m=3, then n=7 & k=4
This is Hamming Code C(7,4) with dmin= 3
Each code word = a3 a2 a1 a0 r2 r1 r0
10.52
Table 10.4 Hamming code C(7, 4)
10.53
Figure 10.12 The structure of the encoder and decoder for a Hamming code
10.55
Example 10.13
Let us trace the path of three datawords from the sender to the
destination:
1. The dataword 0100 becomes the codeword 0100011. The
codeword 0100011 is received. The syndrome is 000, the final
dataword is 0100.
2. The dataword 0111 becomes the codeword 0111001. The
codeword 0011001 is received. The syndrome is 011. After
flipping b2 (changing the 1 to 0), the final dataword is 0111.
3. The dataword 1101 becomes the codeword 1101000. The
codeword 0001000 is received. The syndrome is 101. After
flipping b0, we get 0000, the wrong dataword. This shows that
our code cannot correct two errors.
10.56
Example 10.14
10.57
Performance of the Hamming Code
It can detect a 2-bit error
It can correct a 1-bit error
It can be modified in order to detect burst
errors of size N:
It is based on splitting the burst error between N
codewords
Convert the frame into N codewords
Rearrange the codewords in the frame from row-wise
to column-wise (see the example)
10.58
Figure 10.13 Burst error correction using Hamming code
10.59
10-4 CYCLIC CODES
10.61
Cyclic Redundancy Check (CRC)
At the encoder of the sender:
The k-bit dataword is augmented by appending (n-k) zeros to the
right hand side of it
The n-bit result is fed into the generator
The generator uses an agreed-upon divisor of size (n-k+1)
The generator divides the augmented dataword by the divisor
using modulo-2 division
The quotient of the division is discarded
The remainder is appended to the dataword to create the
codeword
At the decoder of the receiver:
The received codeword is divided by the same divisor to create
the syndrome, which has a size of (n-k) bits
If all the syndrome bits are zeros, then no error is detected
Otherwise, an error is detected and the received dataword is
discarded
10.62
Figure 10.14 CRC encoder and decoder
10.63
Figure 10.15 Division in CRC encoder
10.64
Figure 10.16 Division in the CRC decoder for two cases
10.65
Figure 10.21 A polynomial to represent a binary word
10.66
Figure 10.22 CRC division using polynomials
10.67
Note
10.68
Cyclic Code Analysis
Define the following cyclic code parameters as
polynomials:
Dataword: d(x)
Codeword: c(x)
Generator: g(x)
Syndrome: s(x)
Error: e(x)
Received codeword = c(x) + e(x)
Received codeword/g(x) = c(x)/g(x) + e(x)/g(x)
c(x)/g(x) does not have a remainder by definition
s(x) is the remainder of e(x)/g(x)
If s(x)≠0, then an error is detected
If s(x)=0, then either no error has occurred or the error has not
been detected
If e(x) is divisible by g(x), then e(x) can’t be detected
10.69
Note
In a cyclic code,
If s(x) ≠ 0, one or more bits is corrupted.
If s(x) = 0, either
a. No bit is corrupted. or
b. Some bits are corrupted, but the
decoder failed to detect them.
10.70
Note
10.71
Single-Bit Error
A single-bit error is e(x)=xi, where i is the
position of the bit
If a single-bit error is caught, then xi is not
divisible y g(x) (i.e.; there is a remainder)
If g(x) has, at least, two terms and the
coefficient of x0 is not zero, then e(x) can’t
be divided by g(x). That is, all single-bit
errors will be caught
10.72
Note
10.73
Example 10.15
10.74
Figure 10.23 Representation of two isolated single-bit errors using polynomials
10.75
Note
10.76
Example 10.16
10.77
Note
10.78
Note
Solution
a. This generator can detect all burst errors with a length
less than or equal to 6 bits;
3 out of 100 burst errors with length 7 will slip by;
1 – (1/2)6–1 = 1 - 1/32 = 0.97
16 out of 1000 burst errors of length 8 or more will slip by. 1 –
(1/2)6 = 1 – 1/64 = 0.984
10.80
Example 10.17 (continued)
10.81
Note
10.82
Performance of Cyclic Codes
Detect single-bit errors
Detect double-bit isolated errors
Detect odd number of errors
Detect burst errors of length less than or
equal to the degree of the generator
Detect, with a very high probability, burst
errors of length greater than the degree of
the generator
Can be implemented in either SW or HW
10.83
Table 10.7 Standard polynomials
10.84
10-5 CHECKSUM
10.85
Example 10.18
10.86
Example 10.19
10.87
Example 10.20
Solution
The number 21 in binary is 10101 (it needs five bits). We
can wrap the leftmost bit and add it to the four rightmost
bits. We have (0101 + 1) = 0110 or 6.
10.88
Example 10.21
Solution
In one’s complement arithmetic, the negative or
complement of a number is found by inverting all bits.
Positive 6 is 0110; negative 6 is 1001. If we consider only
unsigned numbers, this is 9. In other words, the
complement of 6 is 9. Another way to find the
complement of a number in one’s complement arithmetic
is to subtract the number from 2n − 1 (16 − 1 in this case).
10.89
Example 10.22
10.91
Figure 10.24 Example 10.22
1111
1001 0000
10.92
The Internet Checksum
The checksum generator subdivides the data unit into
equal-length data units of 16-bit each
The data units are added using the 1’s complement
arithmetic such that the total is always n-bit long
The data units are binary added normally to give the partial sum
The outer carry out is added to the partial sum to give the sum
The result is 1’s complemented to give the checksum
The checksum is appended to the data unit
The checksum checker performs the same operation
including the checksum:
If the result is zero, then the data unit has not been altered
10.93
Note
10.94
Note
10.95
Example 10.23
F F
F F F F
10.97
Performance of the Checksum
Detect all odd number of errors
Detect most even number of errors
If corresponding bits in different data units of
opposite values are affected, the error will not
be detected
Generally weaker than the CRC
10.98