Channel Report

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

Channel Coding: Channel coding is a method of adding additional bits in the transmitted signal in order to detect (and in some

cases correct) the errors that occurred during transmission. Often external interference or noise changes the bits in the transmitted signal, which results in information loss. If the bits are altered, then the converted data in receiver side will not be the same as the input in transmitter side. To deal with this problem, channel coding is used.In channel coding, one or more additional bits are sent with the original signal. The receiver uses these bits to check consistency of the delivered message, and if possible to recover data determined to be erroneous. In some channel coding methods, like Hamming code, the receiver can both detect and correct the error from the channel code. Error detection and correction by Channel coding: Error Detection: Error detection is the detection of errors caused by noise during transmission from the transmitter to the receiver.Error detection schemes neither correct errors, nor identify where error occurred; they indicate only when an error has occurred. The purpose of error detection is not to prevent errors, but to prevent undetected errors. Redundancy Checking:Duplicating each data unit and adding extra bits for the purpose of detecting errors is called Redundancy checking. It is an effective but rather costly technic. Four basic Redundancy checking schemes are; 1. 2. 3. 4. Vertical Redundancy Checking (VRC) Longitudinal Redundancy Checking (LRC) Checksum method Cyclic Redundancy Checking (CRC)

Vertical Redundancy Checking (VRC): VRC is often called Character Parity. With VRC, each character has its own error detection bit called parity bit. For example, the character R has an ASCII hexadecimal value of 52; which is P1010010 in binary (P is the parity bit). Using odd parity, the transmitted code for R will be, 01010010. Longitudinal Redundancy Checking (LRC): LRC uses parity to determine if a transmission error has occurred within a message and is therefore sometimes called the Message parity. In LRC each bit position has a parity bit. The following example will further explain the implementation of VRC and LRC in transmission.

Problem: Determine the VRC and LRC for the following ASCII encoded message: THE DOG. Use odd parity for VRC and even parity for LRC. Solution: T H E (space) D O G 54 48 45 20 44 4F 49 LRC B0 0 0 1 0 0 1 1 1 B1 0 0 0 0 0 1 0 1 B2 1 0 1 0 1 1 0 0 B3 0 1 0 0 0 1 1 1 B4 1 0 0 0 0 0 0 1 B5 0 0 0 1 0 0 0 1 B6 1 1 1 0 1 1 1 0 VRC B7 0 1 0 0 1 0 0 0 From the above example, we can see that if any one of the bits changes due to interference during transmission, by VRC and LRC it can be detected. For example, if B6 of the character T changes from 1 to zero, the corresponding LRC and VRC bit will indicate the position where the error occurred. Character Hex ASCII

For more than one error:

From here, we can see that for multiple errors, VRC and LRC can detect the error but can t specify the position. Also it can t be determined whether there are one or many errors in the signal. So, it is not possible to correct errors in a signal using VRC and LRC.

Checksum: In Checksum method, each character has a numerical value assigned to it. The characters within the message are combined together to make an error-checking character or checksum, which can be as simple as the arithmetic sum of the numeric values assigned to the characters. The checksum is added at the end of the message. Cyclic Redundancy Check (CRC):CRC is the most reliable redundancy checking for error detection, as it can detect approximately 99.999% of all the transmission errors. It is a convolutional coding scheme. In USA, the most common CRC is CRC-16, where 16 bits are used for Block Checking Sequence (BCS). In CRC, the data stream is considered as a long continuous binary number. The BCS is separated from the message but transported within the same transmission. CRC is considered as a systematic code. Cyclic block codes are often written as (n,k) cyclic codes where, n = bit length of transmission k = bit length of message Therefore, the length of Block Check Code (BCC) is, BCC= n-k The BCC of a CRC-16 is the remainder of a binary division process. A data message polynomial M(x) is divided by a unique generator polynomial G(x). The generator polynomial G(x) must be a prime number. CRC-16 detects all single or double bit errors, all odd number of bit errors, all error bursts for 16 bits or less and 99.9% of error bursts greater than 16 bits long. The division is not like the standard arithmetic division. It s called modulo-2 division where the remainder is obtained by XOR operation. In receiver side, the data stream including the CRC code is again divided by the remainder. If no transmission error occurs, then the remainder will be zero. Mathematically, CRC can be expressed as, M(x)/G(x) = Q(x) + R(x) Where, M(x) = Message polynomial G(x) = Generator polynomial Q(x) = Quotient R(x) = Remainder The generator polynomial of CRC-16 is, G(x) = x^16 +x^15 + x^2 + x^0

CRC code generator for an (n,k) cyclic code

Problem: Determine the BCC code for the following data Message polynomial M(x) = (1 0 0 1 0 0)

Generator polynomial G(x) = x^3 + x^2 + 1 Solution: The highest exponential order of the G(x) indicates the length of BCC. So, there will be 3 bits in the BCC. The generator polynomial G(x) can also be written as (1 1 0 1). As the length of the BCC is 3, 3 additional 0s will be added with the M(x) for modulo-2 division.

From the above division, the remainder R(x) = (0 0 1). So, the transmitted data stream will be (1 0 0 1 0 0 0 0 1) In the receiver side,

The remainder is zero, which means there were no errors during transmission. Error Correction: Error-correcting codes include sufficient information with each message to enable the receiver to determine when an error has occurred and which bit is in error. There are two primary methods of error correction; 1. Retransmission 2. Forward Error Correction Retransmission: Retransmission, as the name implies, is when the receiver requests the transmitter to re-transmit the message, when the message is received in error. It is often called ARQ or Automatic Retransmission request. Though it is the most reliable error correction scheme, it is not the most efficient one, because retransmission takes time. Forward Error Correction (FEC): FEC is the error-correction scheme which both detects and corrects transmission errors when they are received without retransmission. When an error occurs, the redundant bits added in the message determine which bit is in error. Then the correction is performed by complementing that bit, making it 1 if it s 0 or vice-versa. The only limitation of FEC is that it can only correct a limited number of bits in error. So, its implementation islimited to one-bit, two-bit, or three bit errors. There are many FEC schemes like Reed-Solomon coding, BCH, Golay, Multidimensional parity, Hamming code etc. The Hamming code is the arguably the most popular error correction scheme.

Hamming code: Hamming code is an error correction technic usedfor correcting errors in a synchronous data stream. It can t correct multiple bit errors or burst errors, and it can t identify errors occurred in the Hamming bits themselves. Like all other FEC schemes, the Hamming code is added within the message, increasing the length of transmission. Hamming bits are inserted into the character at random location. The number of bits is determined from following expression: 2^n >= m+n+1 Where, m= number of bits in each data character n= number of Hamming Bits Then the Hamming bitsare calculated by performing XOR operations. At the receiver side, again by performing XOR operation with the Hamming bits; the erroneous bit is detected. Error detection and correction by Hamming code is further explained in the following example: Problem: For an 8- bit data string of 10110100; determine the number of Hamming bits required, arbitrarily place the Hamming bits into the data string, determine the logic condition for each Hamming bit, assume an arbitrary single bit transmission error, and prove that the Hamming code will successfully detect the error. Solution: 2^n >= m+n+1 Where, m= number of bits in each data character n= number of Hamming Bits Here, m = 8 For n=3 Because 8 < 12, For n = 4 2^4 = 16 >= 8+4+1 = 13 2^3 = 8 >= 8+3+1 = 12

Therefore, the number of Hamming bits will be 4, and a total of 12 (m+n=8+4) bits will make the data stream. 12 1 11 0 10 1 9 H 8 1 7 H 6 H 5 0 4 H 3 1 2 0 1 0

To determine the Hamming bits, the bit positions that contain 1 are expressed in 4 bit binary and XOR operation is performed on them.

Bit position 3 8 XOR 10 XOR 12 XOR

Binary number 0011 1000 1011 1010 0001 1100 1101

Hamming bits = 1 1 0 1 B9 = 1; 12 bit Hamming code is H 1 H 1 H 0 H 1 B7 = 1; B6 = 0; B4 = 1

Assume that during transmission, an error occurs in bit position 10, making it 0 from 1; 12 1 11 0 10 0 9H 1 8 1 7H 1 6H 0 5 0 4H 1 3 1 2 0 1 0

At the receiver, XOR operations are performed between the Hamming bits and the positions that contain 1. Bit position Hamming Bits 3 XOR 8 XOR 12 XOR Binary number 1101 0011 1110 1000 0110 1100 1010

Therefore the bit position (1010)2 = 10 contains an error.

You might also like