140 likes | 156 Views
Learn about using redundancy to ensure reliable delivery of digital data over unreliable communication channels. Understand Hamming Distance for error detection, parity checks for error correction, and CRC for error-detecting codes in practical sessions.
E N D
Computer Architecture and Assembly Language Practical Session 10
Error detection and correction • data transmission via communication channels channel noise errors may happen • we need techniques that enable reliable delivery of digital data over unreliable communication channels • general idea: add some redundancy (extra data) to a message • this extra data is used • to check consistency of the delivered message • to recover data determined to be corrupted
Hamming Distance Hamming distance (d) between two code words of equal length is anamount of 1-bit changes required to reach from one word to the other (number of 1’s in the XOR between the words) d(000, 011) = 2 000 011 10101 11110 d(10101, 11110) = 3 Minimum Hamming distance is thesmallest Hamming distance between all possible pairs in a set of words. Example: Given the following coding scheme, let’s find the minimum Hamming distance. 00000 01011 10101 11110 d(00000,01011)=3 d(00000,10101)=3 d(00000,11110)=4 d(01011,10101)=4 d(01011,11110)=3 d(10101,11110)=3 d=3
Minimum Hamming Distance d can detectd-1 errors Example: 00000 01011 10101 11110 3 errors can take us from one legal code word to another can detect at least 3-1=2 errors d=3 01011 00000 01000 01010 01011 Minimum Hamming Distance d can fix d-1 erasures 3 erasures can take us from one legal code word to another can detect at least 3-1=2 erasures 01011 00000 0_000 0_0_0 0_0__ Minimum Hamming Distance d can fix errors 2 errors can take us from two different legal code words to the same illegal word 00000 01000 01010 11110 01110 can fix at least floor((3-1)/2)=1 error
Given fourdata words, can we use 5-bit code words for fixing1 error? Answer: yes. We need a hamming distance d=3 to fix 1 error. 00000111001011101011 d(00000,11100)=3 d(11100, 10111)=3 d(00000,10111)=4 d(11100, 01011)=4 d(00000,01011)=3 d(10111, 01011)=3 We can create code words with independent graphs of a single error code words.
Parity Check • Given a data word, a code word is created by adding a parity bit to the end of the data word • d=2 (why?) • Can detect 1 error and fix 1 erasure 0001 1 send: 00_1 1 0011 1 receive: erased bit is a parity of other bits: parity (0011) = 1 1 error occurs
if p0 is wrong, we getp2 p1 p0 =√√x= 001b = 1p0 should be at index 1 if p1 is wrong, we getp1 p1 p0 =√x√= 010b = 2p1 should be at index 2 if p2 is wrong, we getp2 p1 p0 =x√√= 100b = 4p2 should be at index 4 if x0 is wrong, we getp2 p1 p0 =√xx= 011b = 3x0 should be at index 3 … if x3 is wrong, we getp2 p1 p0 =xxx= 111b = 7x3 should be at index 7 Hamming Code (4,3) We assume that there may be at most one error. 7 6 5 4 3 2 1 indexes: code word: 4 data bits: x0 x1 x2 x3 3 parity bits: p0 p1 p2 We calculate: why we interleave bits of data and parity in this way ? Example: We got 0100111 Sender sent 0000111 • p0 = 1 = x3 ⊕x1 ⊕x0 = 0 ⊕ 0 ⊕ 1 = 1 √ • p1 = 1 = x3 ⊕x2 ⊕x0 = 0 ⊕ 1 ⊕ 1 = 0 x • p2 = 0 = x3 ⊕x2 ⊕x1 = 0 ⊕ 1 ⊕ 0 = 1 x p2 p1 p0 =xx√ = 110b = 6 The error bit is at index 6 (from right to left) in the code word error bit isx2
Cyclic Redundancy Check • CRC is an error-detecting code • Given a data, its non trivial (cryptographic) challenge to find another data with the same CRC code. CRC can protect data (even from deliberate damage)
Sending – Calculation Steps • Generatoris chosen • sequence of bits, of which the first and last are 1 • CRC check sequence is computed by long-division of message by generator • check sequence has 1 fewer bits than generator • Check sequence is appendedto the original message
Sending – Calculation Steps Compute 8-bit CRC a message ‘W’ (0x57). • Select Generator: CRC-8-ATM • x8 + x2 + x + 1 = 100000111 • ‘W’ is 01010111= x6 + x4 + x2 + x + 1 • Extend ‘W’ with 8 bits: 0101011100000000 • Perform XOR of the word get in step (3) by generator • CRC code is the remainder • Append CRC code to ‘W’
Generating CRC Codelong-division of message by generator 0101011100000000 100000111 Each time apply XOR on the extended message, when place a generator from the left-most ‘1’ bit of the extended message xor 100000111 001011011000000 xor 100000111 0011010110000 xor 100000111 01010101100 xor 100000111 0010100010 • Stop when CRC code has 1 fewer bits than generator CRC Code: 10100010
Receiving – Calculation Steps • Append CRC code to the message: 0101011110100010 • Perform long division by the generator • If the reminder is not 0: an error occurred 0101011110100010 100000111 xor 100000111 There is no errors in received message. result: 00000000