010 Error Detection and Correction (CH 10)
010 Error Detection and Correction (CH 10)
Communications
10.10
10.10
Error Detection Process
Error Correction
correction of detected errors usually requires
data block to be retransmitted
not appropriate for wireless applications
bit error rate is high causing lots of retransmissions
when propagation delay long (satellite) compared with
frame transmission time, resulting in retransmission of
frame in error plus many subsequent frames
instead need to correct errors on basis of bits
received
error correction provides this
Error Correction Process
Modular Arithmetic
Note
In modulo-N arithmetic, we use only the integers in the range 0
to N −1, inclusive.
10.14
10.14
Figure 10.4 XORing of two single bits or two words
10.15
10.15
BLOCK CODING
10.16
10.16
Example 10.1
10.17
10.17
Error Detection in block
coding
Enough redundancy is added to detect
an error.
The receiver knows an error occurred
but does not know which bit(s) is(are) in
error.
Has less overhead than error
correction.
10.18
10.18
Figure 10.6 Process of error detection in block coding
10.19
10.19
Example 10.2
10.20
10.20
Example 10.2 (continued)
10.21
10.21
Table 10.1 A code for error detection (Example 10.2)
10.22
10.22
Note
An error-detecting code can detect
only the types of errors for which it is designed; other types of
errors may remain undetected.
10.23
10.23
Error Correction : Structure of encoder and decoder in error correction
10.24
10.24
Example 10.3
10.27
10.27
Burst Errors
Burst errors are very common, in particular in
wireless environments where a fade will affect
a group of bits in transit. The length of the
burst is dependent on the duration of the
fade.
One way to counter burst errors, is to break
up a transmission into shorter words and
create a block (one word per row), then have
a parity check per word.
The words are then sent column by column.
When a burst error occurs, it will affect 1 bit in
several words as the transmission is read
back into the block format and each word is
checked individually.
Figure 10.13 Burst error correction using Hamming code
10.
10-4 CYCLIC CODES
10.
Table 10.6 A CRC code with C(7, 4)
10.
Figure 10.14 CRC encoder and decoder
10.
Figure 10.15 Division in CRC encoder
10.
Figure 10.16 Division in the CRC decoder for two cases
10.
Figure 10.17 Hardwired design of the divisor in CRC
10.
Figure 10.18 Simulation of division in CRC encoder
10.
Figure 10.19 The CRC encoder design using shift registers
10.
Figure 10.20 General design of encoder and decoder of a CRC code
10.
Using Polynomials
We can use a polynomial to represent a
binary word.
Each bit from right to left is mapped onto a
power term.
The rightmost bit represents the “0” power
term. The bit next to it the “1” power term, etc.
If the bit is of value zero, the power term is
deleted from the expression.
Figure 10.21 A polynomial to represent a binary word
10.
Figure 10.22 CRC division using polynomials
10.
Note
10.
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.
Note
In a cyclic code, those e(x) errors that are divisible
by g(x) are not caught.
Received codeword (c(x) + e(x))/g(x) =
c(x)/g(x) + e(x)/gx
The first part is by definition divisible the second
part will determine the error. If “0” conclusion ->
no error occurred. Note: that could mean that an
error went undetected.
10.
Note
10.
Example 10.15
10.
Figure 10.23 Representation of two isolated single-bit errors using polynomials
10.
Note
10.
Example 10.16
10.
Note
10.
Example 10.17
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; 16 out of 1000 burst errors of
length 8 or more will slip by.
10.
Example 10.17 (continued)
10.
Note
10.
Table 10.7 Standard polynomials
10.
10-5 CHECKSUM
10.
Example 10.18
10.
Example 10.19
10.
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.
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.
Example 10.22
10.
Example 10.22 (continued)
10.
Figure 10.24 Example 10.22
10.
Note
Receiver site:
1. The message (including checksum) is
divided into 16-bit words.
2. All words are added using one’s
complement addition.
3. The sum is complemented and becomes the
new checksum.
4. If the value of checksum is 0, the message
is accepted; otherwise, it is rejected.
10.
Example 10.23
10.
Figure 10.25 Example 10.23
10.