So far, we’ve learned about the deviation of practical channels from the ideal channel model, and how a mathematical model can specify those imperfections. Obviously, imperfections do not contribute to the performance of the communication system at hand, but a question should arise, how exactly they will limit our implementation’s performance.
C.E Shannon has showed that given a mathematical model of the channel, one can find the channel capacity, denoted by C, which is the maximal code rate that can be used on the channel. To be more exact, if R<C, there exists a series of channel codes with this rate, that their average probability of error goes to zero as the block length of the codes goes to infinity. And for every code with R>C there is an error floor for the average probability of error, that is to say: there is a lower bound on the probability of error when using this code. In other words, the capacity sets an upper bound on the rates of reliable codes in a specific channel. We remind the reader that this term is one of the important aspects of performance in communication systems.
The computation of the capacity is dependant on the statistical properties of the channel, and is outside the scope of this overview (we refer the interested reader to
[4] for a thorough discussion of this interesting and elegant topic). Here, we only cite the following result:
Given an additive white Gaussian noise channel (AWGNC), that has the following parameters:
W – is the bandwidth of the channel (in Hz).
P – is the average power of the source (in Watts).
The power spectrum density of the noise is uniform in all the frequencies, and has a value of

.
So,

.
Then the capacity of the channel is:

Observe the following intuitive observations:
- The capacity increases as the SNR increases (as the power of the signal increases and the power of the noise decreases). Thus given the same transmission power, in a noisier channel, one will not be able to achieve the same rates as on a clammier channel.
- The capacity increase as the bandwidth of the channel increases.
Finding a code (i.e. a mapping) that will achieve capacity as block length goes to infinity is not a hard task
5 (you can even do that in a random way
[4]). However, as we mentioned earlier, one has to take into consideration the algorithmic delay that is the price tag on channel coding implementation. So one has to find good codes (in a sense of probability error) that will also enable usage of an efficient decoding system. This is usually done, by using codes with a well-defined mathematical structure. Modern coding techniques gets very close to the capacity limits, we refer the interested reader to
[5] as an excellent source about this topic.