Field Guide · algorithm

Also known as: CDMA, code-division multiple access

Code-division multiple access (CDMA) lets many transmitters occupy the same frequency band at the same time by giving each one a distinct spreading code; a receiver recovers one user by correlating against that user’s code and treating everyone else as noise.1 Where FDMA divides users by frequency and TDMA by time slot, CDMA divides them by code — all users overlap fully in time and frequency and are pulled apart by correlation.

A × cₐ B × c_b C × c_c shared band (Σ) ·cₐ → A ·c_b → B ·c_c → C
Every CDMA user shares one band; each is coded on transmit and pulled back out by correlating against its own code on receive.

How it works

CDMA is built on direct-sequence spread spectrum: each user’s low-rate data is multiplied by a high-rate code sequence before transmission. The codes are chosen so that a user’s own code correlates strongly with itself but weakly with every other user’s code. At the receiver, multiplying the composite signal by one code despreads that user’s data back to full amplitude while the other users — uncorrelated — stay spread out and contribute only a small amount of noise-like interference.

Two code roles appear together in practice:

  • Orthogonal codes (Walsh/Hadamard) give zero cross-correlation when users are perfectly time-aligned — ideal for the synchronous downlink from one base station.
  • PN codes (m-sequences and Gold codes) give low but non-zero cross-correlation for unsynchronized links (the uplink, or GPS satellites), where perfect orthogonality is impossible.

In practice

The defining engineering problem is the near-far problem: a handset close to the base station arrives far stronger than a distant one, and since separation relies on finite-quality code correlation, the strong signal’s residual interference can bury the weak one. CDMA systems solve this with fast, tight power control — commanding every handset to transmit just enough power to arrive at roughly equal strength (IS-95 adjusts power ~800 times per second). Capacity is soft: adding users gradually raises everyone’s noise floor rather than exhausting a fixed pool of slots, so the system degrades gracefully. A RAKE receiver exploits multipath by correlating several delayed copies of the code and combining them, turning echoes into diversity gain.

Relevance to SDR

CDMA defined a generation of cellular: IS-95 / cdmaOne and CDMA2000, and the wideband CDMA air interface of UMTS/3G. GPS is a CDMA system too — every satellite shares 1575.42 MHz and is distinguished only by its Gold code. Modern LTE and 5G NR moved to OFDMA, but CDMA remains foundational and still lives inside GNSS receivers.

GopherTrunk’s target land-mobile trunking systems are FDMA and TDMA, not CDMA, so the scanner does not implement a despreading/correlating receiver. CDMA is documented here to place the code-division idea alongside the time- and frequency-division schemes the scanner actually follows, and as the direct parent of the spreading-code families used in GNSS.

Sources

  1. Code-division multiple access — Wikipedia, for the code-separation principle, near-far problem, and power control. 

See also