Generically, code division multiple access (CDMA) is any use of any form of spread spectrum by multiple transmitters to send to the same receiver on the same frequency channel at the same time without harmful interference. Other widely used multiple access techniques are Time Division Multiple Access (TDMA) and Frequency Division Multiple Access (FDMA). In these three schemes, receivers discriminate among various signals by the use of different codes, time slots and frequency channels, respectively.
The term CDMA is also widely used to refer to a family of specific implementations of CDMA pioneered by Qualcomm for use in digital cellular telephony. These include IS-95 and IS-2000. The two different uses of this term can be confusing. CDMA (the technique) is used in the UMTS standard. However, CDMA (the standard) and UMTS have been competing for adoption in many markets.
Another important application of CDMA -- predating and entirely distinct from CDMA cellular -- is the Global Positioning System, GPS.
All forms of CDMA use spread spectrum process gain to allow receivers to partially discriminate against unwanted signals. Signals with the desired spreading code and timing are received, while signals with different spreading codes (or the same spreading code but a different timing offset) appear as wideband noise reduced by the process gain.
The way this works is that each station is assigned a spreading code or chip sequence. Such chip sequences are expressed as a sequence of -1 and +1 values. The dot product of each chip sequence with itself is 1 (and the dot product with its complement is -1), whereas the dot product of two different chip sequences is 0.
E.g. if C1 = (-1,-1,-1,-1) and C2 = (+1,-1,+1,-1)
C1 . C1 = (-1,-1,-1,-1) . (-1,-1,-1,-1) = +1 C1 . -C1 = (-1,-1,-1,-1) . (+1,+1,+1,+1) = -1 C1 . C2 = (-1,-1,-1,-1) . (+1,-1,+1,-1) = 0 C1 . -C2 = (-1,-1,-1,-1) . (-1,+1,-1,+1) = 0This property is called orthogonality. These sequences are Walsh codes and can be derived from a binary Walsh matrix.
A station sends out its chip sequence to send a 1, and its inverse to send a 0 (or +1 and a -1; zero being silence).
When multiple chip codes are sent by multiple stations, the signals add up in the air. For example the chip sequences (-1,-1,-1,-1) and (+1,-1,+1,-1) add up to (0,-2,0,-2). The receiver merely needs to calculate the dot product of the station it's interested in with the signal in the air. E.g. (-1,-1,-1,-1) . (0,-2,0,-2) = +1. Had -1 been sent the signal in the air would have been (+2,0,+2,0) and the dot product would have been (-1,-1,-1,-1) . (+2,0,+2,0) = -1.
A TDMA or FDMA receiver can in theory completely reject arbitrarily strong signals on other time slots or frequency channels. This is not true for CDMA; rejection of unwanted signals is only partial. If any or all of the unwanted signals are much stronger than the desired signal, they will overwhelm it. This leads to a general requirement in any CDMA system to approximately match the various signal power levels as seen at the receiver. This is inherent in the GPS in that all of the satellites are roughly equidistant from the users on or near the earth's surface. In CDMA cellular, the base station uses a fast closed-loop power control scheme to tightly control each mobile's transmit power.
The need for power control can be deduced neatly from the above calculations; if some stations would broadcast +0.8 and -0.8 and others +1.2 and -1.2, this would wreak havoc with the calculations.
Forward error correction (FEC) coding is also vital in any CDMA scheme to reduce the required signal-to-interference ratio and thereby maximize channel capacity.
CDMA's main advantage over TDMA and FDMA is that the number of available CDMA codes is essentially infinite. This makes CDMA ideally suited to large numbers of transmitters each generating a relatively small amount of traffic at irregular intervals, as it avoids the overhead of continually allocating and deallocating a limited number of orthogonal time slots or frequency channels to individual transmitters. CDMA transmitters simply send when they have something to say, and go off the air when they don't.