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=
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):
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 1.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. 2.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’: = Select Generator: CRC-8-ATM – Polynomial: x 8 + x 2 + x + 1 – Corresponds to: Two different orders are possible for the message. – Msbit-first: = x 6 + x 4 + x 2 + x + 1 – Lsbit-first: = x 7 + x 6 + x 5 + x 3 + x
Example – Generating CRC Code We will focus on Msbit-first order. Append 8 bits to message: 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 CRC Code: xor
Example – Checking Message Similar to generating the CRC code. Append CRC code to the message (instead of 0’s): Perform long division by the generator. If the reminder is not 0: An error occurred.
Example – Checking Message Result:
CRC Polynomials (Common) CRC-8-ATMx 8 + x 2 + x + 1 CRC-16-IBMx 16 + x 15 + x CRC-16-CCITTx 16 + x 12 + x CRC-32-IEEE 802.3x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 + x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1