21.6 Trasmissione multiutente o MU - MIMO
Fino ad ora abbiamo discusso di collegamenti
mimo punto-punto, ma in generale esiste una forte asimmetria nel numero antenne presenti ai due lati di un collegamento
radiomobile, che sono molte di più presso una
stazione radio base o
bs (il cui numero, decine o anche centinaia, indichiamo ora come
nBS) rispetto a quelle (che ora chiamiamo
nk) di cui è equipaggiato il
k − esimo
User Equipment uek (o terminale, o dispositivo) ad essa
associato - che in gran parte dei casi, dispone di una sola antenna.
Come poter sfruttare in questo caso l’elevata velocità di trasmissione della
bs, resa possibile dalla multiplazione spaziale di cui è capace grazie alle sue
nBS antenne? Molto semplice: dedicando ad ogni diverso terminale mobile
uek una (o più) differente
antenna di trasmissione della
bs, realizzando una sorta di
mimo distribuito, anche se il passaggio non è così
indolore, come andiamo ad approfondire dopo aver distinto tra le due direzioni di trasmissione, indicando come
uplink il verso tra i terminali e la
bs, e come
downlink la direzione opposta, il cui insieme dei singoli collegamenti è indicato anche come
canale broadcast.
In questa direzione le cose non sono molto diverse da quanto già approfondito. La
bs riceve un segnale
rBS = ⎲⎳Uk = 1 Huksk + n = Hus + n
in cui
Huk è la matrice (
N × nk) di canale
mimo di
uplink tra
uek e
bs,
sk è il vettore (
nk × 1) dei simboli inviati da
uek,
Hu = [Hu1 Hu2 ⋯ HuU] è la matrice (
nBS × ∑Uk = 1nk) di uplink da
tutti gli
U terminali
uek, ed
s = [sT1 sT2 ⋯ sTU]T è il vettore dei simboli complessivamente trasmessi.
Ogni
uek con più di una antenna può trasmettere più flussi dati ricorrendo alla multiplazione spaziale, oppure se
nk = 1 il singolo collegamento è di tipo
simo. In entrambi i casi la
bs deve
separare tra loro i contributi ricevuti dagli
U utenti adottando le tecniche illustrate al §
21.5 e basate sulla conoscenza della
Hu di uplink, che la
bs può stimare nei confronti degli
uek attivi. Fortunatamente la dispersione spaziale degli utenti fa si che
Hu sia ben condizionata, senza dunque porre problemi per la sua inversione.
In questa direzione il generico dispositivo
uek con
nk antenne riceve un vettore
rk di dimensione
nk × 1 pari a
in cui
Hdk (
nk × nBS) individua il canale
mimo di broadcast tra
tutte le antenne di
bs e le
nk di
uek, e
s (
nBS × 1) è il vettore di simboli destinati a
tutti gli
U utenti. Purtroppo essendo
nk < nBS, il dispositivo mobile non può adottare le soluzioni previste al §
21.5 per cancellare i termini di interferenza, più evidenti particolarizzando la
(21.271) al caso di un terminale ad antenna singola, che riceve
un valore
in cui
hk è il vettore (
nBS, 1) dei guadagni complessi tra le
nBS antenne di trasmissione e l’unica di ricezione,
hk è
l’elemento di
hk corrispondente all’antenna della
bs che trasmette il simbolo
sk diretto all’utente
k, ed il termine
∑Uh = 1, h ≠ k hhsh individua
l’interferenza da parte degli altri e che si aggiunge al contributo del rumore, in modo che si possa parlare di rapporto
segnale / interferenti più rumore o
SINR.
Nell’impossibilità per i terminali mobili con antenna singola di sopprimere gli interferenti, occorre trovare una soluzione semplice che possa essere attuata presso la
bs: fortunatamente questa esiste ed è
la duale di quella esposta ai §
21.5.2-
21.5.3, necessitando come precondizione la conoscenza da parte della
bs di tutti i vettori
hk visti dagli utenti, in modo da poter ricostruire la matrice
di dimensioni
U × nBS e che caratterizza il
canale broadcast del downlink tra le antenne della
bs e quelle (singole) degli
U utenti.
Una volta nota
Hd, la
bs ne può calcolare la
pseudo inversa (eq.
(21.262))
e sostituire al vettore di simboli
s da inviare agli
U terminali un nuovo vettore
precodificato
sP = Ps = ⎲⎳Uh = 1 phsh
dove
ph è pari alla
h − esima colonna di
P, di fatto
spargendo ogni simbolo
sh destinato a ciascun utente
h su
tutte le
nBS antenne. Osserviamo ora che in virtù della definizione di pseudoinversa si ha
HdP = I, e dunque ogni colonna
pk di
P è ortogonale a tutte le righe di
Hd tranne che alla
k − esima, ovvero
hTkph = δhk, in modo che la
(21.272) diviene
da cui
scompare il termine di interferenza da parte dei simboli
sh destinati agli altri utenti, ed il simbolo ricevuto può essere stimato come
ŝk = argmin s ∈ A |s − sk|2.
Tornando all’espressione
(21.272), occorre distinguere il caso in cui le prestazioni del sistema sono
limitate dal rumore e cioè quando
E{|n|2} > E{|∑Uh = 1, h ≠ khhsh|2}, dal caso in cui sono invece limitate
dagli interferenti, dove la diseguaglianza cambia verso. La precodifica
(21.274) si comporta bene solo nel secondo caso, mentre ponendo come obiettivo della matrice
P quello di rendere minimo l’errore medio quadratico
E{|s − sk|2} si ottiene una soluzione che pur non cancellando completamente gli interferenti permette di bilanciare la riduzione della loro potenza con la riduzione della potenza di rumore; tale soluzione è indicata come versione
regolarizzata di
(21.274) e fornisce
in cui
ρ = E{|Ps|2}⁄E{|n|2} è una misura dell’
SNR.
21.6.2 Controllo di potenza
I valori ottenuti per le colonne della matrice di precodifica P devono essere alterati, essenzialmente per due motivi:
- rispettare il vincolo sulla potenza trasmessa PT = E{|Ps|2} ⋅ fs;
- rendere massimo un criterio di qualità complessiva come ad es. la velocità aggregata, cioè la somma di quella per ciascun utente.
Il secondo obiettivo è quello più intrigante, dato che aumentare la potenza per un utente significa aumentare la capacità del suo canale, a discapito di quella degli altri per i quali si verifica invece un aumento della potenza interferente, e (per il vincolo sulla potenza complessiva) la riduzione della propria. Inoltre la potenza allocata ad ogni utente (ossia al simbolo a lui diretto) deve essere determinata in base all’SNR di ricezione, altra informazione che deve essere comunicata alla bs, in modo che quest’ultima possa attuare tecniche di water filling, ed assegnare più potenza a chi ha un SNR migliore. Non ci addentriamo nelle strategie di ottimizzazione congiunta, alcune delle quali iterative: questo è solamente un testo introduttivo.
21.6.3 Prioritizzazione degli utenti
Fino ad ora si è implicitamente supposto che U < nBS, ma gli utenti che intendono comunicare (tra quelli registrati presso una bs) possono essere ovviamente più delle antenne a disposizione. Tutti i terminali che richiedono il servizio comunicano alla bs le informazioni sullo stato del proprio canale o csi (hdk, ρk) in modo da permetterle di calcolare la P di precodifica. La bs deve quindi selezionare un sottoinsieme di UM ≤ nBS utenti scegliendoli in modo da massimizzare la velocità somma; ma la velocità di ciascun utente ha come limite superiore la capacità del suo canale, che a sua volta dipende da relativo ρk. La ricerca esaustiva del migliore gruppo di UM < U utenti verso cui trasmettere ha complessità esponenziale, per cui è necessario ricorre a strategie euristiche. Una tecnica (cosiddetta greedy o vorace) consiste nello scegliere per primo l’utente che può dare il maggior contributo di velocità, poi il secondo migliore, e così via. Ovviamente l’obiettivo da massimizzare, anziché tenere conto solamente della velocità-somma, può prendere in considerazione anche altri fattori, come la lunghezza di coda (da minimizzare) od altro ancora, vedi appresso.
21.6.4 Precodifica con feedback limitato
Il calcolo della matrice
P (eq.
(21.274) o
(21.276)) da parte della
bs necessita della conoscenza da parte di quest’ultima della matrice
Hd (21.273), la cui riga
hdk descrive il canale tra
bs e
uek, stimato presso quest’ultimo. Nel caso di un sistema
full duplex basato su portanti differenti per le due direzioni del collegamento il canale
non è reciproco (nota
1233), e quindi occorre un canale di uplink
di ritorno attraverso il quale i terminali mobili possano trasmettere alla
bs la loro stima di
hdk, codificata mediante
B bit frutto della quantizzazione dei valori di
hdk e di
ρk. Come noto dalla teoria dell’informazione (§
9.5.2), una distorsione nulla si ottiene solamente per
B → ∞, dunque per
B finito è inevitabile la presenza di errori negli
hdk quantizzati, che a loro volta causano errori nella determinazione delle colonne
pk della matrice di precodifica. Scrivendo quindi
p̃k = pk + ek in cui
pk e
p̃k sono i vettori di precodifica calcolati per una
csi esatta oppure quantizzata, la
(21.275) diviene
in cui
nI = hTk ∑Uh = 1 ehsh costituisce un termine di rumore
interferente.
Il termine
nI nella
(21.277) è tanto maggiore quanto peggiore è la risoluzione della quantizzazione di
hdk, ovvero quanto minore è il numero
B di bit di feedback inviati da ciascun terminale. Mantenendo
B fisso si produce un effetto
piattaforma (da
error floor) nelle prestazioni (sia di velocità che di errore) in funzione dell’
SNR, dato che
nI non cambia anche se il rumore
n si riduce. Il rimedio è quello di richiedere una maggiore accuratezza (ossia un maggior numero di bit
Bk) nei valori trasmessi
hdk in forma quantizzata per quei terminali
uek che sperimentano un rumore termico
n minore, in modo da mantenere i due tipi di rumore (
n e
nI) alla stessa potenza. Inoltre essendo i vettori
hk e
pk di dimensione
nBS, l’espressione
nI = hTk ∑Uh = 1 ehsh implica una somma di
nBS termini, cosicché anche il numero di antenne di trasmissione contribuisce in modo diretto ad
nI. Qualora l’
SNR sia uguale per tutti, è stato trovato che la
bs può conseguire un guadagno di multiplazione massimo (
nBS) quando ogni terminale invia
soffrendo una penalizzazione di soli
3 dB di prestazione rispetto alla conoscenza perfetta della
csi.
Quantizzazione vettoriale del canale di downlink
Approfondiamo un minimo come vengono prodotti i
B bit di feedback. La
qv, introdotta al §
10.1.2.4, è la tecnica per eseguire la codifica di sorgente
h̃k = Q(hk) della grandezza vettoriale
hk. Consiste in un codebook
H = {hq1, hq2, ⋯, hq2B} di
2B vettori di canale
a norma unitaria, tra cui si sceglie il vettore
hopt più vicino a quello misurato
hk (reso a norma unitaria anch’esso) usando come criterio di distorsione il
modulo quadro del
prodotto scalare. Si sceglie pertanto l’indice
nopt = argmax hn ∈ H |h†nhk|2 = argmax hn ∈ H cos2[∠( h†n, hk)]
decidendo quindi per
h̃k = Q(hk) = hopt, e si trasmettono i
B bit della codifica binaria di
nopt. Anche la
bs è a conoscenza dello stesso
cb H, da cui preleva
hnopt e lo usa per costruire
Hd da cui ricavare
P. Anche se i vettori del codebook sono a norma unitaria, si ottengono vettori di precoding (ad es., mediante
zero forcing) comunque in grado di cancellare gli interferenti.
Qualora il terminale rilevi una variazione di
SNR per cui la
(21.278) indica la necessità di variare
B, l’adozione di un
cb organizzato
gerarchicamente semplifica l’aumento (o la riduzione) della sua cardinalità, che raddoppia per ogni bit aggiunto a
B. Infine, qualora il numero di utenti attivi sia il risultato di una strategia di prioritizzazione tra un insieme più ampio, si possono ottenere risultati migliori scegliendo quei terminali che abbiano comunicato vettori
h̃k il più possibile ortogonali tra loro.
Quantizzazione del precoder
Osserviamo ora che l’errore
eh = ph − p̃h che compare nell’espressione
(21.277) del segnale ricevuto
rk come un termine di
rumore interferente nI = hTk ∑Uh = 1 ehsh, essendo causato dal calcolo delle colonne della matrice
P di precodifica a partire dalla
Hd quantizzata, è un errore
causato da un altro errore. Tanto vale allora cercare di quantizzare direttamente le colonne di
P, e lasciare che siano i terminali stessi a decidere quale vettore di precodifica
p̃k è il più idoneo moltiplicatore dei simboli destinati a ciascuno di essi, senza necessità di comunicare la
csi.
A questo fine si adotta un codebook
P = {p1, p2, ⋯, p2B} casuale con vettori complessi
ph (
nBS × 1) a norma unitaria ed uniformemente distribuiti in
tutte le direzioni, noto sia alla
bs che a tutti i terminali
uek. Ogni dispositivo, dopo aver stimato il proprio vettore di canale
hdk, può individuare il vettore
popt ∈ P più parallelo ad
hdk e dunque in grado di massimizzare il proprio
SINR, ovvero
dove
SINRk, m è l’
SINR per
uek qualora i simboli ad esso destinati siano precodificati con il vettore
pm. Il terminale quindi confronta
SINRk, opt con un valore soglia
γ che gli è stato comunicato dalla
bs, e
se lo supera può inviare sia
SINRk, opt che i
B bit della codifica binaria dell’indice
opt, indicando così il desiderio che i simboli
sk a lui diretti siano precodificati mediante
popt. Dal canto suo dopo aver ricevuto il feedback di ciascuno, la
bs individua per ogni vettore
ph il terminale
k (ai cui dati
sk verrà applicato
ph) che ha comunicato il valore
SNRk, h più grande, ovvero per il quale
ph porta più beneficio. Con tali vettori
ph costruisce la matrice
P, ed effettua la trasmissione dedicata ai terminali selezionati.
Notiamo infine che adottando un codebook
P costituito dalle
nBS colonne di una matrice di precoding
identità, ovvero
P = InBS, si ottengono vettori
ph tutti nulli tranne che per l’
h − esimo elemento pari ad uno. Con la scelta
(21.279) ciascun terminale indica in tal caso l’antenna della
bs rispetto alla quale sperimenta le migliori condizioni di propagazione, come avviene per la selezione di diversità (§
21.3.1.1). Specialmente nel caso di un ridotto numero di utenti, ciò permette di organizzare le trasmissioni di downlink in modalità
a divisione di tempo, trasmettendo di volta in volta con
tutta la potenza disponibile ed alla
massima velocità, mediante una unica antenna
m a beneficio del terminale
k che ha dichiarato un miglior
SINRk, m.
L’effetto di uno specifico vettore di precodifica
pk a norma unitaria è quello di moltiplicare il simbolo
sk per un valore complesso
ak, ie jαk, i diverso per ciascuna antenna
i = 1, 2, ⋯, nBS della
bs. Di fatto questo è il modo di operare tipico delle
antenne
intelligenti che realizzano un diagramma di radiazione
direttivo ed orientabile senza dove
muovere nulla, ma adottando una schiera di antenne e
sfasando con valori
αi crescenti il segnale diretto all’
i − esima antenna.
Al diagramma di radiazione ottenuto è stato dato il nome di
beam ed alla tecnica quello di
beamforming, in cui beam può essere tradotto come
trave, raggio, fascio; data la somiglianza formale con l’operazione di precodifica l’uso del termine di
beamforming si è esteso ad indicare non solo le operazioni di precoding, ma anche quelle (§
21.4.1.1) basate sulla
svd ed il water-filling per ottenere un numero di canali
indipendenti pari al rango di
H, modalità operativa indicata anche come
eigen-beamforming.
Il vantaggio più evidente del beamforming propriamente detto è che, trasmettendo in direzione (geometrica) del destinatario, si riduce la potenza interferente per gli altri utenti dislocati altrove e che non rientrano nel fascio. Per ottenere tale risultato è però necessario che la bs conosca la posizione geografica dei terminali mobili. In alternativa si possono generare più beam in direzioni casuali diverse e lasciare che siano i terminali ad indicare per quale beam si verifica una ricezione migliore, un po’ come illustrato per il caso della quantizzazione del precoder, che viene infatti descritto anche con il termine di beamforming opportunistico.
Nel caso di propagazione affetta da fading di Rayleigh (e dunque priva di un cammino diretto prevalente) il concetto di direttività delle antenne perde un po’ di significato, mentre continua a rivestire importanza per celle di raggio più ampio, e in cui antenne (della
bs) siano situate su di una torre sufficientemente elevata rispetto agli ostacoli presenti. In tal caso si determina una forte componente di onda diretta ed un fattore di Rice non trascurabile, riducendo di fatto il grado di diversità spaziale: in questo caso l’adozione del beamforming
geografico non è solo vantaggiosa, ma necessaria. Al contrario, per un ambiente privo di percorsi diretti e ricco di scattering è preferibile attuare il precoding atto a massimizzare l’
SINR (eq.
(21.279)) e capace di far combinare in modo coerente le repliche che viaggiano su cammini multipli differenti, come esemplificato nella animazione presso
https://youtu.be/XBb481RNqGw.