25-08-2012, 03:57 PM
Channel coding
Channel coding.docx (Size: 16.87 KB / Downloads: 30)
Channel coding refers to the class of signal transformations designed to improve communications performance by enabling the transmitted signals to be better withstand the effects of various channel impairments, such as noise, interference, and fading.
Coding allows bit errors introduced by transmission of a modulated signal through a wireless channel to be either detected or corrected by a decoder in the receiver. Coding can be considered as the embedding of signal constellation points in a higher dimensional signaling space than is needed for communications. By going to a higher dimensional space, the distance between points can be increased, which provides for better error correction and detection.
In this paper we describe codes designed for AWGN channels and for fading channels. Codes designed for AWGN channels do not typically work well on fading channels since they cannot correct for long error bursts that occur in deep fading. Codes for fading channels are mainly based on using an AWGN channel code combined with interleaving, but the criterion for the code design changes to provide fading diversity. Other coding techniques to combat performance degradation due to fading include unequal error protection codes and joint source and channel coding.
The main reason to apply error correction coding in a wireless system is to reduce the probability of bit or block error. The bit error probability Pb for a coded system is the probability that a bit is decoded in error. The block error probability Pbl, also called the packet error rate, is the probability that one or bits in a block of coded bits is decoded in error. Block error probability is useful for packet data systems where bits are encoded and transmitted in blocks. The amount of error reduction provided by a given code is typically characterized by its coding gain in AWGN and its diversity gain in fading.
Coding gain in AWGN is defined as the amount that the SNR can be reduced under the coding technique for a given Pb or Pbl. The coding gain in AWGN is generally a function of the minimum Euclidean distance of the code, which equals the minimum distance in signal space between codeword or error events. Thus, codes designed for AWGN channels maximize their Euclidean distance for good performance.
Linear block coding
Linear block codes are conceptually simple codes that are basically an extension of single-bit parity check codes for error detection. A single-bit parity check code is one of the most common forms of detecting transmission errors. This code uses one extra bit in a block of n data bits to indicate whether the number of 1s in a block is odd or even. Thus, if a single error occurs, either the parity bit is corrupted or the number of detected 1s in the information bit sequence will be different from the number used to compute the parity bit: in either case the parity bit will not correspond to the number of detected 1s in the information bit sequence, so the single error is detected. Linear block codes extend this notion by using a larger number of parity bits to either detect more than one error or correct for one or more errors.
A binary block code generates a block of n coded bits from k information bits. We call this an (n, k) binary block code. The coded bits are also called codeword symbols. The n codeword symbols can take on 2n possible values corresponding to all possible combinations of the n binary bits. We select 2k code words from these 2n possibilities to form the code, such that each k bit information block is uniquely mapped to one of these 2k code words. The rate of the code is Rc = k/n information bits per codeword symbol. If we assume that codeword symbols are transmitted across the channel at a rate of Rs symbols/second.
convolutional codes
A convolutional code generates coded symbols by passing the information bits through a linear finite-state shift register. The shift register consists of K stages with k bits per stage. There are n binary addition operators with inputs taken from all K stages: these operators produce a codeword of length n for each k bit input sequence. Specifically, the binary input data is shifted into each stage of the shift register k bits at a time, and each of these shifts produces a coded sequence of length n. The rate of the code is Rc = k/n. The number of shift register stages K is called the constraint length of the code. A length-n codeword depends on kK input bits, in contrast to a block code which only depends on k input bits. Convolutional codes are said to have memory since the current codeword depends on more input bits (kK) than the number input to the encoder to generate it (k).