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.

Also it can t be determined whether there are one or many errors in the signal. by VRC and LRC it can be detected. Character Hex ASCII For more than one error: From here. 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.Problem: Determine the VRC and LRC for the following ASCII encoded message: THE DOG. it is not possible to correct errors in a signal using VRC and LRC. the corresponding LRC and VRC bit will indicate the position where the error occurred. . So. if B6 of the character T changes from 1 to zero. we can see that for multiple errors. Use odd parity for VRC and even parity for LRC. VRC and LRC can detect the error but can t specify the position. For example. we can see that if any one of the bits changes due to interference during transmission.

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

CRC code generator for an (n. there will be 3 bits in the BCC. 3 additional 0s will be added with the M(x) for modulo-2 division. So. The generator polynomial G(x) can also be written as (1 1 0 1). . As the length of the BCC is 3.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.

or three bit errors. BCH. It is often called ARQ or Automatic Retransmission request. making it 1 if it s 0 or vice-versa. which means there were no errors during transmission. the transmitted data stream will be (1 0 0 1 0 0 0 0 1) In the receiver side. because retransmission takes time. When an error occurs. when the message is received in error. Hamming code etc. So. The only limitation of FEC is that it can only correct a limited number of bits in error. is when the receiver requests the transmitter to re-transmit the message. 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. its implementation islimited to one-bit. it is not the most efficient one. Multidimensional parity. There are two primary methods of error correction. as the name implies.From the above division. the redundant bits added in the message determine which bit is in error. two-bit. . 1. Though it is the most reliable error correction scheme. So. Then the correction is performed by complementing that bit. The remainder is zero. the remainder R(x) = (0 0 1). The Hamming code is the arguably the most popular error correction scheme. Forward Error Correction (FEC): FEC is the error-correction scheme which both detects and corrects transmission errors when they are received without retransmission. There are many FEC schemes like Reed-Solomon coding. Forward Error Correction Retransmission: Retransmission. Retransmission 2. Golay.

determine the logic condition for each Hamming bit. again by performing XOR operation with the Hamming bits. arbitrarily place the Hamming bits into the data string. m= number of bits in each data character n= number of Hamming Bits Here. the Hamming code is added within the message.bit data string of 10110100. For n = 4 2^4 = 16 >= 8+4+1 = 13 2^3 = 8 >= 8+3+1 = 12 Therefore. increasing the length of transmission. determine the number of Hamming bits required. the erroneous bit is detected. the bit positions that contain 1 are expressed in 4 bit binary and XOR operation is performed on them.Hamming code: Hamming code is an error correction technic usedfor correcting errors in a synchronous 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 number of Hamming bits will be 4. and a total of 12 (m+n=8+4) bits will make the data stream. It can t correct multiple bit errors or burst errors. Solution: 2^n >= m+n+1 Where. m = 8 For n=3 Because 8 < 12. Error detection and correction by Hamming code is further explained in the following example: Problem: For an 8. and it can t identify errors occurred in the Hamming bits themselves. m= number of bits in each data character n= number of Hamming Bits Then the Hamming bitsare calculated by performing XOR operations. Like all other FEC schemes. 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. assume an arbitrary single bit transmission error. and prove that the Hamming code will successfully detect the error. . At the receiver side.

XOR operations are performed between the Hamming bits and the positions that contain 1.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. 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. B4 = 1 1 0 1 1 0 1 0 0 Assume that during transmission. B6 = 0. 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. making it 0 from 1. an error occurs in bit position 10. .