COEN 180 Erasure Correcting, Error Detecting, and Error Correcting Codes
Download
Report
Transcript COEN 180 Erasure Correcting, Error Detecting, and Error Correcting Codes
COEN 180
Erasure Correcting,
Error Detecting, and
Error Correcting Codes
Basics
Use encoding to protect data
for storage
for transmission.
Encode in order to
Discover errors
Correct errors
Example: CRC code tagged onto IP packets.
Example: ISBN number check digit
Example: Disk Drives, Communications Protocols
Correct erasures
Redundant storage of data (e.g. in Disk Arrays)
Basics
Rich Mathematical Theory
Block
codes, burst codes, …
Uses heavily Galois fields
Mathematical structure with addition, multiplication,
… in which we manipulate objects according to the
same rules as the more popular fields of real
numbers, complex numbers, rational numbers,
Error Detection
Basic Principle:
Calculate
a small “signature” from a data
object and store it with the data object.
For verification, recalculate the signature.
Example: CRC codes
Cyclic
Redundancy Codes
Fast calculation
Error Detection
Parity code
Block code of l bits
Adds parity bit to block
Example:
Message:
1011 1000 0100 1
Encoded message after one error:
1011 1000 0100
Encoded message:
code.
1111 1000 0100 1 Parity is Off
Encoded message after two errors:
1111 1100 0100 1 Parity is correct, error undetected
Error Detection: CRC
Example:
Need
a CRC polynomial (a bit string for us)
Example 11011 (with leading 1)
Cyclically
shift through the message with a
field the length of the CRC polynomial
Example 1000101001001000100100010
Whenever most significant bit is 1, XOR CRC
polynomial.
Error Detection: CRC
Example:
1000101001001000100100010
1000
Error Detection: CRC
Example:
1000101001001000100100010
10001
Most significant bit is 1:
XOR 11011
Drop leading 0
01010
1010
Error Detection: CRC
Example:
1000101001001000100100010
1010 0
Shift contents of
register to left, drop in
next bit
Most significant bit is 0:
Drop leading 0
0100
Error Detection: CRC
Example:
1000101001001000100100010
0100 1
Shift contents of
register to left, drop in
next bit
Most significant bit is 0:
Drop leading 0
1001
Error Detection: CRC
Example:
1000101001001000100100010
10100
Shift contents of
register to left, drop in
next bit
Most significant bit is 1:
XOR 11011
Drop leading 0
01111
1111
Error Detection: CRC
Add CRC of packet in TCP/IP
Error Correction
Transmission Channel
Used
for communications channel
Used for storage channel (travel in time)
Error Correction
Encode an object with additional parity bits.
Use parity bits to detect and correct an error.
Trivial Example: Replication Code
Encodes messages of length 1b
Add to bit two copies of the bit.
When all three bits in the received message coincide, conclude
that no error has occurred.
Otherwise, use a majority rule to decide.
Decoding Table
000
0
100
0
001
0
101
1
010
0
110
1
011
1
111
1
Error Correction
Hamming Distance
Defined
to be the number of different bits in a
bit string of length l.
Examples:
0011 1110 and 0101 1110 have distance 2
0011 1110 and 1100 0001 have distance 8
Error Correction
Code Word: a word that can be obtained
by encoding a piece of datum.
There are many fewer code words than
possible.
Maximum Likelihood Decoding:
When
receiving a message, decode it with the
code word closest in Hamming distance.
Error Correction
Maximum Likelihood Decoding
Error Correction
Example:
Assume
00
01
10
11
-
the following (bad) code:
00100
01110
10001
11000
Assume
we received
11111
How do we decode?
Error Correction
Linear Codes
Based
on Reed Solomon.
Encode symbols: bit-strings of length l.
Generate an m by n matrix G such that
any m by m submatrix is invertible.
such that G is of the form (1|P)
where 1 is the m by m identity matrix
P is the so-called parity matrix.
m symbol data (x1, x2, …,xm) as
(x1,x2,…,xm)G
Encode
Error Correction : Hamming Code
Hamming Code
Systematic:
Code word is data word + parity
m message bits and r parity bits
Linear
matrix of size 2r-1 by r.
Populate rows with binary encoding of all numbers
from 1 to 2r
If desired, arrange them so that the identity matrix is
the lower part of the matrix.
Create
Error Correction : Hamming Code
Hamming matrix for r = 3.
Error Correction: Hamming Code
If data word is (a,b,c,d), then code word is
(a,b,c,d,x,y,z) where the parity bits are
chosen such that
(a,b,c,d)H=(0,0,0,0,0,0,0).
Error Correction: Hamming Code
Error Correction: Hamming Code
Example:
Data
is (0,1,0,1)
What is the code word?
Error Correction: Hamming Code
Answer:
(0,1,0,1,0,1,0).
Error Correction: Hamming Code
To correct an error, apply H to the received
vector.
The result is the binary encoding of a row
in H.
The corresponding coefficient in the vector
is were the error most likely was.
Error Correction: Hamming Code
Assume that we received (0100010).
We apply H to this vector:
(0100010)· H = (111).
Therefore, the error is given by row
(111).
That is, in the fourth row.
Hence, error is in bit position 4.