biography research projects publications courses students home

data compression lab:

joint source and
channel coding


related papers


An end-to-end communication system is composed of a system encoder, which maps the source symbols into channel inputs, and a system decoder, which maps the channel outputs into noisy reproductions of the original source symbols. The system encoder can be further broken down into a source encoder, which maps the source symbols into an intermediate alphabet, typically a set of binary strings, and a channel encoder, which maps the binary strings into coded bits or waveforms for transmission over the channel. Similarly, the system decoder can be broken down into a channel decoder and a source decoder corresponding to the respective channel and source encoders. Any system encoder-decoder pair can be represented in this manner, although the breakdown is not unique.

Shannon's classical separation result states that we can optimize the end-to-end system design by separately optimizing the source encoder-decoder pair and the channel encoder-decoder pair. However, this result holds only in the limit of infinite source code dimension and infinite channel code block length. Shannon theory does not provide a design algorithm for good channel codes with finite block length. In addition, Shannon theory does not address the design of good source codes when the probability of channel error is nonzero, which is inevitable for finite-length channel codes. Thus, for practical systems, a joint source and channel code design may reduce distortion, as well as complexity and delay.

Current work in joint source and channel code design combines techniques for optimizing source codes to match channel noise characteristics with techniques for optimizing channel codes to match source code characteristics into a single joint design aimed at minimizing the end-to-end distortion experienced in the communication system as a whole. The most important factor in that joint design seems to be the bit allocation between the source coding bits (used to describe the original data string) and the channel coding bits (used to protect the source coding bits from channel errors). The resulting codes may be employed on a wide range of channels (e.g., AWGN channels and Rayleigh fading channels with and without receiver side information) with significant performance benefits.