CDMA stands for Code Division Multiple Access. Multiple Access schemes are used to allow multiple senders to use one medium, such as one network cable/ring or a band of frequencies.

CDMA is also used as a name for IS-95 and IS-2000 cell phone networks.

TDMA (Time Division Multiple Access) works very simply by allowing each sender a time slot to send its information. A simple implementation would allow each sender in turn to send for one second and then wait n-1 seconds, where n is the total number of senders competing for access to the medium.

FDMA (Frequency Division Multiple Access) is how radio stations share the FM band; each station has its own frequency.

CDMA is different from these two, as all senders broadcast on the same frequency, all at the same time!

The trick is that in stead of sending a 0 or 1 each sender is assigned a special code, known as its spreading code or chip sequence. Unlike a previous write-up stated, these are not truly pseudo random, there is a method to this madness, known as the Walsh Matrix.

In a Walsh Matrix the dot product of each two rows is zero.
Using the example from the previous writeup;

channel code
-----------------------
1 (-1,-1,-1,-1)
2 (-1,+1,-1,+1)
3 (-1,-1,+1,+1)

Let's calculate the dot product of code 1 and 2

-1*-1 = +1
-1*+1 = -1
-1*-1 = +1
-1*+1 = -1
---+
0

The same holds for the dot products of every combination of different codes. But when you generate the dot product of a single code the answer is one!
Generating Walsh codes is left as an exercise for the user.

If sender 1 wants to transmit a 1, (-1,-1,-1,-1) is broadcast, is sender 1 wants to transmit a 0 (+1,+1,+1,+1) is broadcast. In the ether, these amplitude modulations simply add up.

If sender 1 now sends a 1 and everyone else sends a 0 the following happens in the ether:

1 (-1,-1,-1,-1)
2 (+1,-1,+1,-1)
3 (+1,+1,-1,-1)
-------------+
(+1,-1,-1,-3)

We know there are 3 stations sending, and we want to know what the first station is sending. So we calculate the dot product of the first station's code (-1,-1,-1,-1) and the received signales (+1,-1,-1,-3) the answer is.. 1 !

Had (+1,+1,+1,+1) been sent, the received value would have been (+3,+1,+1,-1); the dot product of that value with (-1,-1,-1,-1) is -1, which stands for a digital zero.

If station one didn't transmit at all, the received value would have been (+2,0,0,-2), with a dot product with (-1,-1,-1,-1) of zero (which signifies silence).

How to calculate the dot products of these simple matrices; simply multiply the nth element in one matrix with the nth element in the other matrix, sum these all up, and divide by the number of elements. e.g. (-1,-1,-1,-1) . (+3,+1,+1,-1) = ((-1*+3) + (-1*+1) + (-1*+1) + (-1*-1))/4 = -4/4 = -1.

The dot product is all you need to know to understand the basics of CDMA!!

The devil is in the details in implementing CDMA. To work succesfully, each station must start transmitting its code/chip sequence at the exact same time as all other broadcasting stations.

Furthermore, each sender's signal MUST be the same strength (i.e. +1 and -1 and not +0.5 and -0.5 whilst a neighbor transmits +0.8 and -0.8) at the RECEIVER. In cell phone networks this is done by having a tight control loop between the CDMA handsets and the base station, to calibrate the signal continually.

To join the network, a handset must also request a chip sequence from the network to use. In cellular mobile phone networks logging on to the network is often done by having a special set of 'bootstrapping' frequencies, where stations can announce their presence; these frequencies usually operate using some sort of slotted Aloha.

The number of simultanious users on a CDMA network is not infinite, just like the number of users on a TDMA network is not infinite, even though we can split up time in infinitely small pieces, there will always be a limiting factor. Still CDMA seems to be very succesful, and lies at the heart of the new UMTS standard that will be used in Europe for 3G networks. (The US 3G standard is of course slightly different from the European one).