Transmission of data through a noisy medium inevitably introduces errors through interference by changing one or more bits. There are two types of errors, in single bit errors, a 0 may be turned into a 1 or vice versa. In real world conditions, most interference introduce burst errors where two or more bits are switched from a 0 to a 1 and vice versa. Types of Errors

1. Single-Bit Error – a single bit is switched from a 0 to a 1 or a 1 to a 0 2. Burst Error – one or more bits are flipped.

Single Bit Error

0| 0| 0| 0| 0| 0| 1| 0|

0| 0| 0| 0| 1| 0| 1| 0|

Burst Error

| | | Length of burstError (8 bits)| | | | | |

0| 1| 0| 0| 0| 1| 0| 0| 0| 1| 0| 0| 0| 0| 1| 1|

0| 1| 0| 1| 1| 1| 0| 1| 0| 1| 1| 0| 0| 0| 1| 1|

The number of bits affected by noise or interference depends on the data rate and the duration of the noise. Hamming Distance – The number of positions at which two strings are different, from the binary string depicted above shows a distance of four (4). To detect or correct errors, extra (redundant) bits need to be sent. Error detection – we only need to know if an error in the data has occured, usually by employing a checksum or hash algorithm. Error correction – we need not just the number of bits corrupted but also the location of the corrupted bits and reconstructing the original, error-free data. Redundancy is achieved through various coding schemes. The sender adds redundant bits through a process that creates a relationship between the redundant bits and the actual bits. The two sets of bits are then checked against each other to detect or correct any errors. Error detection can be realized by using various methods, some of which are listed below: 1. Repetition Codes

2. Parity Bits

3. Checksums

4. Cyclic Redundancy Checks

Error correction algorithms can also be used to detect errors. Two methods of Error Correction:

1. Forward Error Correction – the process in which the receiver tries to guess the message by using redundant bits. 2. Automatic Repeat Request (ARQ) – also known as Correction by Retransmission, is a technique in which the receiver detects the occurrence of an error and asks the sender to resend the message. Repetition Codes – are the simplest error detecting codes, they are generally implemented by sending the same data m several times resulting in the corresponding stream c. For example, take the following four bits and using a (3,1) or (repeat[3], data[1]) repetition code: 1| 0| 0| 1|

Will result in the data being sent as:

1| 1| 1| 0| 0| 0| 0| 0| 0| 1| 1| 1|

Decoding is done by using the Majority Logic Decoding whereby the correct bit is guessed if it comprises the majority of the error sequence. Repetition Decoding is most commonly used in Forward Error Correction or FEC. Parity Codes – parity codes are another simple error detecting code to implement, a parity bit is added in a sequence of data bits which is calculated by counting the number of 1s in the data bits and and setting the parity bit to 1 if the 1s in the data stream add up to an odd number (if you are using even parity). Below is an example of a (7,1) or (data[7],parity[1]) parity bit. 1| 2| 3| 4| 5| 6| 7| 8|

1| 1| 0| 1| 0| 0| 0| P|

7 Information Digits| 1 Parity Bit|

P = 1 (Even Parity)

P = 0 (Odd Parity)

R=kn=78

For Even Parity:

Bit 1| Bit 2| Bit 3| Bit 4| Bit 5| Bit 6| Bit 7| Bit 8| 1| 1| 0| 1| 0| 0| 0| 1|

7 Information Digits| 1 Parity Bit|

Bit 1| Bit 2| Bit 3| Bit 4| Bit 5| Bit 6| Bit 7| Bit 8| 1| 1| 0| 1| 0| 0| 0| 0|

7 Information Digits| 1 Parity Bit|

Checksums – also known as a hash sum is a fixed-size datum computed from an arbitrary block of digital data for the purpose of detecting errors. The integrity of the data can be checked at any later time by recomputing the checksum and...