CDMA (Code Division Multiple Access) (descritto nello standard internazionale IS-95) è una tecnica di multiplexing che permette a ogni stazione di trasmettere per tutto il tempo attraverso l’intero spettro di frequenza.
Questa tecnica parte dal presupposto che segnali sovrapposti, che entrano in collisione, non si alterino completamente ma si sommino.
Per capire il meccanismo si può pensare a varie persone in una sala che parlano tra loro.
Con TDM può parlare una sola persona alla volta, con FDM si hanno coppie separate di persone distanti tra loro, con CDMA si può pensare che ogni coppia di persone parli in un linguaggio diverso, considerando rumore tutte le altre voci.
In pratica CDMA estrae il segnale scartando il rumore; separa trasmissioni multiple simultanee usando la teoria della codifica.
In CDMA ogni tempo di bit è suddiviso in m intervalli brevi (in genere 64 o 128) chiamati chip.
A ogni stazione viene assegnato un codice univoco di m chip chiamato sequenza di chip.
Per trasmettere un bit 1 una stazione invia la sequenza di chip; per trasmettere uno 0 invia il complemento a 1 della sequenza di chip.
Tutte le sequenze sono a due a due ortogonali cioè il prodotto di qualunque coppia è 0:
S*T = 1/m Ʃi=1…mSiTi = 0
Anche S * (complemento a 1 di T) = 0
Invece S*S = 1
Quando due stazioni trasmettono contemporaneamente il loro segnale si somma.
Per recuperare il flusso di bit trasmesso da una stazione, il ricevitore deve calcolare il prodotto della sequenza ricevuta per la sequenza di chip della stazione mittente (che deve conoscere).
Trasmettitore e ricevitore devono essere sincronizzati; il trasmettitore all’inizio trasmette una sequenza di chip predefinita per permettere la sincronizzazione; tutte le altre trasmissioni non sincronizzate sono viste come rumore di fondo.
Esempio con due sequenze di 8 chip
Siano date le seguenti sequenze di chip per due stazioni A e B:
A: 00011011
B: 00101110
rappresentando 0 con -1 e 1 con +1, si ottengono le sequenze di chip racchiuse tra parentesi:
A: 00011011 (-1 -1 -1 +1 +1 -1 +1 +1)
B: 00101110 (-1 -1 +1 -1 +1 +1 +1 -1)
Se A invia 1 (-1 -1 -1 +1 +1 -1 +1 +1)
e B invia 0 (+1 +1 -1 +1 -1 -1 -1 +1)
si ottiene il segnale ( 0 0 -2 +2 0 -2 0 +2)
Si può ricavare il bit inviato da A moltiplicando il segnale (0 0 -2 +2 0 -2 0 +2) per la sequenza di chip di A (-1 -1 -1 +1 +1 -1 +1 +1); si ottiene:
(0 0 +2 +2 0 +2 0 +2)/8 = 1
Si può ottenere 1, -1 (cioè 0), oppure 0 (cioè la stazione non ha trasmesso).