Lecture 4 - Error Detection - Forward Error Correction (Hamming Code) - 1 1- Error Detection 1.1 Parity check 1.2 Two dimensional parity check 1.3 Checksum 1.4 Cyclic redundancy check 2 1.1 Parity check - Appends a parity bit to the end of the data. 10110010 0 Even 10110010 1 Odd - It can detect all single bit errors. -It can also detect burst errors, if the number of bits in error is odd. 3 1.2 Two Dimensional Parity Check -Parity check bits are calculated for each - equivalent to a simple parity check bit. -Parity -Both row, which is check bits are also calculated for all columns. are sent along with the data. 4 1.2 Two Dimensional Parity Check 5 1.3 Checksum - At the sender’s end, the data is divided into segments. -The segments are added using ones complement arithmetic to get the sum. -The sum is complemented to get the checksum which is sent along with the data segments. -At the receiver, the received segments are added using ones complement arithmetic to get the sum. -If the complement of the sum is zero, the received data is accepted. 6 1.3 Checksum Ex: Find the checksum at the sender and receiver for the following sequence: 10110011 10101011 01011010 11010101 10110011 10101011 __________ 01011110 1 _______________ 01011111 01011010 _______________ 10111001 11010101 ______________ 10001110 1 _____________ sum: 10001111 Checksum: 01110000 10110011 10101011 __________ 01011110 1 _______________ 01011111 01011010 _______________ 10111001 11010101 ______________ 10001110 1 _____________ 10001111 01110000 ________________ Sum: 11111111 Checksum: 00000000 7 1.4 Cyclic Redundancy Check -The sender generates a bit sequence known as a frame check sequence (FCS), so that the resulting frame consisting of the original data followed by this FCS. - FCS is the remainder which obtained from dividing the original data M(X) by generator polynomial G(x). - The receiver divides the incoming frame by G(X), if there is no remainder the received data has no errors. 8 1.4 Cyclic Redundancy Check EX. M ( X ) X 3 X , G( X ) X 3 X 1 G( X ) X 3 X 1 1* X 3 0 * X 2 1* X 1 1* X 0 G( X ) 1011 ( X 3 X ) * X 3 X 6 X 4 1010000 1001 1001 1011 1010000 1011 ________ 0010 0000 _________ 0100 0000 __________ 1000 1011 __________ FCS 0 1 1 1011 1010011 1011 ________ 0010 0000 _________ 0101 0000 __________ 1011 1011 __________ 000 9 1.4 Cyclic Redundancy Check EX . Use Linear FeedbackShift Re gister to implementCRC process If M ( X ) X 3 X , G( X ) X 3 X 1 ( X 3 X 0 ) * X 3 X 6 X 3 1001000 C3 C1 C0 1010000 + + Initial 1 0 1 000 001 010 101 0 001 0 0 0 010 100 011 FCS 10 2- Forward Error Correction -Forward Error correction (FEC) which based on the receiver only is used mainly when retransmissions cannot be requested, e.g., simplex links. -Backward error correction which based on retransmission of the frame when an error is detected is commonly used. Hamming Code: • It can correct any single bit error • Bits in power of 2 positions (1,2,4,8,) are check bits, the rest are m data bits • Check bit forces the parity of some collection of bit “1” to be even • To see which check bits the data bit in position k contributes to, rewrite k as a sum of powers of 2. 11=1+2+8, 29=1+4+8+16 11 Hamming Code EX: If a 12-bit hamming code 100110111000 arrives at receiver, is there any bit error? If so, which bit is wrong? 1 2 3=2+1 4 5=4+1 6=4+2 7=4+2+1 8 9=8+1 10=8+2 11=8+2+1 12=8+4 10 0 11 0 1 11 0 0 0 Check Checked Data bits bit Bits Sequence 1 3 5 7 9 11 101110 2 3 6 7 10 11 0 0 0 1 0 0 (No) 4 5 6 7 12 11010 8 9 10 11 12 11000 (Yes) (No) (Yes) Hence bit 6 = 2+4 is wrong, so correct hamming code should be 100111111000 12