• Non ci sono risultati.

II.11 Equalizzazione del canale

II.11.1 Tecniche di equalizzazione

Sono state individuate quattro soluzioni diverse, le quali utilizzano a valle il ricevitore convenzionale a soglia descritto in precedenza[1],[10],[11],[12].

.

Esaminiamo le prime due:

ORC (Orthogonality Restoring Combining)

• EGC (Equal Gain Combining)

Entrambe le tecniche si rifanno al principio di equalizzazione Zero-forcing e prevedono la conoscenza della risposta in frequenza del canale, in modo da poterla usare per aggiustare il guadagno di sistema, agendo semplicemente sulla risposta in frequenza del canale stesso, secondo le seguenti relazioni.

Tecnica ORC ' ', 2 k m m k m m

H

P

d

H

=

( 2.11.1 ) Tecnica EGC ' ', k m m k m m

H

P

d

H

=

( 2.11.2)

dove m rappresenta l’m-esima sottoportante e k’ l’utente attivo.

In base alla (2.11.1) e alla (2.11.2) l’ortogonalità fra gli utenti viene ristabilita perfettamente e ciò fa sì che le prestazioni di tale equalizzatore non peggiorino all’aumentare del carico d’utenza.

La facile implementazione di queste tecniche è però contrastata da alcuni svantaggi che essa presenta; infatti, può capitare che dati utili allocati su di una sottoportante particolarmente attenuata dalla selettività del canale, risultino immersi

completamente al di sotto della soglia di rumore termico e pertanto, al momento dell'equalizzazione, quello che viene esaltato è il livello di rumore e non del segnale utile. E' ovvio che in un contesto del genere alcune informazioni utili vadano a perdersi e ciò contribuisce a degradare le prestazioni dell'intero sistema.

Tali tecniche sono applicabili solo con collegamenti downlink, com’ è nel sistema in esame, in cui è garantita la sincronizzazione fra gli utenti serviti, all’interno della medesima cella, dalla stessa BTS.

Fig II.23-azione del rumore e del canale selettivo sul segnale utile

Un’ulteriore tecnica è la MRC:

MRC ( Maximum Ratio Combining)

Anche questa tecnica si rifà al principio di equalizzazione Zero-forcing e prevede la conoscenza della risposta in frequenza del canale, in modo da poterla usare per aggiustare il guadagno di sistema agendo semplicemente sulla risposta in frequenza

del canale, secondo la seguente relazione m ' ', ( 2.11.3 ) k m k m

P

=d

H

dove m rappresenta l’m-esima sottoportante e k’ l’utente attivo.

Con la ( 2.11.3 ) viene ristabilita nuovamente l’ortogonalità tra i vari utenti ed in più rispetto alle due tecniche precedenti, nel caso di un solo utente si recuperano perfettamente anche quei dati utili, che a causa della selettività del canale erano allocati su portanti particolarmente “sfortunate” .

Infatti nel caso di un solo utente si ottengono prestazioni che coincidono con quelle di un canale additivo Gaussiano bianco ( AWGN ) comunque sia fatto il particolare profilo del canale. Naturalmente ci si riferisce alla sola distorsione imputabile al canale di propagazione lineare, e nel caso specifico, all’utilizzo di codici di canalizzazione ortogonali ( Walsh-Hadamard e Orthogonalgold).

Al crescere del numero degli utenti non si riesce a contrastare il fenomeno dell’interferenza dovuta agli altri utenti e le prestazioni peggiorano spesso anche in maniera molto accentuata , dipendendo in questo caso anche e soprattutto dal profilo di canale selezionato. Come quelle analizzate in precedenza, anche questa tecnica, è applicabile solo con collegamenti downlink, per cui è garantita la sincronizzazione fra i segnali trasmessi dalla stazione base.

• MMSEC (Minimum Mean Square Error Combining)

Con questo metodo si riesce a mitigare il fenomeno di non ricuperabilità del segnale utile in corrispondenza di quelle sottoportanti per cui il livello del rumore termico è più elevato del segnale utile stesso (forti notch del canale).

Esso infatti necessita della perfetta conoscenza del canale e si basa sul criterio MMSE per cui l'errore deve risultare ortogonale a tutte le componenti in banda base delle sottoportanti ricevute

{

(

' l'

)

( )

'

}

j j

E aarl = 0

= r l

( )

'

( 2.11.4 )

con , = componente complessa in bandabase del segnale ricevuto dopo la demodulazione, = j-esimo dato trasmesso,

' 0,1, 2,..., l L ' j a al'j =j-esimo dato stimato.

Viene effettuata una sorta di rivelazione MMSE sottoportante per sottoportante, nel senso che ciascuna di esse viene moltiplicata per il termine

' ', 2 2 k m m k m m m H P d H σ ∗ = ⋅ + ( 2.11.5 ) dove la varianza di rumore al denominatore ha il compito di contrastare l'eccessivo innalzamento del rumore stesso; infatti per ampiezze piccole di sottoportante (e quindi di bit di informazione) il guadagno diventa piccolo limitando così l'effetto del rumore sui dati utili, mentre per ampiezze di sottoportante più grandi, il guadagno diventa simile a quello della tecnica ORC.

E’ di fondamentale importanza che la varianza del rumore usata nella ( 2.11.5 ) sia quella relativa ad ogni componente frequenziale del segnale e non quella relativa all’intero segnale trasmesso. In quest’ultima infatti entra in gioco il fattore di spreading che invece viene normalizzato nel calcolo della varianza del rumore componente per componente. Inoltre come riportato in [10], si deve tenere conto del valor quadratico medio dei simboli della costellazione complessa, E ck } la quale { 2 deve dividere la varianza totale.

Per una costellazione M-QAM E ck = { 2} 2( 1) 3

M

( 2.11.6 )

In altre parole si può scrivere per le diverse modulazioni 2 m σ come 2 2 0 1 ( ) log m Eb M N

σ = per modulazioni M-QAM ( 2.11.8 )

2 2 0 1 ( ) log m Eb M N σ = per modulazioni M-PSK ( 2.11.9 )

per ogni sottoportante. Si ricorda che tale varianza è relativa a tutto il processo complesso e non ad una sola componente in fase o in quadratura.

Una nota importante riguarda l’implementazione suddetta varianza a livello software, infatti nel programma si dispone di Dev (2.10.17) (2.10.18) che può essere sfruttata nel calcolo delle (2.11.8) e (2.11.9).

(

)

2 2 0 1 2 _ _ 2 1 ( ) log 3 m

Dev equal Dev equal

Eb M M L N σ = = ⋅ ⋅ − per M-QAM (2.11.10) 2 2 0 1 2 _ _ ( ) log m

Dev equal Dev equal

Eb M L N σ = = ⋅ ⋅ per M-PSK (2.11.11) Dove _ c c Dev Dev equal N I = (2.11.12)

Dovendo eliminare il fattore di sovracampionamento essendo l’equalizzazione posteriore al blocco di FFT in ricezione. Tenere presente che L è quello reale e quindi si devono togliere eventuali portanti virtuali presenti.

Le tecniche di equalizzazione viste, non sono di tipo adattivo, ma prevedono a valle dell’equalizzatore un decisore a soglia di tipo convenzionale.

Si riporta l’implementazione software dell’ MMSEC che fornisce le prestazioni senza dubbio migliori, l’inserzione avviene direttamente nel main non c’è funzione dedicata

Equalizzatore MMSEC:

for (i=0; i<(2*Ns*L); i+=2)

{ s_bloccoRIC_eq[i]=(s_bloccoRIC_prefix[i]*C_Sel_Freq_fase_Old[i/2]+s_ bloccoRIC_prefix[i+1]*C_Sel_Freq_quad_Old[i/2])/(mod_quad_can_Old[i/2]+(n oisy*Dev_equal*Dev_equal/(((cost-1)/3)*(L-portanti_virtuali)))); s_bloccoRIC_eq[i+1]=(s_bloccoRIC_prefix[i+1]*C_Sel_Freq_fase_Old[i/ 2]- s_bloccoRIC_prefix[i]*C_Sel_Freq_quad_Old[i/2])/(mod_quad_can_Old[i/2]+(n oisy*Dev_equal*Dev_equal/(((cost-1)/3)*(L-portanti_virtuali)))); }

Il tipo di equalizzatore è selezionato dal file d’ingresso MC-CDMAinput.txt; da notare le grandezze denominate Old perché ovviamente si equalizza sempre il blocco precedente in quanto già interamente ricevuto rispetto a quello attuale non completamente disponibile.

II.12 Decisione

Per modulazioni MxM-QAM la decisione è affidata alla funzione

int DecisQAM (double camp, int M)

Viene fatto riferimento ad una modulazione 16-QAM (4x4-QAM). Si riporta di seguito la costellazione dei segnali sul piano complesso.

La strategia di decisione è quella a soglia (rivelatore a soglia); in altri termini, si decide per il punto più vicino all’osservato, decidendo in favore del simbolo che appartiene alla zona di decisione in cui cade l’osservato.

Per questo tipo di modulazione, le componenti in fase e quadratura sono indipendenti, ciò permette di trattarle separatamente. Prima si decide per la componente in fase e poi per quella in quadratura.

Alla procedura di decisione vengono passati due parametri: l’intero M per specificare il tipo di modulazione e il reale camp che rappresenta l’osservato (componente in fase o in quadratura dell’osservato).

Prima di tutto, si inizializza la variabile soglia a -(M-2). Così facendo la variabile

soglia rappresenta la prima linea a sinistra per la definizione delle zone di decisione (per una modulazione 16-QAM si ha: soglia=-2, vedi linea indicata dalla freccia). A questo punto se l’osservato cade a sinistra della prima soglia (camp<=soglia) si decide in favore del punto che appartiene a tale zona dec=-(M-1), (âi = -3);

altrimenti se l’osservato sta a destra dell’ultima soglia (camp>-soglia) si decide in favore del punto appartenente a tale zona, ovvero dec=+(M-1), (âi = +3). Se nessuna

delle due condizioni è verificata ciò indica che l’osservato appartiene ad una zona di decisione interna, allora si incrementa la soglia di 2 fino a quando tale linea di demarcazione non supera il campione osservato e quando ciò avviene si decide per dec=soglia-1.

La procedura che si occupa di effettuare la decisione nel caso di modulazioni M_PSK è:

void DecisPSK (double* DecVetPSK, int MPSK, double Pg)

La strategia di decisione utilizzata è ancora quella a minima distanza. Viene fatto riferimento ad un caso particolare: 8-PSK e riportiamo la costellazione nella figura II.24

Fig. 2.24 – Costellazione 8-PSK

La strategia di decisione è quella a soglia (rivelatore angolare). Alla procedura vengono passati i seguenti parametri: un intero MPSK per specificare la particolare modulazione PSK presa in esame, ed un vettore DecVetPSK (per riferimento) di dimensione due nel quale sono memorizzate le componenti fase e quadratura dell’osservato. Al termine della funzione, sullo stesso vettore si trovano le componenti fase e quadratura del simbolo deciso.

Se la modulazione è 2-PSK si decide per il simbolo (1, 0) se la componente in fase dell’osservato è positiva (la componente in quadratura non porta alcuna informazione), si decide per il simbolo (-1, 0) se la componente in questione è negativa.

Per ogni altra modulazione si definisce la variabile phase=180°/MPSK. Quindi, conoscendo il campione osservato e conoscendo le sue componenti, è possibile ricavare l’angolo che quest’ultimo forma con l’asse in fase, θ.

Se l’angolo formato dall’osservato, θ, è maggiore di 360°-phase, ciò implica che l’osservato cade nella zona del simbolo a0, pertanto si decide per (1, 0).

Altrimenti si applica il seguente procedimento: semplicemente, si decrementa θ di una quantità pari a 2*phase, ovvero si sottrae a θ un angolo pari all’apertura angolare di una singola zona di decisione. Così facendo si sposta l’osservato da una zona di decisione a quella immediatamente precedente (procedendo in senso

orario). Tale tecnica viene portata avanti fino a quando l’angolo non risulta inferiore a phase, ovvero fino a quando l’osservato non cade nella zona di decisione associata al simbolo a0. Quando si esce da tale loop la variabile cont contiene il

numero di decrementi effettuati e a quel punto è immediato capire in che regione cade il campione osservato e quindi decidere per:

componente fase: * (DecVetPSK) = cos (cont*2*phase)

componente quadratura: * (DecVetPSK+1) = sin (cont*2*phase)

II.13 Simulazione

Sono stati descritti i blocchi che permettono la realizzazione del programma di simulazione, tranne la parte relativa ai codici di canalizzazione che è descritta nel capitolo successivo. L’obiettivo di questo paragrafo è quello di descrivere brevemente la linea guida per effettuare una simulazione, partendo dalla descrizione del file d’ingresso. Sembra doveroso illustrare al lettore il significato dei parametri da settare, unitamente ai valori congrui di questi, in modo che il simulatore non li rifiuti terminando anzitempo la simulazione.

La prima parte del programma prevede la dichiarazione delle variabili, quindi la lettura del file d’ingresso MC-CDMAinput.txt riportato di seguito

****************************** ***Impostazioni Calcolo BER*** ******************************

Eb/N0 [dB] ( Starting, Step, Number of points ): 15,2,2

Massimo numero di blocchi da trasmettere: 1000000

500000

************************** ***Impostazioni Sistema*** **************************

Tipo di modulazione (P = Psk, Q = Qam): Q

Punti costellazione: 16

Numero di sottoblocchi di simboli d'informazione (Ns): 1

Dimensione dei sottoblocchi (L): 256

Lunghezza prefisso ciclico: 64

Numero di campioni per intervallo di chip (NcIc): 8

Durata del filtro di trasmissione in intervalli si segnalazione (Dur):

20

Roll Off (RO): 0.125

Intervallo di segnalazione (nsec): 50

********************************** ***Impostazioni Gestione Utenti*** ********************************** Numero utenti:

32

Tipo di codice di canalizzazione (0=Walsh-Hadamard / 1=m-sequence/ 2=Orthogonal-Gold/ 3=Small-Kasami/ 4=Gold-Sequences):

4

Seme per l'allocazione degli utenti: 11478

Allocazione codici di Walsh-Hadamard (0=Guidata / 1=Dall'ultima linea a salire / 2=Random):

1

****************************** ***Impostazioni Nonlinerità*** ******************************

Uso Amplificatore di potenza (Si=1, No=0); 0

Tipo di amplificatore: R

Back-Off di uscita: 4

Numero di blocchi per il calcolo delle potenze medie: 2000

Valore di partenza della costante di normalizzazione della potenza media (Kappa): 1 Passo di Kappa: 0.01 ************************* ***Impostazioni Canale*** *************************

Accensione generatore di rumore (0 spento, 1 acceso): 1

7181

Accensione Canale Multipath ( Si=1, No=0 ): 1

Numero di Cammini Multipli (verifica congruenza con File "profilo di canale"):

8

Tipo del Multipath (D= dinamico con fase variabile ed ampiezza costante, S=statico, G= attenuazioni gaussiane) :

G

Interruttore Multipath con Fading Lento (0=spento, 1=acceso) : 1

Seme del generatore di processo gaussiano per prese di canale : 65549

Banda doppler (in Hz): 100

Equalizzazione del canale ( 1=Si, 0=No) : 1

Tecnica di equalizzazione ( 0=varie tecniche di equalizzazione( scelte al punto seguente),1=MMSEC ):

1

Varie tecniche di equalizzazione (E (per EGC), M (per MRC), O (per ORC) ) :

O

******************************** ***Impostazioni Predistorsore*** ******************************** Uso del Predistorsore (0=NO, 1=SI) 0

Numero cicli effettuati dal predistorsore: 101

Step-size del predistorsore: 0.7

Soglia di uscita: 0.1

Quantizzazione costellazione interferenti (*leggere il file README.TXT per le opzioni consentite)

1,1,1

************************** ***Monitoraggio Sistema*** **************************

Monitoraggio Potenza-BackOff (0 off/1 on) 0

Monitoraggio Warping-Clustering Predistorsore - Stampa Costellazione Predistorta(0 off/1 on)

0

Stampa evoluzione DiagrammaIQ-Baricentri per un utente (0 off/1 on, numero utente)

0,15

Monitoraggio BER (0 off/1 on, intervallo di controllo in secondi) 1,3600

Stampa della Densita Spettrale di Potenza Normalizzata (0 off/1 on) 0

I primi dati che vengano letti sono tre numeri interi che specificano di partenza, lo step tra un

(

/ 0

Eb N db

)

( )

/ 0

)

rapporto segnale-rumore per i quali viene calcolata la BER. Quindi si imposta il numero massimo di simboli trasmessi ed il numero massimo di errori per ogni , si ricorda che l’algoritmo di stima della BER è di tipo Montecarlo e quindi si devono imporre queste due condizioni (criteri di terminazione) per ottenere una stima accettabile dei valori. Quindi si specifica il tipo di modulazione Q=QAM, P=PSK e nella riga successiva il numero di punti della costellazione. Si impostano nell’ordine

(

/ 0

Eb N db

s

N ed L che, in riferimento alla schema principale,

rappresentano il numero di blocchi “copy” ed il rispettivo ordine ( nonché la lunghezza delle sequenze di codice). Il prodotto Ns⋅ è il numero di sottoportanti L

totali ovvero i punti della FFT/IFFT.

Si fornisce la lunghezza del prefisso ciclico che viene dimensionato come riportato in II.5. Ci sono tre parametri che caratterizzano i filtri di trasmissione e di ricezione: numero di campioni per intervallo di segnalazione solitamente posto ad 8, la durate dei filtri espressa in intervalli di segnalazione ed il roll_off. Le impostazioni del sistema si chiudono con la durata dell’intervallo di segnalazione espressa in

nsec, come precedentemente detto solitamente pari a 54 . Passando alla

gestione degli utenti, si fornisce al simulatore il numero di utenti, tenendo conto che non può superare L, quindi il tipo di codice di spreading usato, questo va ad inizializzare la variabile type_code nel programma; i valori di riferimento sono riportati in tabella II.2. Si riporta il seme per l’allocazione degli utenti e quindi il tipo di allocazione codici. Attenzione, l’allocazione guidata è quella a minimo PAPR, quindi vale solo se sono in uso i codici di Walsh-Hadamard, comunque la matrice walshrand del programma lavora indifferentemente dal tipo di codice purchè non sia settato allocazione guidata. Nelle simulazioni si utilizza l’allocazione dall’ultima a salire se tipo codice =1,2,3,4 altrimenti qualunque, se tipo codice=1.

c c

N I

sec

n

La sezione successiva riguarda la non-linearità, in particolare l’uso o meno dell’amplificatore (si=1,no=0), il tipo di amplificatore come riportato in tabella II.4

Simbolo Modello Amplificatore R Modello di Rapp per SSPA X Modello di Saleh per TWT S SSPA per punti

T TWT per punti

G TWT di De Gaudenzi

Tab.II.4-Modello non-linearità

Quindi la linea successiva del file di input, indica il Back-off di uscita.

Si imposta il numero di blocchi necessario alla funzione PowereAnalysis per il calcolo delle potenze medie, il valore della costante di normalizzazione Kappa ed il passo nell’algoritmo di calcolo.

Quindi si forniscono le impostazioni relative al canale di propagazione, questo strettamente lineare. Si imposta l’accensione o meno del generatore di rumore, il seme da fornire alla funzione Noise la presenza o meno di uno scenario di tipo multipath. In caso affermativo si imposta il numero di cammini del “multipath intensity profile”, tenendo conto del fatto che i valori di potenza vengono letti dal file “profilo_canale.txt, quindi ci deve essere congruenza tra il parametro fornito ed il file stesso. Il multipath implementabile può essere di vario tipo

Simbolo Tipo multipath

D Fase variabile ampiezza costante S Statico nel tempo

G Attenuazioni gaussiane ad ogni blocco

Tab.II.5- Tipi multipath

Attenzione le impostazioni precedenti non si riferiscono al fading, si tratta di modelli di canale in cui per variabilità temporale si intende durata di un blocco

OFDM. Si tratta quindi di modelli poco realistici, anche in riferimento a quanto esposto in II.9, perché il canale radiomobile non è statico e a livello simulativo non ha senso privilegiare una realizzazione deterministica piuttosto di un’altra; così come non è realistico variare realizzazione ogni blocco senza prevedere una certa correlazione tra le realizzazioni stesse. Si tratta comunque di situazioni utili a livello didattico e di settaggio del simulatore. La riga successiva dell’MC- CDMAinput.txt prevede l’accensione o meno del fading lento, il seme per la generazione dei processi Gaussiani da fornire in pasto ai filtri di butterworth ed ovviamente la frequenza doppler con cui varia il canale. Infine si può prevedere l’equalizzazione con tecnica MMSEC oppure con altre tecniche (vedi sezione II.11).

Ci sono i settaggi per l’algoritmo di predistorsione ai quali non si presta attenzione perché esulano da questa trattazione.

Il file di input termina con i flag di monitoraggio del sistema in ordine: Potenza e back-off, Warping e clustering predistorsore (non di interesse), evoluzione baricentri diagramma IQ, monitoraggio BER durante la simulazione ( intervallo di monitoraggio), stampa della densità spettrale di potenza Normalizzata. Da notare che le sole BER vengono comunque stampate vanno a formare il file di uscita

BerOBO%.out. Si riporta un possibile file d’uscita per completezza

Numero Backoff Eb/N0 BER0 0 13 0.00 1.55e-001 1 13 0.50 1.31e-001 2 13 1.00 1.12e-001 3 13 1.50 1.20e-001 4 13 2.00 1.18e-001 5 13 2.50 1.08e-001 6 13 3.00 1.03e-001 7 13 3.50 8.33e-002 8 13 4.00 8.28e-002 9 13 4.50 7.44e-002 10 13 5.00 6.07e-002 11 13 5.50 6.12e-002 12 13 6.00 5.61e-002 13 13 6.50 4.86e-002 14 13 7.00 4.35e-002 15 13 7.50 4.21e-002 16 13 8.00 3.88e-002 17 13 8.50 4.07e-002 18 13 9.00 3.23e-002

Si nota come nella prima colonna sia presente il numero d’indice, la seconda è relativa al back-off d’uscita, la terza colonna riporta i valori del rapporto segnale-

rumore espresso in termini di Eb N/ 0

( )

db . Le colonne successive che sono in

numero pari al numero di utenti attivi, riportano la BER corrispondente per ogni valore di back-off ed Eb N/ 0

( )

db .

Documenti correlati