Why is CDMA not enough for wireless communication? I have a question about CDMA, FDMA and TDMA.

I don't understand why we suffer from limited capacity when we have CDMA. 

I can understand the limitation in FDMA and TDMA, as time and frequency are limited. However, we can generate as many codes as we want. When the true receiver receives the signal and multiplies by the code, one should receive the original signal even if there is a lot of interference.

So where am I wrong? Why do we suffer from limited capacity when using CDMA?



Thank, I think I made mistake by saying capacity. I specifically meant high date rate.
However, I know multiple access mechanisms.

What I asked is a different question. 

Let's say I am using TDMA for 10 users. Each user has to wait 9 users to transmit. If we had 100 users, then each user has to wait 99 users. Very high level of starvation. If you want to decrease starvation, you have to decrease time slot which means decreasing date rate.

Let's say I am using FDMA for 10 users with 100 MHz bandwidth, so each user will have 10 MHz bandwidth so equivalent capacity from Shannon law. If we had 100 users which means 1 MHz bandwidth and much lower date rate equivalently lower capacity. If you want higher date rate, you need to buy more bandwidth.

Let's say I am using CDMA for 10 users, I need 10 orthogonal codes. For 100 users, 100 orthogonal codes.

So, the case is frequency and time are exist in the nature and they are limited. 

However, we can generate millions of orthogonal code for millions​ of user as it is human-invented thing. 

Why do we live problem multiple access problem​s while we have CDMA?

In other words, is there a mathematical or practical limit of usable number of codes ? 

If the number of the users in the network exceeds a threshold, Do the codes become to similar which undermines orthogonality?
You're misunderstanding what CDMA, TDMA and FDMA do:

CDMA doesn't increase the channel capacity in any way. It's a MA, MA = Multiple Access mechanism.

In other words, it's just a way of dividing the spectrum among multiple users. No matter what you do, you can't get more data through a channel than the physics and math allows – and Shannon's channel capacity gives a pretty clear upper boundary for that.

All the mechanisms you quote hence only divide the available channel across some measure. 

For TDMA and FDMA, as you notice, this is very intuitively understandable.

But to be honest, CDMA is not that different. Instead of sending a single symbol in a single symbol time slot, you have to multiply it onto a longer code sequence.

The maximum number of simultaneous users of CDMA is simply the number $N$ of orthogonal CDMA sequences.

$N$ orthogonal vectors (i.e. sequences) form a base to an $N$-dimensional vector space (which is the signal space). Vectors from an $N$-dimensional space (which is what you're going to transmit to transport one symbol) have inherently $N$ elements.

So, to make (up to) $N$ people talk at once, you need to "blow up" everyone's transmission's symbols (which are $1$-dimensional, each) to $N$-dimensional vectors, increasing the time it takes to send one symbol by a factor of $N$.

That's the same efficiency as using TDMA to split time into $N$ slots (everyone sends $1$ symbol every $N$ slots), or dividing the bandwidth into $N$ channels and using FDMA (everyone can only use $\frac1N$ of the available bandwidth, reducing the individual symbol rate by $N$).