270 likes | 474 Views
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 Example: CRC code tagged onto IP packets. Example: ISBN number check digit Correct errors
E N D
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 • Example: CRC code tagged onto IP packets. • Example: ISBN number check digit • Correct errors • 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 code. • Example: • Message: • 1011 1000 0100 • Encoded message: • 1011 1000 0100 1 • Encoded message after one error: • 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 Shift contents of register to left, drop in next bit 1010 0 Most significant bit is 0: Drop leading 0 0100
Error Detection: CRC • Example: 1000101001001000100100010 Shift contents of register to left, drop in next bit 0100 1 Most significant bit is 0: Drop leading 0 1001
Error Detection: CRC • Example: 1000101001001000100100010 Shift contents of register to left, drop in next bit 10100 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
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 the following (bad) code: 00 - 00100 01 - 01110 10 - 10001 11 - 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. • Encode m symbol data (x1, x2, …,xm) as (x1,x2,…,xm)G
Error Correction : Hamming Code • Hamming Code • Systematic: Code word is data word + parity • m message bits and r parity bits • Linear • Create matrix of size 2r-1by 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.
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 • 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: • Therefore, the error is given by row (111). • That is, in the fourth row. • Hence, error is in bit position 4. (0100010)· H = (111).