practical session 11 codes. hamming distance general case: the distance between two code words is...
Post on 21-Dec-2015
221 views
TRANSCRIPT
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
10 11
01
Error Detection
• Hamming Distance: d.• Can Detect d-1 errors.
Fixing Erasures
• Can fix d-1 erasures.
Error Correction
• Can fix Errors2
1d
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
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’: 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
CRC Code: 10100010
100000111
001011011000000
100000111
0011010110000
100000111
01010101100
100000111
0010100010
xor
xor
xor
xor
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
CRC Polynomials (Common)
CRC-8-ATMx8 + x2 + x + 1
CRC-16-IBMx16 + x15 + x2 + 1
CRC-16-CCITTx16 + x12 + x5 + 1
CRC-32-IEEE 802.3x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1