### Lecture 9: Error Detection and Correction

```ERROR DETECTION
AND CORRECTION
10.1 Introduction
• Data can be corrupted
• Single-bit error:
• Burst error:
Redundancy
• Extra information (redundant bits) can be used to “detect”
and “correct” errors
• Coding (to add redundant bits)
Encoding
Decoding
10.2 Block Coding
• Coding schemes can be divided into two broad
categories: block coding and convolution coding
• Background
• Modular arithmetic (modulus N): Use only a limited number of
integers [0, 1, 2, …, N-1]
• E.g., 7 + 6 in modular-9 arithmetic is 4, or “(7+6) % 9 = 4”
• Exclusive OR (XOR) = modular-2 arithmetic
Block Coding
• Datawords: messages divided into k-bits blocks
• Codewords: k-bit datawords + r-bits redundancy
• We have 2n codewords, but use only 2k datawords
• There are 2n – 2k invalid codewords
(i.e., unused codewords)
Example of Error Detection
• Datawords and codewords
• Example: sender encodes dataword 01 as 011
2. If receiver receives 111 (i.e., there is a single bit error), which is
not a valid codeword, detects the error
3. If receiver receivers 000 (i.e., there are two bits error), decodes
it to 00  undetectable errors
Example of Error Correction
• Datawords and codewords
• Example: sender encodes dataword 01 as 01011
• Finds the codeword that is closest to 01001
• 01011 has a single-bit difference
• 00000  2-bit difference, …, 11110  3-bit difference
• Decodes it to 01
Hamming Distance
• Hamming distance between two words is the number of
differences between corresponding bits
• Minimum hamming distance (dmin) is the “smallest”
Hamming distance between all possible pairs in a set of
words
100
000
111
Hamming Distance for Detection
• To guarantee detection of up to “s” errors, we should
have dmin > s
Hamming Distance for Correction
• To guarantee correction of up to “t” errors, we should
have dmin > 2t
Example
• Minimum Hamming distance?
• How many bit errors can be detected?
• How many bit errors can be corrected?
10.3 Linear Block Codes
• Precise definition is out of scope
• Informally, in a linear block code, XOR of any two valid
codewords creates another valid codeword
• Previous two sets of codewords are linear block codes
• Minimum Hamming distance of linear block codes is the minimum
number of 1’s in a non-zero codeword
Simple Parity-Check Code
• A k-bit dataword is encoded into (k+1)-bit codeword
• The extra bit is chosen to make the number of 1’s in the
codeword “even”
The last bit
(0 or 1) is
• Simple parity-check code is a single-bit error-detecting
code, with dmin = 2
Implementation of Simple Parity-Check Code
• s0 = b3 + b2 + b1 + b0 + q0 (modulo 2)
Two-Dimensional Parity Check
• Example: four 7-bit datawords become five 8-bit
codewords
Cannot detect 4 errors
• Can detect up to 3 errors
Hamming Codes
• We consider hamming codes with dmin = 3
• Detect two errors, or correct one single error
• Choose a number m ≥ 3, then
• Codeword length n = 2m – 1
• Dataword length k = n – m
• Number of check bits r = m
 Example: m = 3, n = 7 (=23–1), k = 4 (=7–3)
• Dataword “a3a2a1a0”  Codeword “a3a2a1a0 + r2r1r0”
• r0 = a2 + a1+ a0 (modulo-2)
• r1 = a3 + a2+ a1 (modulo-2)
Each bit (e.g., a0) is
• r2 = a1 + a0+ a3 (modulo-2)
covered by two parity bits
(e.g., r0 and r2)
Hamming Codes
Hamming Codes
• Calculation of syndrome
• s0 = b2 + b1+ b0 + q0 (modulo-2)
• s1 = b3 + b2+ b1 + q1 (modulo-2)
• s2 = b1 + b0+ b3 + q2 (modulo-2)
• Decision to correct a single-bit error
r0 = a2 + a1+ a0 (modulo-2)
r1 = a3 + a2+ a1 (modulo-2)
r2 = a1 + a0+ a3 (modulo-2)
Hamming Codes
• Example
• Received codeword 0100011 and syndrome is 000, what is the
dataword?
• Received codeword 0011001 and syndrome is 011, what is the
dataword?
Hamming Codes
• Detect a burst error
10.4 Cyclic Codes
• Linear block codes with the following property
• If a codeword is cyclically shifted, the result is another codeword
• Our discussion is limited to a typical example, called Cyclic
Redundancy Check (CRC)
shift
Implementation
• Case of CRC with 4-bit dataword, 7-bit codeword
CRC Encoder
Result of XOR
CRC Non-corrupted
Decoderbits
The same
divider as
encoder
Corrupted bits
Hardware Design
• CRC encoder and decoder can be easily implemented
using shift registers
It takes n-k
times to get
Encoder example: divisor = 1011
the •result
CRC Encoder using Shift Registers
• Divisor = 1011
Polynomials
• A pattern can be considered as coefficients of a
polynomial
• Adding and subtracting are done between the coefficients
of the same power
• Ex:
Division using Polynomials
• Encoder
1011 =
= 1001
Cyclic Code Analysis
• Dataword d(x), codeword c(x), divisor g(x), syndrome s(x),
error e(x)
• After decoding, we have
• An error cannot be detected if e(x) is divisible by g(x)
Design of Divisor
• Single-bit error: e(x) = xa for some a
• Divisor has more than one term and the least coefficient (i.e., of x0)
is 1
• Two-bit error: e(x) = xa + xb for some a, b
• Divisor should not divide xt+1
• Odd numbers of errors
• Divisor should have the factor (x+1)
• Burst errors: e(x) = xa (1+ … + xb ) for some a, b
• All burst errors of b-a+1 <= r will be detected
• All other errors will be detected with probability
1-(1/2)r-1-(1/2)r
10.5 Checksum
• Often used in the Internet protocols
• Idea
• For data (7, 11, 12, 0, 6),
• send (7, 11, 12, 0, 6, -36), where 36 = 7+11+12+0+6
• One’s complement
• For the case, when the addition results in a large number more
than n bits
Checksum Procedure
One’s
complement for
4-bit binary
1 1 1 1
0 0 0 0
1 0 0 1
9 = – 6 in one’s
complement
representation
```