190 likes | 200 Views
Learn about Hamming Distance, error detection, error correction, parity check, and cyclic redundancy check. Includes examples and calculations.
E N D
Practical Session 11 Codes
Hamming Distance • General case: The distance between two code words is the amount of 1-bit changes required to reach from one word to the other. • Binary case: Number of 1’s in the XOR between the words. • Hamming Distance is the minimum distance between the code words.
Hamming Distance • Intuition (code graph): • Example: d=2 00 01 10 11
Error Detection • Hamming Distance: d. • Can Detect d-1 errors.
Fixing Erasures • Can fix d-1 erasures.
Error Correction • Can fix Errors
Example • Given four “data” words, can we use 5-bit code words for fixing 1 error? • Answer: Yes. We need a hamming distance of 3 to fix 1 error. We can create code words with independent graph “spheres”.
Parity Check • The most basic error check. • Used to test one character. • Appended to the end of the message. • Can detect 1 error. • Example (Even parity): 10010100 1 10010000 1
Block Character Checksum • Uses vertical and horizontal parity bits to detect double errors. • Used for transmitting a block of characters. • BCC is used to detect two errors. • Odd parity calculated for each row. • Even parity calculated for each column.
BCC - Example • Two errors in the character ‘N’. • Parity doesn’t change. • BCC changed.
Cyclic Redundancy Check • A CRC is an error-detecting code • An n-bit CRC, applied to a data block of arbitrary length, will detect any single error burst not longer than n bits • Will detect a fraction 1-2-n of all longer error bursts • The simplest error-detection system, the parity bit, is in fact a trivial CRC: it uses the two-bit-long divisor 11.
Calculation Steps - Sending • A generator is chosen. • This is a sequence of bits, of which the first and last are 1. • This sequence is used with the bits of the message to calculate a check sequence which has 1 fewer bits than the generator. • The check sequence is appended to the original message
Calculation Steps - Receiving • At the receiver, the same calculation is performed on the message and check sequence combined. • If the result is 0 no transmission error is assumed to have occurred.
Example • Compute 8-bit CRC for an 8-bit message: ‘W’. • ASCII for ‘W’: 8710 = 5716 • Select Generator: CRC-8-ATM • Polynomial: x8 + x2 + x + 1 • Corresponds to: 100000111 • Two different orders are possible for the message. • Msbit-first: 010101112= x6 + x4 + x2 + x + 1 • Lsbit-first: 111010102= x7 + x6 + x5 + x3 + x
Example – Generating CRC Code • We will focus on Msbit-first order. • Append 8 bits to message: • 0101011100000000 • Perform long-division of message by generator. • Quotient is not needed. • Instead of subtraction perform simple XOR. • CRC code is the reminder.
Example – Generating CRC Code 0101011100000000 100000111 xor 100000111 001011011000000 xor 100000111 0011010110000 xor 100000111 01010101100 xor 100000111 0010100010 CRC Code: 10100010
Example – Checking Message • Similar to generating the CRC code. • Append CRC code to the message (instead of 0’s): 0101011110100010 • Perform long division by the generator. • If the reminder is not 0: An error occurred.
Example – Checking Message 0101011110100010 100000111 Result: 00000000