Definizione e sviluppo di un software receiver per l`elaborazione dei
Transcript
Definizione e sviluppo di un software receiver per l`elaborazione dei
Giulio Mezzana – Roberto Dell’Ariccia 1. INTRODUZIONE ................................................................................................................................................. 3 2. DESCRIZIONE DEI SISTEMI GPS E GALILEO .............................................................................................. 4 2.1. INTRODUZIONE ................................................................................................................................................. 4 2.2. FONDAMENTI DELLA RADIOLOCALIZZAZIONE SATELLITARE ................................................................................ 4 2.3. DETERMINAZIONE DELLA SOLUZIONE NAVIGAZIONALE ....................................................................................... 7 2.4. IL SISTEMA GPS ...............................................................................................................................................10 2.4.1. Segmento spaziale (space segment)...........................................................................................................10 2.4.2. Segmento di controllo a terra (ground segment)........................................................................................11 2.4.3. Segmento utente (user segment) ................................................................................................................13 2.5. IL SEGNALE GPS ..............................................................................................................................................14 2.6. IL MESSAGGIO DI NAVIGAZIONE ........................................................................................................................16 2.7. IL SISTEMA GALILEO ........................................................................................................................................17 2.8. I SERVIZI ..........................................................................................................................................................19 2.9. L’ARCHITETTURA.............................................................................................................................................23 2.10. IL SEGNALE GALILEO .....................................................................................................................................27 3. SEGNALI DI NAVIGAZIONE GNSS .................................................................................................................33 3.1. INTRODUZIONE ................................................................................................................................................33 3.2. SISTEMI DI ACCESSO MULTIPLO A SPETTRO DISPERSO .........................................................................................33 3.3. STRUTTURA DEL SEGNALE GPS ........................................................................................................................38 3.3.1. Generazione e modulazione del segnale su L1...........................................................................................38 3.3.2. Sequenze PRN ..........................................................................................................................................44 3.3.3. Proprietà di correlazione dei codici C/A ...................................................................................................47 3.3.4. Livelli di potenza e rapporti segnale-rumore del segnale GPS a RF ..........................................................52 3.4. STRUTTURA DEL SEGNALE GALILEO..................................................................................................................55 3.4.1. Modulazione e piano di frequenza.............................................................................................................56 3.4.2. La modulazione BOC (Binary Offset Carrier) ...........................................................................................57 3.4.3. Proprietà di correlazione dei segnali Galileo ............................................................................................62 3.4.4. Il segnale L1 di Galileo ............................................................................................................................64 3.4.5. I codici di spreading .................................................................................................................................68 3.4.6. Livelli di potenza del segnale Galileo a RF ...............................................................................................70 4. CATENA RICEVENTE E SOFTWARE RECEIVER ........................................................................................72 4.1. INTRODUZIONE ................................................................................................................................................72 4.2. STRUTTURA DI UN RICEVITORE GNSS E SOFTWARE RECEIVER ...........................................................................73 4.2.1. Vantaggi dell’approccio software .............................................................................................................75 4.3. LA CATENA RICEVENTE ....................................................................................................................................76 4.3.1. L’antenna.................................................................................................................................................77 4.3.2. Il blocco RF Front End.............................................................................................................................77 4.3.3. Il convertitore Analogico-Digitale (ADC) .................................................................................................80 4.4. CANALI DI RICEZIONE .......................................................................................................................................82 4.4.1. Acquisizione .............................................................................................................................................84 4.4.2. Tracking Loops ........................................................................................................................................88 4.4.3. Estrazione dei dati di navigazione e calcolo degli pseudoranges ...............................................................90 4.4.4. Determinazione della posizione ................................................................................................................91 5. SIMULAZIONE DEI SEGNALI GNSS A FREQUENZA INTERMEDIA ........................................................93 5.1. INTRODUZIONE ................................................................................................................................................93 5.2. SIMULAZIONE DEL SEGNALE DI NAVIGAZIONE: REQUISITI FONDAMENTALI ..........................................................93 5.3. IL SIMULATORE DI SEGNALE GPS ......................................................................................................................94 5.4. IL SIMULATORE DEL SEGNALE DI GIOVE-A SULLA BANDA L1 ......................................................................... 105 5.5. SIMULAZIONE DEL RUMORE TERMICO ............................................................................................................. 119 1 Giulio Mezzana – Roberto Dell’Ariccia 6. ACQUISIZIONE DEI SEGNALI DI RADIONAVIGAZIONE ........................................................................ 126 6.1. INTRODUZIONE .............................................................................................................................................. 126 6.2. ASPETTI TEORICI ............................................................................................................................................ 126 6.2.1. Algoritmi di acquisizione ........................................................................................................................ 126 6.2.2. Acquisizione mediante ricerca seriale ..................................................................................................... 128 6.2.3. Acquisizione mediante ricerca parallela nel dominio della frequenza ...................................................... 130 6.2.4. Acquisizione mediante ricerca parallela nel dominio della fase del codice .............................................. 134 6.2.5. Soglie di acquisizione ............................................................................................................................. 139 6.2.6. Fattori che influenzano le prestazioni dell’acquisizione .......................................................................... 141 6.2.7. Lunghezza del set di dati da acquisire ..................................................................................................... 142 6.2.8. Dimensione delle celle in Doppler .......................................................................................................... 143 6.3. IMPLEMENTAZIONE SOFTWARE ....................................................................................................................... 145 6.3.1. Obiettivi ................................................................................................................................................. 145 6.3.2. Architettura Generale ............................................................................................................................. 145 6.3.3. Descrizione dell’algoritmo di Acquisizione per GPS ............................................................................... 146 6.3.4. Descrizione dell’Algoritmo di Acquisizione per Galileo .......................................................................... 154 6.3.5. Acquisizione su set di dati di lunghezza diversa....................................................................................... 154 6.3.6. Ricerca fine della frequenza ................................................................................................................... 162 6.3.7. Soglia di acquisizione ............................................................................................................................. 162 6.4. TEST E RISULTATI ........................................................................................................................................... 162 7. TRACKING DEI SEGNALI DI RADIONAVIGAZIONE ............................................................................... 163 7.1. INTRODUZIONE .............................................................................................................................................. 163 7.2. ASPETTI TEORICI ............................................................................................................................................ 164 7.2.1. Phase-Locked Loops (PLL)..................................................................................................................... 164 7.2.2. Phase-Locked Loop del primo ordine...................................................................................................... 166 7.2.3. Phase-Locked Loop del secondo ordine .................................................................................................. 168 7.2.4. Trasformazione dai sistemi continui a quelli discreti ............................................................................... 170 7.2.5. Tracking di portante e di codice nel sistema GPS .................................................................................... 172 7.2.6. Tecnica Block Adjustment of Synchronizing Signal (BASS)...................................................................... 174 7.3. IMPLEMENTAZIONE SOFTWARE ....................................................................................................................... 175 7.3.1. Obiettivo ................................................................................................................................................ 175 7.3.2. Architettura............................................................................................................................................ 175 7.3.3. Descrizione dell’algoritmo di tracking per GPS ...................................................................................... 177 7.3.4. Descrizione dell’algoritmo di tracking per GALILEO ............................................................................. 188 7.3.5. Risultati Finali ....................................................................................................................................... 188 7.4. TEST E RISULTATI ........................................................................................................................................... 197 7.4.1. GPS ....................................................................................................................................................... 197 8. ARCHITETTURA FINALE DEL SOFTWARE RECEIVER E GRAPHIC USER INTERFACE ................. 200 9. CONCLUSIONI ................................................................................................................................................. 201 10. ELENCO DELLE FIGURE E TABELLE....................................................................................................... 202 11. ABBREVIAZIONI ........................................................................................................................................... 205 12. APPENDICE .................................................................................................................................................... 206 13. BIBLIOGRAFIA .............................................................................................................................................. 207 2 Giulio Mezzana – Roberto Dell’Ariccia 1. INTRODUZIONE 3 Giulio Mezzana – Roberto Dell’Ariccia 2. DESCRIZIONE DEI SISTEMI GPS E GALILEO 2.1. Introduzione I sistemi GPS (Global Positioning System) e Galileo sono sistemi di radioposizionamento, noti più in generale come sistemi GNSS (Global Navigation Satellite System). Questo primo capitolo è dedicato ad un’introduzione a livello generale della navigazione satellitare, per richiamarne i principi fondamentali e per esaminare gli aspetti più significativi del funzionamento di un moderno sistema di navigazione satellitare. Verranno inoltre presentati, ad un alto livello di astrazione, i due sistemi sopra menzionati, per evidenziarne analogie e differenze a livello generale. Gli aspetti del trattamento dei segnali GPS e Galileo, sul cui studio si basa il presente lavoro di tesi, saranno in questo capitolo solo accennati, riservandoci di trattarli con l’adeguato livello di dettaglio nel secondo capitolo. Il primo paragrafo (§ 1.2) tratta delle problematiche generali di un sistema di radioposizionamento satellitare, del principio di funzionamento e degli algoritmi per il calcolo della posizione dell’utente a partire dalla stima di misure di distanza da un certo numero minimo di satelliti (rimandando all’appendice A per l’approfondimento matematico degli argomenti trattati). I successivi due paragrafi entrano più nel dettaglio dei due sistemi d’interesse. 2.2. Fondamenti della radiolocalizzazione satellitare La posizione di un determinato punto nello spazio, può essere individuata calcolando la distanza di questo punto da un riferimento la cui posizione sia nota. Per comprendere meglio, la fig. 1.1 mostra un esempio di questo metodo nel caso più semplice di uno spazio bidimensionale. 4 Giulio Mezzana – Roberto Dell’Ariccia Fig. 2.1 Posizionamento dell'utente nel caso bidimensionale Nell’esempio della fig. 1.1 l’utente, al fine di determinare la propria posizione, ha bisogno di avere in vista almeno tre satelliti (S1, S2 e S3) e di conoscere la propria distanza da questi tre satelliti (X1, X2, X3). Come si vede, tre è il numero minimo di satelliti per determinare in maniera univoca la soluzione navigazionale: infatti, le circonferenze, che rappresentano la possibile posizione dell’utente a distanza fissa dal particolare satellite (o Satellite Vehicle, SV), devono intersecarsi in un unico punto. Invece, utilizzando solo due SV e le relative distanze dell’utente da questi, si avrebbero due soluzioni per ogni scelta dei due satelliti, in quanto le circonferenze s’incontrerebbero in due punti distinti. Si vede dunque che è necessaria una terza circonferenza per la determinazione univoca della posizione dell’utente. È facile capire che, nel caso tridimensionale, bisogna avere almeno quattro satelliti in vista e conoscere le quattro relative distanze dell’utente da questi. Ovviamente il luogo dei punti equidistanti dall’utente, che nel caso bidimensionale era rappresentato dalle circonferenze, sarà in questo caso rappresentato da delle sfere: due sfere s’intersecano individuando una circonferenza, la quale interseca un’altra sfera localizzando due punti. Infine, per poter determinare in quale dei punti si trova effettivamente l’utente, è necessario avere in vista il quarto satellite. La fig. 1.2 chiarifica quanto 5 Giulio Mezzana – Roberto Dell’Ariccia appena esposto, mostrando la differenza fra l’uso di tre satelliti in luogo di quattro. Fig. 2.2 Localizzazione con tre SV e con quattro SV La figura sopra permette di notare che, utilizzando tre satelliti, si ottengono effettivamente due punti d’intersezione: tuttavia tale ambiguità rimasta tra le due posizioni è facilmente risolvibile notando che uno dei due punti si trova sulla superficie terrestre, mentre l’altro punto si trova ad una quota del tutto assurda per la maggior parte delle applicazioni di utilizzo dei sistemi di radioposizionamento, e per questo da scartare con sicurezza (è per questo che in molti contesti si assume che, in condizioni ideali, il numero minimo di satelliti per il calcolo della soluzione sia limitato a tre). Nei sistemi come il GPS (vedi più avanti), la posizione del SV è nota dalle effemeridi trasmesse dal satellite stesso: in questo modo, un generico utente può allora calcolare la distanza a cui si trova da quel determinato satellite misurando il tempo di ritardo del segnale ricevuto, calcolare allo stesso modo la distanza da altri tre SV e determinare univocamente la propria posizione cercando le coordinate del punto di intersezione delle quattro sfere. Va rilevato, però, che nella discussione fatta finora si è sempre supposto che le misure di distanza calcolate dall’utente fossero molto accurate e che non ci fossero errori di polarizzazione (o bias): tuttavia la distanza misurata fra il ricevitore ed il satellite è in realtà affetta da una polarizzazione incognita, a causa del fatto che, in generale, 6 Giulio Mezzana – Roberto Dell’Ariccia l’orologio dell’utente non sarà sincronizzato con il tempo GPS segnato dai satelliti. Allora per poter eliminare questo bias, sarebbe necessario un ulteriore satellite in vista, portando a cinque il numero di satelliti effettivamente necessari. L’uso di quattro satelliti e delle relative distanze misurate affette da bias porta, analogamente a quanto visto prima nel passaggio da due a tre dimensioni, a trovare due soluzioni di posizionamento: una di queste sarà vicina alla superficie terrestre, mentre l’altra sarà nello spazio. È dunque possibile riproporre il ragionamento già presentato in precedenza, secondo il quale nella maggior parte delle applicazioni si suppone che la posizione dell’utente sia vicina alla superficie terrestre, il che ci permette in sostanza di determinarne la posizione in maniera univoca facendo uso di soli quattro satelliti, nonostante la presenza del bias dovuto alla mancanza di sincronizzazione fra gli orologi dell’utente e dei satelliti. Quindi si può concludere affermando che, in generale, si devono avere quattro satelliti in vista per poter determinare la posizione dell’utente, anche considerando che la misura di distanza è affetta da una polarizzazione incognita. L’effettivo algoritmo utilizzato per il calcolo della posizione dell’utente è presentato nel prossimo paragrafo: si tratta di un metodo iterativo, nel quale la posizione iniziale dell’utente è generalmente scelta in corrispondenza al centro della Terra. Detto metodo iterativo convergerà alla soluzione corretta, piuttosto che a quella che prevede l’utente immerso nello spazio, considerando quattro satelliti come requisito minimo per la determinazione della soluzione. 2.3. Determinazione della soluzione navigazionale La distanza vera (vale a dire non affetta dal bias, di cui al paragrafo precedente) fra utente e satellite può essere scritta in termini vettoriali come segue: r r s u xs xu 2 y s yu 2 z s zu 2 (1 .1) 7 Giulio Mezzana – Roberto Dell’Ariccia nella quale il vettore s è il vettore distanza del SV dal centro della Terra, mentre u è il vettore distanza dell’utente rispetto al centro della Terra, secondo la schematizzazione di fig. 1.3. Fig. 2.3 Geometria di riferimento Come ben sappiamo dalla discussione fatta in precedenza, la distanza effettivamente misurata dal ricevitore dell’utente, che indicheremo con , sarà diversa dalla distanza vera r, perché affetta dalla polarizzazione temporale. Va sottolineato, però, che questa non è l’unica fonte di errore; possono essere infatti evidenziate almeno tre fonti di ritardo: 1. Ritardi dovuti al ricevitore e comuni a tutte le distanze misurate: sono principalmente causati dall’errore dell’orologio al quarzo del ricevitore, dai ritardi hardware e dal rumore termico; 2. Ritardi dovuti al satellite: dovuti agli errori dell’orologio atomico del SV (molto piccoli) e ad imprecisioni nelle effemeridi; 3. Ritardi dovuti all’osservazione: sono imputabili al ritardo nell’attraversamento della ionosfera e della troposfera terrestre e alla presenza di eventuale multipath. 8 Giulio Mezzana – Roberto Dell’Ariccia A causa di questi ritardi, la misura effettuata dal ricevitore è nota col nome di pseudorange. Alcuni di questi errori possono comunque essere corretti: il ritardo troposferico può essere modellato e quindi rimosso, quello ionosferico può essere corretto facendo uso p. es. di un ricevitore operante con la doppia frequenza. Tuttavia, l’errore dovuto all’orologio dell’utente non può essere corretto sulla base delle informazioni possedute dal ricevitore, e rimane dunque come unica incognita nelle formule. Assumendo dunque di considerare l’errore dell’orologio dell’utente come contributo dominante rispetto agli altri, lo pseudorange può scriversi come: r (t ) ct u (t R ) (1.2) dove tu(tR) è l’errore commesso nell’istante di misura tR. Dunque, è possibile scrivere la distanza vera in funzione dello pseudorange per N satelliti in vista come segue: r x x 2 y y 2 z z 2 ct 1 u 1 u 1 u 1 u 1 2 2 2 r2 x 2 xu y 2 y u z 2 z u 2 ct u r x x 2 y y 2 z z 2 ct N u N u N u N u N (1.3) Poiché si hanno quattro incognite (le tre dimensioni spaziali più la dimensione temporale), affinché il sistema ammetta una soluzione si devono avere almeno N≥4 satelliti in vista contemporaneamente (ad ulteriore conferma del fatto che quattro è il numero minimo di satelliti da utilizzare per la navigazione). In queste ipotesi, la soluzione al sistema (1.3) viene comunemente determinata mediante una linearizzazione del sistema stesso e l’uso di un metodo iterativo. Tale linearizzazione non risulta direttamente inerente agli scopi della presente tesi, ma viene comunque riportata nell’appendice A per completezza. 9 Giulio Mezzana – Roberto Dell’Ariccia 2.4. Il sistema GPS Il sistema di navigazione satellitare globale GNSS che va sotto il nome di Global Positioning System (GPS) è un sistema per il radioposizionamento ed il trasferimento di temporizzazione dallo spazio, basato sui segnali trasmessi da una costellazione di satelliti orbitanti intorno alla terra; è in grado di fornire con estrema precisione stime di Posizione, Velocità e Tempo (PVT) ad un numero illimitato di utenti sulla Terra, nello spazio, in cielo ed in mare. Le misure passive di PVT sono disponibili in ogni parte del globo e per l’intero arco delle ventiquattro ore, in un sistema di riferimento mondiale comune. Nell’ambito di questo sistema satellitare è possibile individuare tre segmenti: 2.4.1. Segmento spaziale (space segment) È rappresentato dalla costellazione nominale dei 24 satelliti, in cui ogni satellite invia in broadcast codici di ranging a RF, unitamente al messaggio di navigazione. Ogni orbita ha un angolo di inclinazione (cioè l’angolo fra la linea equatoriale terrestre e l’orbita percorsa dal SV) di 55°, per assicurare la copertura delle regioni polari. Il raggio dell’orbita satellitare è pari a 26560 Km, ed ogni SV compie un giro intorno alla Terra due volte in un giorno siderale, che corrisponde al tempo impiegato dalla Terra a completare una rotazione completa di 360°. Il giorno siderale dura in media 23 ore, 56 minuti e 4.09 secondi, che risulta essere un tempo leggermente più breve della giornata solare di 24 ore. Traendo energia dai pannelli solari, gli SV possono orientarsi in modo da esporre i pannelli stessi ai raggi solari e le antenne orientate verso la Terra per la trasmissione dei dati. La tab. 1.1 mostra alcune caratteristiche della costellazione GPS. Numero di Satelliti Numero di Piani Orbitali Numero di Satelliti per orbita Inclinazione Orbitale Raggio dell’Orbita Periodo Orbitale 24 6 4 55° 26560 km 11h, 58min, 2.05 sec Tab. 2-1 Caratteristiche della costellazione GPS 10 Giulio Mezzana – Roberto Dell’Ariccia Va notato, tuttavia, che i satelliti in ogni orbita non sono spaziati in modo omogeneo: due SV sono separati di 30.0° - 32.1°, e gli altri sono separati di 92.38° - 130.98° dagli altri due satelliti e fra di loro. La scelta di questa spaziatura fra i satelliti minimizza gli effetti di degradazione delle prestazioni indotte sul sistema dal guasto di un singolo SV [1]. Inoltre la spaziatura scelta per i satelliti in orbita assicura anche che un minimo di cinque satelliti siano in vista per l’utente a livello mondiale, caratteristica, questa, importante per permettere all’utente stesso di determinare la propria posizione con buoni livelli di accuratezza, come vedremo più avanti in questo capitolo. Va precisato in ogni caso che, in qualsiasi ora, un ricevitore a Terra è in grado di ricevere segnali GPS fino ad un massimo di 12: un ricevitore tipico può inseguire fra i 4 e gli 11 satelliti contemporaneamente. Inoltre, molti dei ricevitori GPS attualmente disponibili hanno una maschera di elevazione di 5°, il che significa che possono inseguire soltanto i satelliti che siano in vista con un angolo di elevazione superiore ai 5°. Ogni SV è inoltre equipaggiato con un orologio atomico con un’accuratezza non superiore ai 3 nanosecondi, utilizzato per far sì che un satellite mandi in broadcast segnali che siano sincronizzati con quelli inviati dagli altri SV. La fig. 1.4 a pagina seguente mostra una rappresentazione grafica della costellazione dei satelliti GPS orbitanti intorno alla Terra. 2.4.2. Segmento di controllo a terra (ground segment) È costituito da una rete di monitoraggio di cinque stazioni a terra (Ground Station, GS), utilizzata per il controllo delle performance e la gestione della costellazione dei satelliti in orbita e dei loro orologi, oltre che per l’aggiornamento dei dati del messaggio di navigazione. Ogni stazione di monitoraggio possiede due orologi al Cesio che forniscono il riferimento per il tempo di sistema GPS; ognuna delle cinque stazioni procede a continue misure di pseudorange rispetto a tutti i SV in vista ogni 1.5 secondi. Queste misure sono utilizzate per l’aggiornamento del messaggio di navigazione dei vari satelliti ad opera della Master Control Station, collocata presso la Falcon Air Force Base in Colorado. 11 Giulio Mezzana – Roberto Dell’Ariccia Fig. 2.4 Costellazione dei satelliti GPS Infatti, dal momento che sono note sia le coordinate spaziali che quelle temporali delle stazioni, le misure di pseudorange calcolate da ciascuna stazione (per un certo satellite) possono essere usate per calcolare una soluzione navigazionale inversa, al fine di correggere eventuali errori sulla posizione e sul timing di quel satellite. Quindi i dati raccolti dai vari SV da parte delle GS sono trasmessi alla MCS per il processamento: quest’ultima, in quanto designata come centro delle operazioni di supporto, è chiamata a svolgere i calcoli alla ricerca di eventuali errori sulla posizione e sul timing di ciascun satellite, in accordo alle informazioni ricevute dalle varie Monitor Station. Se viene rilevato un errore, la MCS trasferisce le informazioni alla monitor station interessata attraverso l’appropriata Ground Antenna (GA), per trasmettere le correzioni necessarie al particolare satellite. Le effemeridi di ciascun satellite e gli errori di timing sono ritrasmessi al satellite una volta al giorno, utilizzando le GA. La MCS, dunque, è effettivamente responsabile del controllo delle performance GPS, della generazione e dell’uploading dei dati di navigazione verso i SV per il mantenimento dei requisiti standard in fatto di prestazioni e di controllo dell’integrità. 12 Giulio Mezzana – Roberto Dell’Ariccia 2.4.3. Segmento utente (user segment) Costituito da una varietà di ricevitori GPS specificatamente progettati per ricevere, decodificare e processare i codici di ranging ed il messaggio di navigazione provenienti dai satelliti GPS. Il ricevitore utilizza i segnali trasmessi dai satelliti, unitamente alla misura precisa del ritardo di trasmissione del segnale, per determinare (utilizzando algoritmi che vedremo più avanti) informazioni di PVT dell’utente, oltre che la sincronizzazione al tempo GPS. Gli utenti del servizio possono essere classificati in due gruppi: utenti militari ed utenti civili. Gli utenti militari utilizzano il GPS per un ampio raggio di scopi, dalla navigazione alla designazione di obiettivi, al supporto aereo alle armi di ultima generazione. Per gli utenti civili, il GPS è utilizzato in varie applicazioni, la principale delle quali rimane certamente la navigazione punto-punto. La fig. 1.5 fornisce una rappresentazione grafica dei tre segmenti del sistema GPS, con l’indicazione delle loro principali interazioni. SPACESEGMENT Downlinkdata: •Rangingsignal •Effemeridi •Dati atmosferici •Almanacco Uplinkdata: •Aggiornamentoeffemeridi •Clock correction •Dati atmosferici •Almanacco USERSEGMENT Ground Antenna Monitor Stations Master Control Station GROUNDSEGMENT Fig. 2.5 I tre segmenti del sistema GPS Ciascun satellite, quindi, trasmette con continuità dei segnali, codificati con particolari codici (ranging codes), che contengono diverse informazioni, quali i dati orbitali per il calcolo della posizione del satellite 13 Giulio Mezzana – Roberto Dell’Ariccia (effemeridi) ed un riferimento temporale per la determinazione degli istanti di trasmissione dei segnali stessi. Nel caso in cui il ricevitore disponesse di un orologio perfettamente sincronizzato con quello satellitare, sarebbe possibile conoscere con esattezza il ritardo di propagazione (senza timing bias) misurando il ritardo tra il segnale orario ricevuto ed il tempo indicato dall’orologio locale, secondo l’algoritmo descritto nel paragrafo precedente. 2.5. Il segnale GPS Daremo in questa sezione una descrizione sommaria della struttura del segnale GPS, riservandoci di tornare più dettagliatamente sull’argomento nel prossimo capitolo. Il segnale GPS è trasmesso su due radiofrequenze collocate nella banda UHF; queste frequenze sono note col nome di Link 1 (L1) e Link 2 (L2), e sono entrambe multiple di una frequenza base comune, f0 = 10.23 MHz, che rappresenta, di fatto, il clock del sistema: f L1 154 f 0 1575.42 MHz f L 2 120 f 0 1227.6 MHz (1.4) Per un’utile schematizzazione, si consideri che il segnale trasmesso dal SV può essere suddiviso nelle tre componenti di seguito illustrate: Portante: l’onda sinusoidale a frequenza fL1 o fL2; Dati del messaggio di navigazione: il messaggio di navigazione contiene informazioni riguardanti le orbite dei satelliti; queste informazioni sono trasmesse a tutti i SV dalle Ground Station che compongono il Control Segment del GPS. I dati del messaggio di navigazione sono trasmessi ad un bit rate di 50 bps (quindi ciascun bit dura 20 ms). Sequenze di spreading: il sistema GPS si basa sulla tecnica di trasmissione nota come Spread Spectrum (vedi cap. 2) nella quale ogni SV trasmette utilizzando due sequenze di spreading che sono uniche. La prima è il codice C/A (Coarse Acquisition), 14 Giulio Mezzana – Roberto Dell’Ariccia la seconda è il codice P (Precision). Il codice C/A, che modula la portante L1, è un codice Pseudo-Random Noise (PRN) binario costituito da una sequenza di 1023 chips che si ripetono ciclicamente ogni millisecondo, allargando la banda del segnale di navigazione trasmesso da 50 bit/s fino ad un chip rate complessivo di 1.023 Mchip/s. Questo codice è diverso per ogni SV e, di fatto, ne rappresenta comunemente l’identificativo. Il codice P, che modula entrambi i canali L1 ed L2, è un codice PRN più lungo (~ 2.35 10 4 chips) che porta il segnale ad un chip rate di 10.23 Mchip/s (dieci volte più grande di quello utilizzato per il codice C/A) e che si ripete con cadenza settimanale, a partire dall’inizio della settimana GPS. Il codice P è trasmesso, per ragioni di sicurezza, con una modalità nota come AntiSpoofing (AS) che ne opera la cifratura: il codice complessivo criptato è noto come codice P(Y). Il codice P(Y) può essere decriptato solo dagli utenti autorizzati, i quali devono possedere la chiave crittografica; in generale tale segnale è utilizzato in ambito militare è non è dunque di utilizzo pubblico. Il sistema GPS fornisce due differenti tipi di servizi: il Precise Positioning Service (PPS), basato sull’uso del codice P, e lo Standard Positioning Service (SPS), basato sul codice C/A. Gli utenti autorizzati, muniti della chiave crittografica, sono in grado di utilizzare il PPS, che fornisce elevati livelli di accuratezza rispetto al SPS di dominio pubblico. I satelliti GPS trasmettono dunque i ranging codes ed i bit del navigation data, suddivisi sulle due portanti L1 ed L2 così come riportato nella fig. 1.6 a pagina seguente. Vediamo adesso più in particolare la struttura del messaggio di navigazione. 15 Giulio Mezzana – Roberto Dell’Ariccia Fig. 2.6 Schematizzazione delle componenti di segnale su L1 ed L2 2.6. Il messaggio di navigazione Il messaggio di navigazione (Navigation Message) è trasmesso sulla frequenza L1 ad un bit rate di 50 bps. Come il codice C/A, anche il navigation message è un codice binario, ma è trasmesso ad una velocità inferiore, per modo che ogni bit di dati occupa 20 ms. Dal momento che ogni ripetizione del codice C/A occupa 1 ms, ci sono 20 ripetizioni del codice C/A in ogni bit dei dati di navigazione. Daremo ora una brevissima presentazione della struttura generale del messaggio di navigazione senza entrare nel dettaglio, in quanto non necessario ai fini dei successivi sviluppi. La fig. 1.7 mostra la struttura complessiva del navigation message. Il formato alla base del messaggio di navigazione è dato da una trama di 1500 bit, contenente 5 sottotrame, ognuna di lunghezza pari a 300 bit. Una sottotrama contiene 10 parole, ognuna di lunghezza pari a 30 bit. Le sottotrame 1, 2 e 3 sono ripetute in ogni trama. Le ultime sottotrame (4 e 5) hanno 25 differenti versioni, note come pagine, da 1 a 25. Ad un bit rate di 50 bps, la trasmissione di una sottotrama dura 6 secondi, quella di una trama 30 secondi, mentre l’intero messaggio di navigazione viene trasmesso in 12.5 minuti. Le sottotrame di 10 parole iniziano sempre con due parole dedicate, note come Telemetry (TLM) e Handover (HOW) word. La TLM word è la 16 Giulio Mezzana – Roberto Dell’Ariccia prima parola di ciascuna sottotrama e si ripete dunque ogni 6 secondi: contiene un preambolo di 8 bit (utilizzato per la sincronizzazione) seguito da 16 bit riservati e di parità. L’HOW contiene una versione troncata a 17 bit del campo Time Of Week (TOW), seguita da due flags utilizzati per fornire informazioni all’utente riguardo l’Anti-Spoofing, ecc.. I successivi 3 bit indicano l’ID della sottotrama, per indicare in quale delle 5 sottotrame della trama corrente è localizzata l’HOW. In aggiunta alle TLM e HOW, ogni sottotrama contiene 8 parole di dati, sulle quali, però, non entriamo in maggiore dettaglio, rimandando alla letteratura [2]. Fig. 2.7 Struttura del messaggio di navigazione 2.7. Il sistema Galileo I sistemi satellitari attualmente esistenti sono il GPS americano e il GLONASS russo (di cui non tratteremo), nati in piena guerra fredda per applicazioni strettamente militari e il cui utilizzo civile è subordinato alle necessità di impiego militare; da notare che negli ultimi anni GLONASS non viene più mantenuto in perfetta efficienza, per cui l’unico sistema disponibile praticamente su tutto il globo è il GPS. Questo crea una situazione di monopolio che l’Europa ritiene inaccettabile; è nato quindi Galileo, il progetto congiunto tra Comunità Europea e l’ESA (European 17 Giulio Mezzana – Roberto Dell’Ariccia Space Agency) che ha lo scopo di dotare l’Europa di un proprio sistema di localizzazione satellitare, orientato però verso applicazioni civili e commerciali. I Paesi partecipanti al progetto pensano giustamente di acquisire un grosso vantaggio competitivo, attraverso lo sfruttamento commerciale di tutte le potenzialità offerte da Galileo, e l’indipendenza tecnologica, come già avvenuto per Ariane e Airbus nei rispettivi settori. Sebbene il sistema sia pensato per essere completamente indipendente ed autonomo, sarà compatibile ed interoperabile con il GPS; cioè le sue caratteristiche saranno tali da non interferire con il funzionamento del GPS (compatibilità) ed esso potrà anche essere utilizzato congiuntamente con il GPS (interoperabilità). La realizzazione del progetto è stata programmata in tre fasi: Fase di sviluppo (2002-2005): comprende la nascita di 2-4 satelliti, alcune basi di controllo a terra, la validazione del sistema in orbita (IOV, In Orbit Validation) e del lancio del primo satellite sperimentale alla fine del 2005 (Giove A, attualmente in orbita secondo le previsioni); Fase di avanzamento (2006-2007): costruzione e lancio dei satelliti rimanenti e installazione del segmento di terra completo; Fase commerciale (2008). Come abbiamo già detto, i sistemi attualmente esistenti GPS e GLONASS sono stati sviluppati e tuttora gestiti dai rispettivi Dipartimenti della Difesa di Stato per un loro utilizzo in applicazioni di tipo militare. Tuttavia, da quando tali sistemi sono entrati in piena operatività, potendo contare su una costellazione di satelliti completa (in realtà questo è successo solo per il GPS), hanno cominciato a svilupparsi applicazioni in ambito civile. L’oscuramento totale del sistema, e quindi la non disponibilità del sistema stesso, potenzialmente ottenibile attraverso la Selective Availability (cioè la possibilità di introdurre errori arbitrari sui dati 18 Giulio Mezzana – Roberto Dell’Ariccia trasmessi dai SV, riducendone in maniera drastica i requisiti di accuratezza ottenibili) rappresentava, di fatto, il rischio maggiore per gli utilizzatori del GPS (fino alla data di rimozione di questa caratteristica, avvenuta il 02/06/2000). Anche evitando questo scenario limite, dobbiamo comunque notare alcuni elementi negativi del GPS: Una precisione mediocre e mutevole a seconda dei luoghi e dei momenti. Nessuna garanzia di continuità del servizio (il Dipartimento della Difesa americano non è tenuto a segnalare lo "spegnimento" del sistema e neanche un oscuramento parziale con introduzioni intenzionali di errori per scopi bellici in determinate regioni del globo). Bassa copertura nelle aree urbane. Proprio per questi motivi, Galileo si prefigge di rispondere ai requisiti di precisione, affidabilità e sicurezza: Precisione superiore: calcolo della posizione con errore al di sotto dei 4 metri. Affidabilità superiore: ottima copertura anche a latitudini superiori ai 75° e delle aree urbane (95% contro il 50% del GPS); invio del “messaggio di integrità”, che avverte immediatamente l’utente di eventuali errori. Alte percentuali di disponibilità del segnale (availability) e di continuità del servizio (continuity). 2.8. I servizi Il sistema Galileo proporrà molte tipologie di servizio in chiaro o cifrate; vediamole tutte, descrivendole brevemente. Open Service (OS) È un servizio di base, disponibile gratuitamente a tutti gli utenti, che offre informazioni di posizionamento, navigazione e temporizzazione; è destinato in particolare ad applicazioni per il pubblico ed a servizi di 19 Giulio Mezzana – Roberto Dell’Ariccia interesse generale. Sarà concorrenziale allo SPS del GPS ma complementare ad esso, al fine di permettere l’utilizzo di entrambi i sistemi; Galileo avrà comunque una più alta affidabilità e qualità. L’OS non offre alcun servizio di integrità, va tuttavia notato che, già con l’OS, è possibile operare in Dual-Frequency Mode, eliminando così l’errore ionosferico. Le tabelle 1.2 e 1.3 riassumono le caratteristiche dell’OS di Galileo. Tab. 2-2 Caratteristiche dell’Open Service per la sincronizzazione Tab. 2-3 Caratteristiche dell’Open Service per la sincronizzazione Safety of Life Service (SOL) È un servizio di altissima qualità nato per applicazioni concernenti la vita umana, come la navigazione aerea o marittima. Ha la stessa accuratezza dell’OS, ma in più include la conferma dell’esattezza del segnale ricevuto (informazione di integrità) e la garanzia del servizio 20 Giulio Mezzana – Roberto Dell’Ariccia (autenticazione). Tale servizio rende disponibile un messaggio che permette di determinare se l’informazione satellitare ricevuta è affidabile: ciò è indispensabile in molti settori dove occorre una garanzia giuridica ed un elevato tasso di sicurezza. Sebbene disponibile gratuitamente, questo servizio richiede l’uso di ricevitori più sofisticati. La caratteristica essenziale è, in ogni modo, la fornitura di integrità a livello globale ed in modo open. La tab. 1.4 riporta le caratteristiche quantitative del servizio SOL. Tab. 2-4 Caratteristiche del Safety of Life Service Commercial Service (CS) Disponibile a pagamento, attraverso l’uso di un canale cifrato, per gli utenti che richiedano prestazioni di navigazione superiori e dati addizionali. Permetterà lo sviluppo di applicazioni a scopi professionali ed offrirà prestazioni più elevate rispetto al servizio di base, soprattutto in termini di garanzia del servizio. L’accesso sarà controllato a livello del ricevitore mediante l’uso di speciali chiavi di cifratura. Public Regulated Service (PRS) Servizio governativo cifrato e resistente ad oscuramenti ed interferenze, riservato soprattutto alla necessità delle istituzioni pubbliche in materia di 21 Giulio Mezzana – Roberto Dell’Ariccia protezione civile e sicurezza nazionale. Tali applicazioni richiedono requisiti stringenti per la robustezza del segnale rispetto alle interferenze ed una grande continuità. Il servizio PRS è concepito per aumentare la probabilità che, utenti autorizzati dal governo (essenzialmente organismi di polizia e sicurezza) in caso di minacce o in periodi di crisi, possano disporre di un segnale continuo nello spazio e nel tempo. La tab. 1.5 riporta le specifiche del PRS. Tab. 2-5 Caratteristiche del Public Regulated Service Search And Rescue Service (SAR) Servizio di ricerca e salvataggio, destinato a migliorare sensibilmente il sistema esistente. Si tratta dell’integrazione con il sistema russo-americano Cospas-Sarsat per la gestione degli allarmi e la localizzazione di utenti in pericolo al fine di assistere le operazioni di soccorso. Cospas-Sarsat è basato sulla localizzazione del vettore, sia esso terrestre, marittimo o aereo che, dotato di uno speciale trasmettitore, si trovi in situazione di pericolo e necessiti di soccorso. Il segnale d’allarme lanciato da tali trasmettitori viene captato da uno dei satelliti del sistema e inviato a terra: qui una rete di stazioni riceventi lo elabora fino ad ottenere l’indicazione delle coordinate del luogo d’invio del segnale stesso. Il sistema sinora disponibile assicura però una copertura limitata, un tempo 22 Giulio Mezzana – Roberto Dell’Ariccia di attesa elevato (dell’ordine dell’ora) ed una localizzazione approssimativa (nel raggio di 5 Km). Galileo migliorerà sensibilmente le prestazioni di questo sistema da molti punti di vista, garantendo una copertura planetaria, una ricezione quasi in tempo reale (10 minuti di ritardo massimo) ed una localizzazione precisa al metro, in modo che i servizi di salvataggio siano in grado di avviare rapidamente ed efficacemente le operazioni di recupero. La tab. 1.6 riporta le informazioni sul supporto del sistema Galileo al SAR. Tab. 2-6 Supporto del sistema Galileo al Search and Rescue Service 2.9. L’architettura L’architettura del sistema Galileo si articola in tre segmenti, che descriveremo brevemente qui di seguito [4]. Segmento Spaziale Ha la funzione di trasmettere a terra i segnali corrispondenti ai servizi di base forniti dal sistema. Esso è costituito da una costellazione di 30 satelliti, denominata Walker Constellation, disposti ad un’altezza di circa 24000 Km e distribuiti su 3 piani orbitali distinti (10 satelliti per piano); i piani orbitali sono inclinati a formare un angolo di 56° rispetto al piano equatoriale terrestre. In realtà i satelliti operativi sono in totale 27 (9 per ogni piano orbitale), mentre i 3 rimanenti (1 per piano) sono satelliti di riserva, pronti ad entrare in funzione in caso di guasto di un satellite operativo. 23 Giulio Mezzana – Roberto Dell’Ariccia Segmento di Terra Da un punto di vista funzionale, questo segmento è diviso in due sottosistemi logici, il segmento di controllo (GCS, Ground Control Segment) ed il segmento di missione (GMS, Ground Mission Segment). Prima di esaminare il funzionamento dei due segmenti, proponiamo una panoramica delle varie strutture presenti. Il cuore dell’intera struttura è il GCC (Galileo Control Centre), dove si trovano tutti gli elementi di controllo e processamento, quali: SCF, Satellite Control Facility: monitorizza e controlla tutti i satelliti in orbita e supporta le operazioni. MCF, Mission Control Facility: supervisiona i servizi di integrità e navigazione. MGF, Message Generation Facility: ha il ruolo di multiplare in un singolo flusso i dati generati nell’GCC (o da esso ricevuti). OSPF, Orbitography & Synchronisation Processing Facility: determina i parametri di navigazione dei satelliti. PTF, Precision Timing Facility: fornisce un riferimento temporale stabile ed affidabile. SPF, Service Product Facility: gestisce la comunicazione con le entità esterne che scambiano traffico con il GCC. GACF, Ground Assets Control Facility: controlla in tempo reale tutti gli elementi del segmento terrestre. KMC, Key Management Centre: si occupa della gestione e della distribuzione delle chiavi di sicurezza per i servizi ad accesso controllato. Ci sono inoltre le stazioni remote di telemetria e telecomando TT&C (Tracking Telemetry & Control), stazioni che fungono da sensori GSS (Galileo Sensor Station) e stazioni per le trasmissioni verso i satelliti, dette ULS (Up-Link Station). Il compito del segmento di controllo, il GCS, è quello di monitorare costantemente lo stato dei satelliti; SCF, tramite le 5 stazioni TT&C, riceve le telemetrie dai satelliti ed invia a questi ultimi i telecomandi necessari per variare la configurazione delle apparecchiature interne del satellite e/o per correggere l’assetto e l’orbita. 24 Giulio Mezzana – Roberto Dell’Ariccia Il controllo di missione, il GMS, si occupa principalmente dell’implementazione di una serie di funzioni le quali concorrono alla generazione del messaggio di navigazione che porta all’utente tutte le informazioni di navigazione e di tempo, calcolo dell’integrità, broadcast di dati commerciali. Il funzionamento è il seguente: le 29 stazioni GSS ricevono continuamente i segnali trasmessi dai satelliti, elaborano delle informazioni e le inviano all’OSPF, che calcola le orbite dei satelliti e la sincronizzazione temporale del sistema e all’IPS (Integrity Processing Facility) che calcola l’informazione di integrità. I risultati di queste elaborazioni sono inviati all’MCF, nel quale viene generato il messaggio di navigazione. Quest’ultimo viene trasmesso alle 10 stazioni di uplink (ULS) che hanno il compito di inviarlo ai satelliti: questi ultimi computano il tempo di riferimento generato dagli orologi atomici di bordo e lo codificano nel segnale di navigazione che viene trasmesso a terra verso gli utenti. È da notare che il segmento spaziale e quello di terra costituiscono il cosiddetto Galileo Global Component; oltre a questo Galileo prevede anche l’uso di componenti Locali (Galileo Local Component). Questi ultimi sono costituiti da infrastrutture a terra dimensionate ad hoc per soddisfare specifiche esigenze di utenti che richiedono, per aree geografiche limitate, prestazioni più spinte in termini di accuratezza e integrità rispetto a quelle che Galileo è in grado di offrire a livello globale: pensiamo, per esempio, ad un aereo in fase di atterraggio o una nave all’interno di un porto. La fig. 1.8 illustra le interazioni funzionali del segmento di terra di Galileo. 25 Giulio Mezzana – Roberto Dell’Ariccia Fig. 2.8 Il segmento di terra di Galileo Segmento Utente Gli utenti del sistema Galileo avranno a disposizione una vasta gamma di terminali riceventi in funzione dei segnali diffusi dai satelliti e relativi ai diversi servizi di base offerti. In aggiunta a ciò, si avranno anche terminali in grado di lavorare contemporaneamente con i segnali Galileo e GPS, capaci di sfruttare l’interoperabilità dei due sistemi per conseguire delle prestazioni migliori rispetto a quelle ottenibili tramite l’uso di un solo sistema. Una nuova tipologia di terminale sarà richiesta per il servizio SAR, già illustrato in precedenza. La fig. 1.9 illustra la struttura complessiva di Galileo fin qui descritta. 26 Giulio Mezzana – Roberto Dell’Ariccia Fig. 2.9 Overview del sistema Galileo 2.10. Il segnale Galileo I segnali di navigazione utilizzati da Galileo fanno parte del SIS (Signal In Space) del sistema e sono trasmessi in quattro bande di frequenza, indicate in blu nella fig. 1.10 [5]. Le quattro bande di frequenza sono indicate come: E5a, E5b, E6 e la banda E2-L1-E1, e garantiscono un’estesa larghezza di banda per la trasmissione dei segnali Galileo. Le bande di frequenza sono state scelte nell’ambito dello spettro allocato per i servizi di radionavigazione satellitare (RNSS bands) e, in aggiunta a queste, le bande E5a, E5b ed L1 sono incluse nella porzione di spettro allocata per i servizi aeronautici di radionavigazione (ARNS bands), utilizzata dagli utenti dell’aviazione civile e per applicazioni dedicate di sicurezza. 27 Giulio Mezzana – Roberto Dell’Ariccia Fig. 2.10 Piano di utilizzo delle frequenze del sistema Galileo La tab. 1.6 riassume le larghezze di banda degli spettri trasmessi e le frequenze centrali utilizzate. Tab. 2-7 Larghezze di banda e frequenze centrali dei segnali trasmessi Tutti i segnali Galileo saranno trasmessi in polarizzazione circolare destra (RHCP). Come già visto nel sistema GPS, tutti i segnali trasmessi dai satelliti della costellazione Galileo dovranno condividere le stesse bande di frequenza: l’accesso multiplo al mezzo radio sarà ottenuto attraverso la tecnica CDMA, nella quale verranno trasmessi segnali a dispersione di spettro (spread spectrum) caratterizzati da differenti ranging codes per ogni segnale, per ogni frequenza e per ogni satellite. 28 Giulio Mezzana – Roberto Dell’Ariccia Passiamo ora ad una breve descrizione dei segnali di navigazione trasmessi da ciascun satellite Galileo, che vanno sotto i nomi di segnali L1F, L1P, E6C, E6P, E5A e E5B: L1F: è un segnale ad accesso libero trasmesso nella banda L1, comprendente un canale di dati ed un canale pilota (rispettivamente le componenti di segnale L1-B e L1-C). Viene codificato con codici di ranging non criptati, unitamente ai dati del messaggio di navigazione, che sono quindi accessibili da tutti gli utenti. I dati di navigazione di L1F corrispondono al tipo di messaggio classificato come I/Nav, e contengono messaggi di integrità insieme a dati commerciali criptati. LIP: è un segnale ad accesso limitato trasmesso sul canale L1-A. I ranging codes ed i dati di navigazione sono dunque criptati utilizzando un algoritmo di cifratura governativo. I dati di navigazione di L1P corrispondono al tipo di messaggio classificato come G/Nav. E6C: è un segnale ad accesso commerciale trasmesso nella banda E6, comprendente un canale di dati ed un canale pilota (rispettivamente le componenti di segnale E6-B e E6-C). I ranging codes ed i dati di navigazione sono criptati utilizzando un algoritmo di cifratura commerciale. I dati di navigazione di E6C corrispondono al tipo di messaggio classificato come C/Nav. E6P: è un segnale ad accesso limitato trasmesso sul canale E6-A. I ranging codes ed i dati di navigazione sono dunque criptati utilizzando un algoritmo di cifratura governativo. I dati di navigazione di E6P corrispondono al tipo di messaggio classificato come G/Nav. E5a: è un segnale ad accesso libero trasmesso nella banda E5, comprendente un canale di dati ed un canale pilota (rispettivamente le componenti di segnale E5a-I ed E5a-Q). Viene codificato con codici di ranging non criptati, unitamente ai dati del messaggio di navigazione, che sono quindi accessibili da tutti gli utenti. I dati di navigazione di E5a corrispondono al tipo di messaggio classificato come F/Nav, e contengono i dati 29 Giulio Mezzana – Roberto Dell’Ariccia basilari per il supporto delle funzioni di navigazione e di sincronizzazione. E5b: è un segnale ad accesso libero trasmesso nella banda E5, comprendente un canale di dati ed un canale pilota (rispettivamente le componenti di segnale E5b-I ed E5b-Q). Viene codificato con codici di ranging non criptati, unitamente ai dati del messaggio di navigazione, che sono quindi accessibili da tutti gli utenti. I dati di navigazione di E5b corrispondono al tipo di messaggio classificato come I/Nav, e contengono messaggi di integrità insieme a dati commerciali criptati. La tab. 1.8 mostra la corrispondenza fra le bande di frequenza ed i servizi presentati in precedenza. Galileo Service E5 Open Service √ Commercial Service √ Safety of Life Service √ Public Regulated Service E6 L1 √ √ √ √ √ Tab. 2-8 Matrice di corrispondenza fra i segnali ed i servizi Galileo Vi sono diverse caratteristiche da evidenziare nella struttura dei segnali Galileo rispetto a quello che abbiamo discusso a proposito dei segnali GPS. In primo luogo, mentre nel GPS si rendono disponibili solamente due portanti a RF (L1 ed L2), nel sistema Galileo ve ne sono diverse, usate per garantire i servizi visti prima. Il punto per comprendere l’occupazione spettrale è capire che si è cercato di mantenere il più possibile la piena compatibilità fra GPS e Galileo; occorre dunque che la banda centrale sia la stessa, per poter avere sulla media frequenza sia il segnale GPS che quello di Galileo. Alla luce di questo può, per esempio, essere spiegata l’allocazione spettrale delle bande E2 ed E1 che sono poste a cavallo della banda L1 del GPS. A causa della vicinanza di alcune frequenze, i segnali di Galileo, a differenza di quelli del GPS, sono trasmessi utilizzando tecniche di modulazione digitale (in particolare la modulazione BOC – Binary Offset Carrier) per evitare di occupare la parte 30 Giulio Mezzana – Roberto Dell’Ariccia centrale dello spettro che risulta già occupata dai segnali GPS. In ultimo, si può evidenziare come i segnali propri di Galileo utilizzino due codici di ranging per ciascuna frequenza: i dati sono sovrapposti solo ad uno di essi, mentre l’altro è privo di dati e ha la funzione di codice pilota (Pilot Channel) per fornire misure di navigazione più precise e robuste (sempre allo scopo già evidenziato di migliorare le prestazioni rispetto ai sistemi GNSS di prima generazione quali il GPS). I segnali E5a ed E5b sono modulati sulla singola portante E5 utilizzando una tecnica conosciuta come AltBOC (Alternative Binary Offset Carrier, verrà descritta in seguito): il segnale complessivo è chiamato E5 e può essere processato come un segnale unico da un appropriato ricevitore utente. Un riassunto delle caratteristiche dei segnali appena presentati è riportato in tab. 1.9. Galileo Signals RF channels Nav. Message type Description Ranging Code Encryption Data Encryption L1F Signal L1-B L1-C I/Nav Open access code signal carrying integrity data. No Partial L1P Signal L1-A G/Nav Restricted access code and data signal. Governmental Governmental E6C Signal E6-B E6-C C/Nav Controlled access code carrying encrypted commercial data. Commercial Commercial E6P Signal E6-A G/Nav Restricted access code and data signal. Governmental Governmental E5a Signal E5a-I E5a-Q F/Nav Open access code. No No E5b Signal E5b-I E5b-Q I/Nav Open access code signal carrying integrity data. No Partial E5 Signal Combination of E5a and E5b signals Tab. 2-9 Riassunto delle caratteristiche salienti dei segnali di navigazione Galileo Per concludere questa carrellata sui segnali utilizzati nel sistema Galileo, mostriamo infine, nella fig. 1.11, gli spettri dei segnali trasmessi, le frequenze allocate e le corrispondenze con i servizi descritti nel §1.4.1. L’andamento spettrale molto particolare dei segnali con modulazione BOC sarà descritto dettagliatamente nel cap. 2. 31 Giulio Mezzana – Roberto Dell’Ariccia Fig. 2.11 Overwiev degli andamenti spettrali dei segnali i navigazione Galileo 32 Giulio Mezzana – Roberto Dell’Ariccia 3. SEGNALI DI NAVIGAZIONE GNSS 3.1. Introduzione In questa sezione descriveremo nel dettaglio la struttura dei segnali GPS e GALILEO, le loro caratteristiche e le proprietà generali. Poiché entrambi i sistemi fanno uso di una particolare tecnica di accesso multiplo, nota come CDMA (Code Division Multiple Access) che a sua volta si basa sul sistema di “Spread Spectrum”, introdurremo per primi i capisaldi di questi sistemi. Il capitolo prosegue con una descrizione dettagliata della struttura di entrambi i segnali; seguirà poi una breve discussione generale del formato del messaggio di navigazione (Navigation Data). Verrà inclusa anche, per entrambi i sistemi, una panoramica delle proprietà di cross-correlazione e di autocorrelazione dei segnali trasmessi: questa sezione, in particolare, risulterà propedeutica per la comprensione delle tecniche di acquisizione implementate nel seguito. Infine saranno trattati i livelli del segnale a radio frequenza e saranno discussi i rapporti segnale a rumore (SNR) tipici dei sistemi, per rendere le simulazioni trattate nei capitoli seguenti più aderenti al modello reale. 3.2. Sistemi di accesso multiplo a spettro disperso Il sistema di accesso multiplo CDMA (Code Division Multiple Access) utilizzato nei sistemi di radionavigazione satellitare, si basa su una tecnica di codifica nota come tecnica di Spread Spectrum: il principio di questa modalità è fondato sullo speading della banda del segnale da trasmettere su una banda molto più larga, per fare in modo che il segnale risulti maggiormente immune ai disturbi di natura rumorosa o interferente, anche intenzionali (p. es. jammer). In particolare, il segnale di dati da trasmettere D(t) di banda Bd, viene modulato su di una portante sinusoidale per formare il segnale d(t), la cui banda viene in seguito allargata (spread 33 Giulio Mezzana – Roberto Dell’Ariccia spectrum) fino a raggiungere un valore Bs >> Bd. L’allargamento della banda può essere ottenuto moltiplicando la portante (modulata dai dati) con una forma d’onda s(t) a banda molto larga (si parla in questo caso, che è l’unico che analizzeremo, di Direct Sequence Spread Spectrum, DSSS). Un sistema semplificato basato sulla tecnica DSSS è mostrato in fig. 2.1. A B C D Fig. 3.1 Schematizzazione della tecnica DSSS La figura mostra un convenzionale trasmettitore a modulazione bifase (all’estrema sinistra) seguito da un’operazione di spread spectrum; la trasmissione avviene su un canale rumoroso ed infine i dati pervengono ad un ricevitore che opera il despreading. Una sequenza di dati binari D(t), con valori D = ±1 ed un rate di trasmissione pari a fd, viene prima di tutto modulata su una portante a potenza Pd per dar luogo al segnale a banda stretta d(t) da trasmettere: d (t ) D(t ) 2 Pd cos2f 0 t (2.1) 34 Giulio Mezzana – Roberto Dell’Ariccia Questo segnale, con larghezza di banda Bd, è quindi sottoposto all’operazione di spreading (nella modalità Direct Sequence) mediante l’uso di un segnale pseudo-random binario s(t), con s(t) = ±1 ed un bit rate pari a fc, molto più grande del bit rate dei dati (i.e. fc >> fd). Nel caso semplificato in cui, sia i dati trasmessi che i codici di spreading siano randomici, è possibile esprimere le densità spettrali di potenza per entrambi i segnali d(t) e s(t) come segue: Gd ( f ) 1 sin f / f d /f d 2 fd (2.2) Gs ( f ) 1 sin f / f c /f / f c 2 fc (2.3) A seguito dell’operazione di allargamento dello spettro, il segnale complessivamente trasmesso assume la forma seguente: s 0 (t ) s (t ) d (t ) s(t ) D (t ) 2 Pd cos( 2f 0 t ) (2.4) nella quale il segnale di spreading può essere espresso come segue: s (t ) S n p (t nTc ) (2.5) n dove p(t) rappresenta un impulso rettangolare unitario sull’intervallo {0, Tc = 1/fc} e Sn = ±1 rappresenta una sequenza random (o pseudorandom). Più in generale, p(t) può rappresentare un impulso filtrato, mentre si possono utilizzare differenti forma d’onda s(t) per lo spreading, che possono modulare separatamente le componenti in fase e in quadratura del segnale da trasmettere, anche se in questo esempio abbiamo ristretto la discussione ad impulsi rettangolari e ad una modulazione BPSK (in quanto queste caratteristiche saranno prese in considerazione nel prosieguo della trattazione). La modalità di Spread Spectrum descritta, che come abbiamo detto è nota sotto l’acronimo DSSS, non è tuttavia l’unica possibile (esistono anche altre modalità quali per es. il Frequency-Hopping SS, FHSS), ma è quella su 35 Giulio Mezzana – Roberto Dell’Ariccia cui concentreremo l’interesse in quanto è la modalità correntemente utilizzata nei sistemi GNSS. Il segnale DSSS attraversa quindi un canale con rumore additivo bianco n(t) caratterizzato da una densità spettrale di potenza N0. In ricezione viene generata una replica identica e perfettamente sincronizzata temporalmente del segnale di spreading s(t), che viene quindi correlata (moltiplicata e filtrata) con il segnale rumoroso ricevuto sul canale. Il fatto che la replica ricevuta debba essere accuratamente sincronizzata nel tempo è, come si vedrà nel seguito, la proprietà fondamentale che permette al sistema di ottenere accurate informazioni di sincronizzazione e di ranging. In ricezione, quindi, l’operazione di moltiplicazione ha lo scopo di convertire il segnale d(t)·s(t) in d(t)·s(t)2 = d(t), dal momento che s(t)2 = 1; in questo modo, il segnale a spettro espanso DSSS viene nuovamente compresso alla sua larghezza di banda originale (despreading), rimanendo sul segnale solamente la modulazione dei bit di dati. La densità spettrale di potenza del rumore è ancora N0, in quanto il rumore non è correlato con il segnale DSSS, e dopo la correlazione si ha ancora rumore bianco Gaussiano. A questo punto, filtrando l’uscita del moltiplicatore con un filtro passabanda centrato intorno alla portante, il segnale d(t) arriverà agli stadi successivi relativamente non distorto, mentre solamente una frazione della potenza del rumore sarà passata attraverso il filtro, con potenza N0·Bd. Il grande vantaggio nell’uso dei sistemi Spread Spectrum sta proprio nella loro robustezza rispetto al rumore ed agli interferenti: infatti, spargere la potenza del segnale su una banda più larga, ha fatto sì che il rumore intaccasse di meno la potenza del segnale di partenza; inoltre un segnale DSSS ha un livello di densità di potenza paragonabile al livello di rumore, ed è quindi difficilmente intercettabilei. In generale, un segnale DSSS è roiibusto rispetto ad una larga classe di interfenti. Abbiamo assunto che la sequenza di spreading s(t) fosse una sequenza random: in effetti non è possibile generare sequenze puramente random, quindi in generale si farà riferimento a sequenze pseudo-random, cioè sequenze che presentino caratteristiche spettrali il più possibile simili a quelle delle sequenze genuinamente random, ma che siano di fatto 36 Giulio Mezzana – Roberto Dell’Ariccia completamente deterministiche. Va ricordato che una sequenza binaria completamente randomica presenta una serie equiprobabile di occorrenze pari a ±1. Questa sequenza, ad un rate fc, può essere usata per generare la forma d’onda dell’espressione (2.5), che presenta una funzione di autocorrelazione triangolare ed una densità spettrale di potenza con andamento proporzionale a [sinc(f)]2. Come vedremo fra breve, una approssimazione soddisfacente di queste fondamentali proprietà delle sequenze genuinamente randomiche può essere ottenuta dalle sequenze cosiddette pseudo-random, che possono essere generate attraverso l’uso di opportuni registri a scorrimento con feedback. In questo modo, saremo in grado, in ricezione, di riprodurre una replica della forma d’onda trasmessa e, facendo uso delle proprietà di autocorrelazione dei codici pseudo-random, di sincronizzare in modo accurato questa replica con il segnale ricevuto. Per concludere questo paragrafo, sottolineiamo che la tecnica DSSS ha la capacità di abilitare l’accesso multiplo di più utenti nello stesso tempo e sulla stessa banda, dando luogo ad un accesso multiplo a divisione di codice (CDMA). L’accesso multiplo a divisione di codice permette ai vari utenti di condividere esattamente lo stesso canale in frequenza, con una interferenza multiutente limitata, se il numero totale di segnali M non è troppo grande. Questa caratteristica di accesso multiplo è fondamentale nei sistemi di radionavigazione satellitare, in quanto un ricevitore può ricevere simultaneamente anche 10 segnali GNSS da 10 differenti SV, tutti collocati nello stesso canale in frequenza e continui nel tempo (cioè senza far uso di slot temporali). Nei sistemi CDMA l’accesso multiplo avviene nel dominio dei codici: vi è quindi la necessità che i diversi satelliti della costellazione trasmettano utilizzando codici differenti (per poter distinguere un satellite dagli altri) e che inoltre i codici utilizzati siano il più possibile ortogonali fra loro (per far si che i segnali non causino un’eccessiva interferenza mutua). In generale non sarà possibile far sì che i segnali trasmessi dai vari SV siano perfettamente ortogonali per ogni ritardo; tuttavia si ottengono ancora buone prestazioni nell’accesso multiplo selezionando i diversi codici pseudo-random per lo spread 37 Giulio Mezzana – Roberto Dell’Ariccia spectrum facendo in modo che siano quasi del tutto incorrelati fra loro, per ogni possibile ritardo temporale. Tali codici sono noti come PRN (PseudoRandom Noise) e verranno ripresi più dettagliatamente nel seguito. 3.3. Struttura del segnale GPS In questo paragrafo descriveremo nel dettaglio la struttura del segnale GPS. Il Global Positioning System, che come abbiamo visto è un sistema basato sulla tecnica di accesso multiplo CDMA, utilizza fondamentalmente due tipi diversi di codici per ottenere lo spreading dello spettro del segnale: i Coarse/Acquisition Codes (C/A Codes, utilizzati in ambito civile) ed i Precision Codes (P Codes, utilizzati in ambito militare). Va rilevato che il codice P non è direttamente trasmesso dal SV, ma viene prima criptato da un codice di sicurezza, noto come Y Code: perciò ci riferiremo al codice P criptato indicandolo, come d’uso comune, con P(Y) Code. Il codice P(Y), a causa della cifratura, non è disponibile per l’uso civile (in quanto si deve disporre di un opportuno codice di decifrazione) ed è invece principalmente usato a scopo militare (i dati del codice P(Y) sono spesso indicati come Classified Data). Per questo motivo, qui e nel seguito, tratteremo il codice P(Y) solo marginalmente, e unicamente negli aspetti fondamentali e rilevanti ai fini delle nostre simulazioni. Diverso è invece il discorso sul codice C/A, sul quale focalizzeremo maggiormente la nostra attenzione. 3.3.1. Generazione e modulazione del segnale su L1 Daremo ora una descrizione più dettagliata della generazione del segnale, descrizione che sarà utile per la concreta implementazione al calcolatore del simulatore di segnale. È chiaro che, per quanto finora visto, si pongono fondamentalmente due importanti questioni: come multiplare i due codici C/A e P(Y) su una singola portante e, inoltre, come garantire l’accesso multiplo ai vari segnali GPS che devono essere ricevuti dai differenti SV nell’ambito delle bande di frequenza disponibili. 38 Giulio Mezzana – Roberto Dell’Ariccia Durante la fase di progettazione del sistema GPS, sono state prese in considerazione differenti possibili bande di frequenza per la sistemazione del segnale da trasmettere; inoltre, anche la struttura stessa del segnale è stata scelta fra un insieme di possibili alternative. Per questo, le caratteristiche del segnale trasmesso dal satellite potrebbero essere modificate in futuro (e questo è tanto più vero per il segnale GALILEO, che è ancora in fase di definizione). Tuttavia, al momento attuale, la frequenza L1 contiene entrambi i codici C/A e P(Y), mentre la frequenza L2 contiene solamente il codice P(Y) (e pertanto non può essere utilizzata dagli utenti del servizio civile, noto come SPS – Standard Positioning System). Più in dettaglio, il segnale L1 trasporta i codici di spread spectrum sia per l’uso civile che militare, multiplati in fase ed in quadratura su una singola portante a RF. Inoltre, i segnali provenienti dai differenti SV devono condividere lo stesso canale in frequenza: questo è ottenuto facendo uso della tecnica di accesso multiplo CDMA, descritta in precedenza. La fig. 2.2 mostra gli spettri dei segnali trasmessi per entrambi i canali L1 ed L2; la fig. 2.3, invece, fornisce uno schema a blocchi del sistema di generazione dei due segnali [1]. Fig. 3.2 Spettri dei segnali sulle frequenze L1 ed L2 Come si vede dalla prima figura, il picco della densità spettrale di potenza del segnale C/A si trova al disopra della curva riferita al codice P: per la precisione la differenza è di circa 13 dB, in quanto il codice P è 39 Giulio Mezzana – Roberto Dell’Ariccia attenuato di 3 dB rispetto al codice C/A (vedi fig. 2.3) ed inoltre quest’ultimo ha un chip rate (e quindi una larghezza di banda) che è pari ad 1/10 di quella del codice P. Per quanto riguarda invece la fig. 2.3, il diagramma a blocchi va letto da sinistra verso destra: all’estrema sinistra, il segnale di clock principale, con una frequenza di 10.23 MHz, pilota i blocchi rimanenti. La frequenza base è moltiplicata per 154 e per 120 per generare i segnali portanti alle frequenze L1 ed L2, come indicato dalle (1.4). Nell’angolo in basso a sinistra si può notare un limitatore, che ha il compito di stabilizzare il segnale di clock prima di usarlo per pilotare i generatori dei codici P(Y) e C/A. Ancora più in basso, il blocco “Data Generator” si occupa della generazione dei dati del messaggio di navigazione. I generatori di codice ed il generatore dei dati sono sincronizzati attraverso il segnale X1 provvisto in uscita dal generatore del codice P(Y). Fig. 3.3 Schema a blocchi della generazione del segnale GPS Dopo la parte di generazione del codice, i due codici così ottenuti sono combinati con i dati di navigazione attraverso due operazioni di OR esclusivo (XOR, eXclusive OR), che operano semplicemente la somma 40 Giulio Mezzana – Roberto Dell’Ariccia modulo-2 degli addendi. L’operazione di XOR mostrata nello schema è utilizzata su sequenze binarie rappresentate da 0 ed 1, e le sue proprietà sono mostrate nella tab. 2.1: Input 1 Input 2 Output (XOR) 0 0 0 0 1 1 1 0 1 1 1 0 Tab. 3-1 Tabella di verità dell’operazione di XOR Va tuttavia notato che, per meglio rappresentare le proprietà spettrali e di autocorrelazione dei codici di spreading, si dovranno convertire le sequenze binarie unipolari in uscita ai generatori di codice come sequenze bipolari di 1 e -1. Adottando quest’altra rappresentazione, è semplice mostrare che, in luogo dell’operazione di XOR, si può utilizzare l’ordinaria moltiplicazione bit a bit. Infatti, le corrispondenti proprietà della moltiplicazione riportate nella tabella 2.2, dimostrano che i risultati sono gli stessi, dopo aver sostituito 0 con -1, e a meno di una ininfluente inversione di segno. Output Input 1 Input 2 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 (Moltiplicazione) Tab. 3-2 Tabella di verità della moltiplicazione I codici C/A e P(Y), moltiplicati per i dati di navigazione, costituiscono l’input per i due modulatori (uno per il segnale in fase e l’altro per quello in quadratura) della frequenza L1: qui i due segnali sono modulati sulla frequenza portante usando la modulazione BPSK (Binary Phase Shift 41 Giulio Mezzana – Roberto Dell’Ariccia Keying), garantendo così una portante modulata ad inviluppo costante, anche se i due segnali presentano differenti livelli di potenza. Si noti che, il fatto che i due codici siano modulati uno in fase ed uno in quadratura, è rappresentato dallo shift di fase di 90° fra i codici stessi. Infine, il ramo che trasporta il codice P(Y) viene attenuato di 3 dB, dopodiché i due segnali così risultanti sono sommati, dando luogo al segnale su L1. La tecnica CDMA consente l’accesso multiplo garantendo la separazione dei diversi segnali nel dominio dei codici, facendo uso di sequenze con specifiche proprietà di cross-correlazione. Dalla descrizione appena conclusa del sistema di generazione, è possibile rappresentare matematicamente il segnale trasmesso dal satellite k-mo sulla frequenza L1 (che è quella che analizzeremo nelle simulazioni dei capitoli seguenti): s Lk1 (t ) 2PC C k (t ) Dk (t ) cos(2f L1t k ) 2PPL1 P k (t ) D k (t ) sin(2f L1t k ) (2.6) dove PC e PPL1 rappresentano le potenze dei codici C/A e P(Y), Ck è la sequenza di codice C/A assegnata al k-mo satellite, Pk è la sequenza di codice P(Y) assegnata al k-mo satellite, Dk è la sequenza dei dati del messaggio di navigazione, fL1 e fL2 sono le frequenze portanti, rispettivamente, di L1 ed L2, ed infine kè la fase iniziale trasmessa dal SV considerato. Per chiarire quanto finora esposto, la fig. 2.4 illustra le tre parti che compongono il segnale sulla frequenza L1. Come si può vedere dalla figura, conformemente a quanto esposto, il codice C/A si ripete ogni millisecondo, mentre un bit del messaggio di navigazione ha la durata di 20 millisecondi: questo significa che, per ogni bit del messaggio di navigazione, il segnale risultante contiene 20 ripetizioni complete del codice C/A. 42 Giulio Mezzana – Roberto Dell’Ariccia Fig. 3.4 Modalità di spreading dei bit del messaggio di navigazione La fig. 2.5 illustra invece la modalità di generazione del segnale su L1, per un dato SV, mediante modulazione BPSK del codice C/A e dei dati sull’onda portante. Il segnale risultante che viene trasmesso è il prodotto dei tre segnali, come mostra la parte bassa della figura: perciò, quando il bit del massaggio di navigazione è pari ad 1, il segnale risultante è sottoposto ad una rotazione di fase di 180° ogni volta che il codice C/A passa da 1 a -1 o viceversa. Quando invece si ha una variazione da 1 a -1 del bit del messaggio di navigazione, come avviene nel mezzo della figura, anche la fase del segnale risultante sui 20 ms è ruotata di 180°. Fig. 3.5 Generazione del segnale GPS su L1 43 Giulio Mezzana – Roberto Dell’Ariccia 3.3.2. Sequenze PRN In questo paragrafo affronteremo la descrizione delle sequenze di spreading usate nel sistema GPS. Descriveremo principalmente il codice C/A in quanto il codice P(Y), essendo criptato, non potrà naturalmente essere simulato nei dettagli (per maggiori dettagli sul codice P(Y) si veda [2]). Le sequenze utilizzate per il codice C/A devono essere tali da presentare le desiderate caratteristiche, in termini di cross-correlazione, tali da permettere bassa interferenza dovuta all’accesso multiplo al mezzo radio: in particolare, i segnali utilizzati appartengono alla famiglia, molto importante, dei codici Pseudo-Random Noise (PRN) (così chiamati per le loro peculiari caratteristiche spettrali e di autocorrelazione che possono essere ricondotte a quelle tipiche delle sequenze genuinamente random) conosciuti come codici di Gold (in quanto fu proprio R. Gold a scoprirli nel 1967). Queste sequenze sono generate dal prodotto di due sequenze PRN di 1023 bit ciascuna, che vengono indicate come G1 e G2 (Gold 1 e Gold 2). I codici G1 e G2 sono generati da due registri lineari a scorrimento (shift register) con feedback, che danno luogo a sequenze a massima lunghezza (MLS – Maximum Length Sequence), utilizzate perché presentano importanti proprietà di correlazione, come vedremo fra breve. I registri utilizzati per i segnali GPS, che hanno una lunghezza pari a 10 e sono inizializzati con tutti ‘1’, permettono di generare sequenze MLS di lunghezza pari a 210 - 1 = 1023 (in generale è possibile dimostrare che un registro di lunghezza n genera sequenze MLS di lunghezze 2n – 1). Suddetti registri per la generazione di G1 e G2 sono mostrati in fig. 2.6 [7], nella quale si osserva come il feedback sia realizzato mediante dei sommatori modulo-2. 44 Giulio Mezzana – Roberto Dell’Ariccia Fig. 3.6 – Shift regiter per la generazione dei codici di Gold Il segnale C/A effettivamente trasmesso è dato dalla somma modulo-2 bit a bit dei 1023 chip in uscita ai registri di G1 e G2, ed ha un chip rate di 1.023 Mchip/s. Dunque il periodo del codice C/A è relativamente breve e pari ad 1 ms: questa caratteristica è stata appositamente scelta per permettere che l’acquisizione possa avvenire in tempi rapidi, come vedremo, infatti, ci sono solo 1023 code bins da esplorare per la ricerca. Ogni periodo di 1023 chip, gli shift register vengono resettati ad ’1’, facendo sì che il codice ricominci ciclicamente dall’inizio. Le configurazioni di feedback sono identificate dai polinomi caratteristici, che indicano quali prese del registro devono essere considerate nella somma; il codice G1 ha sempre la stessa configurazione data dal seguente polinomio: G1( X ) 1 X 3 X 10 (2.7) intendendo il fatto che gli stati ‘3’ e ‘10’ del registro vengono sommati fra loro, ed il risultato viene mandato indietro per aggiornare il primo stato (feedback). In maniera analoga, il registro del codice G2 utilizza il seguente polinomio caratteristico: 45 Giulio Mezzana – Roberto Dell’Ariccia G 2( X ) 1 X 2 X 3 X 6 X 6 X 8 X 9 X 10 (2.8) Per differenziare i codici C/A dei vari SV, le uscite dei due shift register sono combinate in maniera particolare: il registro di G1 fornisce l’output dello stato ‘10’ del registro, mentre il registro di G2 fornisce l’output come somma modulo-2 di 2 stati che variano per ciascun SV. La selezione degli stati da sommare è chiamata selezione di fase, in quanto si può dimostrare facilmente che la sequenza che si ottiene in questo modo, altri non è che la versione ritardata di G2 stesso, cioè con una differente fase (è questa infatti, una delle proprietà delle sequenze MLS, basata sullo studio dei campi di Galois di cui fanno parte le sequenze, [2]) . Il ritardo di fase di G2 dipende proprio da quali stati si selezionano per la somma: in questo modo, quindi, la scelta degli stati da sommare determina univocamente l’identità del SV. La tabella 2.3 [6] mostra le combinazioni delle prese per ogni codice C/A utilizzato dai SV, il corrispondente ritardo introdotto su G2, oltre ai primi 10 chip espressi in notazione ottale. Dalla tabella si può notare come solo i primi 32 codici, sui 37 possibili definiti nel GPS-ICD-200, sono utilizzati come codici C/A per i satelliti (ma solo 24 SV sono in orbita); i rimanenti cinque codici sono riservati per altri usi, come per es. le trasmissioni da terra (i.e. pseudoliti). Inoltre si può vedere che i codici C/A dei segnali PRN n°34 e n°37 sono gli stessi. 46 Giulio Mezzana – Roberto Dell’Ariccia Tab. 3-3 Corrispondenze fra i codici di spreading ed i SV ad essi associati 3.3.3. Proprietà di correlazione dei codici C/A Le più importanti proprietà dei codici C/A, soprattutto per quel che concerne le problematiche di acquisizione sviluppate nella presente tesi, riguardano l’operazione di correlazione fra i codici. I codici di Gold sono stati scelti proprio perché posseggono particolari caratteristiche rispetto ad altre sequenze, che possono riassumersi nelle due principali di seguito elencate: 1. Picchi bassi nell’autocorrelazione quasi per ogni ritardo, ad eccezione del ritardo nullo: tutti i codici C/A sono quasi del 47 Giulio Mezzana – Roberto Dell’Ariccia tutto incorrelati con loro stessi, ad eccezione di quello che accade per ritardi nulli. È proprio questa importante proprietà che permette di distinguere facilmente fra di loro due diversi codici di Gold quando sono sovrapposti. Più in particolare, l’autocorrelazione per il satellite k-mo che trasmette il codice Ck è data da: 1022 Rk ,k (n) C k (l ) C k (l n) 0, n 1 (2.9) l 0 mentre per n=0 si osserva un picco molto ampio nell’autocorrelazione. 2. Picchi bassi per ogni ritardo nella cross-correlazione: tutti i codici C/A sono praticamente incorrelati fra di loro, per ogni ritardo. Questo significa che, per due codici Ci e Ck (trasmessi rispettivamente dai SV i e k), la cross correlazione può essere scritta come: 1022 Ri ,k ( n ) C i ( l ) C k ( l n ) 0,n (2.10) l 0 Queste due proprietà, tipiche dei codici di Gold, sono fondamentali per permettere la demodulazione dei segnali in ricezione, e possono far sì che si abbia un ampio intervallo di segnali acquisiti. Per poter rilevare un segnale utile a bassa potenza in presenza di un altro segnale interferente più potente, il picco della funzione di autocorrelazione (ACF – Autocorrelation Function) del segnale utile deve essere più alto del picco di cross-correlazione fra il segnale utile ed il segnale interferente. Se i codici fossero perfettamente ortogonali, la cross-correlazione sarebbe nulla; tuttavia va notato che i codici di Gold non sono perfettamente ortogonali, e quindi la cross-correlazione fra le diverse sequenze non sarà nulla, ma sarà comunque contenuta entro bassi valori. Quanto appena detto è ben evidenziato dalla figura 2.7, che mostra un esempio delle proprietà di autocorrelazione dei codici C/A: come ci aspettavamo, visto che la figura è riferita all’autocorrelazione di un particolare satellite (il SV n°15), si 48 Giulio Mezzana – Roberto Dell’Ariccia evidenzia un picco in corrispondenza al ritardo nullo e bassi valori per tutti gli altri ritardi. Fig. 3.7 Proprietà di correlazione dei codici C/A: autocorrelazione del codice C/A per il SV 15 Il picco dell’autocorrelazione della figura 2.8 risulta essere pari a 1023 (come mostra lo zoom di fig. 2.8), che altri non è che la lunghezza del codice C/A; i valori assunti negli altri ritardi sono pari ai valori assunti dalla correlazione in corrispondenza ad ogni ritardo, che sono calcolabili in base alla tabella 2.4 a pagina seguente. 49 Giulio Mezzana – Roberto Dell’Ariccia Fig. 3.8 Proprietà di correlazione dei codici C/A: autocorrelazione del codice C/A per il SV 15 - zoom Tab. 3-4 Valori di cross-correlazione dei codici di Gold Per i codici C/A, il numero di registri n è pari ed uguale a 10, perciò P=1023. Usando le relazioni presenti nella tabella, i valori di crosscorrelazione sono: -65/1023 (il 12.5% delle volte), -1/1023 (il 75% delle volte), e 63/1023 (12.5% delle volte). Considerando però che, come detto, il picco dell’ACF non è unitario ma pari a 1023, i tre valori assunti dalla 50 Giulio Mezzana – Roberto Dell’Ariccia cross-correlazione risultano essere: 63, -1 e -65: 1023 rappresenta dunque il guadagno di processo nell’autocorrelazione. Va sottolineato che, per poter generare i grafici di figg. 2.7-2.8, i chip in uscita al generatore di codici C/A (descritto in precedenza) devono assumere valori pari a 1 e -1, invece che 1 e 0 (vanno quindi convertiti da valori unipolari a valori bipolari). Infine, la fig. 2.9 mostra il grafico della cross-correlazione fra due SV scelti arbitrariamente: come ci si aspettava, si osservano bassi valori per ogni ritardo, secondo la (2.10). Inoltre tali valori, unitamente alle rispettive probabilità, sono ancora calcolabili in base alla tab. 2.4. Fig. 3.9 Proprietà di cross-correlazione dei codici C/A: cross-correlazione fra i codici dei SV 15 e 31 51 Giulio Mezzana – Roberto Dell’Ariccia 3.3.4. Livelli di potenza e rapporti segnale-rumore del segnale GPS a RF I minimi livelli di potenza specificati per il segnale GPS ricevuto da un utente che utilizza un’antenna a 0 dBIC sono riassunti nella tabella 2.5, per un SV che sia in vista con angoli di elevazione superiori ai 5 gradi. In realtà, il minimo valore realmente ricevuto varia con l’angolo di elevazione del satellite, a causa della forma del pattern d’antenna: in ogni caso, i valori riportati in tabella si riferiscono al caso peggiore di minima potenza ricevuta conformemente ai valori riportati nel GPS-ICD-200 [6], al variare dell’angolo di elevazione. Link P(Y) C/A L1 -163 dBW -160 dBW L2 -166 dBW -166 dBW Tab. 3-5 Minimi livelli di potenza dei segnali GPS ricevuti all’uscita di un’antenna 0 dBIC con polarizzazione circolare destra (RHCP – Rigth-Hand Circular Polarization) [6]. Le densità spettrali di potenza per le componenti di segnale C/A e P(Y) sono mostrate in fig. 2.2: si noti, al centro dello spettro, il picco (a banda stretta) a più alta densità spettrale di potenza, proprio del codice C/A. È molto importante sottolineare che questi spettri sono gli spettri in trasmissione: in condizioni normali, infatti, il rumore termico bianco del ricevitore supera abbondantemente i livelli di densità spettrale del segnale utile, ed il segnale (come vedremo anche nelle nostre simulazioni) non è visibile utilizzando un analizzatore di spettro, in quanto si trova completamente al di sotto del rumore. È molto utile ora andare a stimare i livelli di densità di potenza e di SNR attesi in ricezione, per poter rendere quanto più possibile realistiche le simulazioni dei segnali ricevuti dal nostro sistema di acquisizione. Per prima cosa, andiamo a calcolare i livelli di densità di potenza del rumore in termini di figura di rumore del ricevitore. In uno schema convenzionale di ricezione, il segnale ricevuto dall’antenna è inviato lungo una linea di trasmissione, filtrato in banda, e 52 Giulio Mezzana – Roberto Dell’Ariccia infine inviato ad un amplificatore a bassa cifra di rumore (LNA), come mostrato dalla fig. 2.10. LINEA DI TRASMISSIONE & FILTRO PASSABANDA LNA Fig. 3.10 Configurazione del primo stadio dello schema di ricezione La densità (monolatera) di rumore ricevuta, come noto dai corsi di comunicazione elettrica, è pari a N 0 Teq , dove la temperatura equivalente di rumore è definita come segue: Teq T A L 1T0 TR K L L (2.11) Nella (2.11), L sono le perdite (Loss) introdotte dalla presenza del filtro e della linea di trasmissione, TR è la temperatura di rumore del ricevitore, definita come: TR T0 F 1 (2.12) essendo F la figura di rumore del ricevitore (in unità lineari), mentre T0 è la temperatura ambiente e T A è la temperatura di rumore dell’antenna (tutte le temperature sono da intendersi espresse in °K). Il valore della costante di Boltzmann è pari a = –228.6 dBW/°K-Hz; per quanto riguarda la figura di rumore, valori tipici variano in un range che va da 1.0 dB a 1.5 dB. Se, per esempio, si sceglie una figura di rumore pari a 1.0 dB, allora F = 1.259, F – 1 = 0.259, e TR = (F – 1)∙290°K = 75.1 °K. Per un esempio tipico di perdite contenute dell’insieme filtro/linea di trasmissione, si può considerare L=1.1, mentre T A =130 °K; con questi dati, la temperatura equivalente di rumore e la densità di rumore che otteniamo sono pari a: 53 Giulio Mezzana – Roberto Dell’Ariccia Teq 130 K 0.1 290 K 75.1K 219.6 K 23.42 dB K 1.1 1.1 N 0 kTeq 205.2 dBW / Hz (2.13) (2.14) Per capire se il segnale si pone al di sopra o al di sotto del rumore, riportiamo i dati della tab. 2.5 da unità di potenza (dBW) a unità di densità di potenza (dBW/Hz). Per far ciò, occorre ricordare che il massimo valore della densità spettrale di potenza, per un segnale pseudonoise con uno spettro continuo e proporzionale a sinc(f/fc)2, è pari a Ps/fc, con fc = 1.023 MHz (per il codice C/A). Perciò, se Ps = – 160 dBW, e calcolando che 10log10(1.023∙106) = – 60.1 dB, allora abbiamo che il massimo valore della densità spettrale di potenza dello spettro del codice C/A è pari a: Ps [ dBW / Hz ] 160 60.1 220.1 dBW / Hz (2.15) Comparando questo valore con il valore di densità di rumore trovato prima, si vede come lo spettro del segnale C/A, anche considerato nel suo valore di picco, si posiziona circa 14.9 dB al di sotto del valore di densità spettrale di potenza del rumore. Il segnale P(Y), per quanto già visto in precedenza, si troverà circa 13 dB al di sotto dei livelli del codice C/A, ossia a – 27.9 dB dalla densità spettrale di rumore. Questo semplice esempio mostra che un singolo segnale GPS non è normalmente visibile facendo uso di un analizzatore di spettro, a meno che non si utilizzi un’antenna ad elevato guadagno. In conclusione, andiamo a riportare i dati finora ottenuti in termini di rapporto fra la potenza della portante del segnale ricevuto e la densità spettrale di potenza del rumore in ricezione, noto come rapporto Carrierto-Noise Density – C/N0. Il rapporto C/N0 che si ha in ricezione è uno dei parametri principali per la determinazione delle performance del ricevitore. Se la potenza del segnale C/A ricevuto su L1 è pari a C = – 160 dBW e, come visto, N 0 =– 205.2 dBW/Hz, allora il rapporto fra la potenza della portante e la densità spettrale di rumore è pari a: 54 Giulio Mezzana – Roberto Dell’Ariccia C 160 205.2 45.2 dB Hz N0 (2.16) Come detto, il valore di potenza ricevuto per il codice C/A varia secondo l’angolo di elevazione, ed il valore preso come esempio di –160 dBW è un valore cautelativo che si ha nel caso peggiore (e che noi considereremo come valore di ingresso per le nostre simulazioni): al crescere dell’angolo di elevazione al di sopra dei 5 gradi, il livello del segnale ricevuto cresce fino a C = –158 dBW, e conseguentemente il valore di C/N0 si assesta a circa 47.2 dB-Hz, che può essere considerato un valore tipico. Oltre a questo, bisogna considerare che nella realtà spesso il sistema trasmissivo dei satelliti in orbita eccede i livelli di potenza specificati, in quanto ci si aspetta che la potenza trasmessa dal satellite degradi con il passare del tempo, fino ad arrivare, in condizioni di EOL (End Of Life), a trasmettere la potenza specificata dagli Interface Control Document. Per questo, i più recenti satelliti sono progettati in modo da trasmettere un più alto livello di potenza rispetto alle specifiche di EOL, fino ad un massimo di 6 dB. Considerando anche che, spesso, l’attenuazione atmosferica subita dal segnale è più bassa di quella attesa, ci si può aspettare che l’effettivo C/N0 risulti nei fatti fino a 7.3 dB più grande di quello specificato, arrivando a valori di 52.5 dB-Hz per il segnale C/A [2]. 3.4. Struttura del segnale Galileo Parameter fX PX LX-Y TC,X-Y TS,X-Y TD,X-Y Explanation Carrier Frequency [Hz] RF-Signal Power [W] Ranging Code Repetition Period [Chips] Ranging Code-Chip-Length [Seconds] Subcarrier-Period [Seconds] Navigation Message Symbol Duration [Seconds] RC,X-Y = 1/ TC,X-Y; Code-Chip-Rate [Hz] RS,X-Y = 1/ TS,X-Y; Subcarrier-Frequency [Hz] RD,X-Y CX-Y(t) DX-Y(t) = 1/ TD,X-Y; Navigation Message Symbol Rate [Hz] Binary (NRZ modulated) ranging code Binary (NRZ modulated) navigation message signal 55 Giulio Mezzana – Roberto Dell’Ariccia scX-Y(t) Binary (NRZ modulated) subcarrier Binary NRZ modulated navigation signal component including code, sub-carrier (if available) and navigation message data (if available); (= CX-Y(t)∙scX-Y(t) ⋅DX-Y(t) ); Normalised Baseband Signal (= sX-I(t) +jsX-Q(t)) (Unit mean power) ‘kth’ Chip of the Ranging Code ‘kth’ Symbol of the Navigation Message eX-Y(t) sX(t) cX-Y,k dX-Y,k Tab. 3-6 Convenzioni simboliche In questo paragrafo dettaglieremo la struttura del segnale utilizzato nel sistema GALILEO. Allo stesso modo del GPS, anche GALILEO utilizza dei codici di spreading per ottenere l’accesso multiplo nel dominio del codice mediante la tecnica CDMA: tuttavia, a differenza di quello che accade nel sistema americano, si utilizzano codici generalmente più lunghi (anche se si tratta ancora di codici di Gold). La descrizione del segnale nei paragrafi che seguono è tratta in massima parte da [11]. Qui e nel seguito, utilizzeremo i simboli in accordo alla tabella a pagina precedente. 3.4.1. Modulazione e piano di frequenza I satelliti del sistema Galileo trasmetteranno i segnali di navigazione con caratteristiche di polarizzazione, frequenza portante e banda trasmessa riassunte nella tabella 2.6. Signal Carrier–Frequency Parameter Carrier-Frequency Polarisation Transmitted bandwidth E5 E6 L1 fE5 fE6 fL1 1191.795 MHz 1278.750 MHz 1575.420 MHz Right-hand circular Right-hand circular Right-hand circular 92.07 MHz 40.92 MHz 40.92 MHz Tab. 3-7 Caratteristiche del segnale trasmesso Per quel che riguarda la modulazione, nei paragrafi seguenti le espressioni faranno riferimento all’inviluppo complesso normalizzato in potenza s(t) (i.e. alla versione in banda base) di un segnale modulato in banda passante S(t). Entrambi i segnali saranno descritti in termini delle componenti in fase (I) ed in quadratura (Q), secondo le generiche espressioni seguenti: 56 Giulio Mezzana – Roberto Dell’Ariccia S X (t ) 2 PX S X I (t ) cos2f x t S X Q (t ) sin( 2f x t ) S X (t ) S X I (t ) jS X Q (t ) (2.17) (2.18) Prima di entrare più nel dettaglio delle specifiche di segnale, conviene introdurre la particolare modulazione utilizzata (per la prima volta) nei segnali di navigazione Galileo, che va sotto il nome di modulazione BOC. 3.4.2. La modulazione BOC (Binary Offset Carrier) Le tecniche di modulazione del segnale di navigazione sono state ristrette, nel caso del GPS, alla tradizionale modulazione BPSK: per questa tecnica, al diminuire di altre fonti di errori, risultano dominanti i contributi del rumore e del multipath [12]. Tuttavia, limitazioni in larghezza di banda precludono ulteriori miglioramenti che potrebbero essere ottenuti con l’utilizzo della tecnica BPSK all’aumentare del rate di codifica. Inoltre, aumentare la potenza trasmessa per migliorare l’accuratezza è una soluzione costosa, ed ha un effetto limitato sulle performance contro il multipath. Al contrario, tecniche di modulazione specificatamente progettate per la radionavigazione possono ottenere prestazioni più elevate delle modulazioni esistenti, facendo uso della stessa larghezza di banda, o anche meno, e permettendo una semplificazione sia nell’apparato trasmittente che in quello ricevente. In aggiunta a ciò, modulazioni più avanzate possono permettere una migliore condivisione delle frequenze attualmente disponibili con i segnali già presenti, permettendo così di ovviare alle problematiche di scarsità di spettro disponibile. Per questi motivi, sono stati portati avanti molti studi su modulazioni differenti dalla tradizionale BPSK, inizialmente spinti dalla necessità di modernizzazione del sistema militare GPS, nell’ambito del quale l’obiettivo era quello di introdurre un nuovo segnale militare (M signal) all’interno delle bande di frequenza già utilizzate. Con questi obiettivi è stata dunque sviluppata la modulazione Binary Offset Carrier (BOC), successivamente 57 Giulio Mezzana – Roberto Dell’Ariccia adottata anche nel sistema europeo Galileo. Inizialmente sviluppata con il principale scopo di garantire un buon grado di isolamento spettrale dai segnali già esistenti modulati sulla stessa portante, si è poi constatato che la modulazione BOC offre anche vantaggi prestazionali, soprattutto per quel che riguarda la reiezione d’interferenza (principalmente dovuta al multipath). Andiamo ora a richiamare brevemente le caratteristiche essenziali della modulazione BOC. L’idea fondamentale è quella di realizzare uno schema di modulazione che permetta la separazione spettrale fra due o più segnali che siano trasmessi sulla stessa frequenza portante: per far ciò, occorre che tali segnali possano posizionare la maggior parte della potenza al di fuori del centro banda, vicino ai limiti della banda. Il primo tentativo in questo senso è rappresentato dalla modulazione di tipo Manchester; successivamente, si è dimostrato che un approccio di tipo offset carrier, che utilizza una sottoportante sinusoidale modulata da una forma d’onda bipolare filtrata, mostrava un maggior grado d’isolamento spettrale. La necessità di semplicità nell’implementazione ha infine portato ad una modulazione binaria di tipo offset carrier (BOC), la quale utilizza una sottoportante ad onda quadra, invece che sinusoidale come avviene nella modulazione LOC (Linear Offset Carrier). La fig. 2.11 mostra uno schema a blocchi che riassume la generazione di un segnale BOC. 58 Giulio Mezzana – Roberto Dell’Ariccia Fig. 3.11 Generazione di un segnale BOC Perciò, la modulazione BOC(fs,fc) consiste nel modulare il segnale di banda base s(t) tramite una sottoportante quadrata (onda quadra) di frequenza fs, ottenendo il segnale: s BOC (t ) s(t ) signsin 2f s t (2.19) dove, nel caso in questione, s(t) è un segnale di tipo BPSK con un chip rate pari a fc. Quello che si ottiene è equivalente ad utilizzare una sequenza di spreading i cui chips, sempre della stessa durata, anziché rettangolari, hanno la forma di un’onda quadra troncata ad un numero di cicli pari al rapporto fs/fc. È molto importante capire quello che succede nel dominio della frequenza, per comprendere in che modo i segnali BOC riescano effettivamente a condividere la banda in maniera efficace. Senza perdita di generalità, assumiamo che la sottoportante quadra abbia ampiezza 59 Giulio Mezzana – Roberto Dell’Ariccia unitaria, e che nT(t) sia un impulso rettangolare ad energia unitaria, descritto dalla (2.20): 1 / nT , nT (t ) 0, 0 t nT (2.20) altrove Si può dimostrare [12], come riportato nell’appendice C, che la densità spettrale di potenza normalizzata (ad area unitaria) in banda base di un segnale BOC è data da: 2 1 sin fT sin nfT G BOC f s , f c f nT f cosfT f f sin sin 2 f f fc s c f f cos 2 f s 2 , (2.21) 2 fs n pari fc Nel caso in cui n sia invece dispari, la (2.21) si modifica come segue: 2 1 sin fT cosnfT G BOC f s , f c f nT f cosfT f f cos sin 2 f s f c fc f f cos 2 fs 2 , (2.22) 2 fs n dispari fc Benché le (2.21)-(2.22) rappresentino le espressioni complete e corrette degli spettri di densità di potenza, risulta tuttavia difficile comprendere bene quali siano le caratteristiche di siffatti spettri. Per una valutazione qualitativa trascuriamo le armoniche di ordine superiore, ottenendo la seguente densità spettrale di potenza del segnale modulato: G BOC ( f ) G f f s G f f s (2.23) dove G(f) rappresenta la densità spettrale di potenza di s(t). 60 Giulio Mezzana – Roberto Dell’Ariccia La (2.23) rende bene evidente la circostanza che la potenza del segnale si concentra su lobi che sono spostati, rispetto alla portante, di una quantità pari alla frequenza fs della sottoportante. Tale caratteristica è ben evidente negli spettri della fig. 2.12, che rappresenta alcuni fra i segnali BOC più rappresentativi. Dalla figura, si possono evincere delle caratteristiche del tutto peculiari di questa particolare modulazione. In primo luogo, si può notare come la somma dei lobi principali e dei lobi laterali compresi fra i lobi principali, sia pari ad n, definito nelle (2.21)(2.22) come il doppio del rapporto fra la frequenza della sottoportante e il rate del codice. Inoltre, come accade in una modulazione PSK convenzionale, i punti di zero-crossing di ogni lobo principale sono spaziati di una quantità pari al doppio del rate del codice (individuando la larghezza di banda del codice stesso). È importante sottolineare come il valore massimo dei lobi principali si abbia in corrispondenza a frequenze leggermente inferiori rispetto alla frequenza della sottoportante, a causa della interazione coerente fra le banda inferiore e quella superiore [13]. 61 Giulio Mezzana – Roberto Dell’Ariccia Fig. 3.12 Spettri di densità di potenza di vari segnali BOC I segnali BOC con la frequenza della sottoportante più spaziata rispetto al rate del codice, con un valore di n pari a 4 o più, garantiscono un miglior allontanamento dell’energia del segnale dal centro banda, come evidente dal confronto di fig. 2.12. 3.4.3. Proprietà di correlazione dei segnali Galileo Nel sottoparagrafo precedente abbiamo visto le peculiari caratteristiche in frequenza dei segnali BOC. Occupiamoci ora di studiare le proprietà della funzione di autocorrelazione di questi segnali, in quanto sono queste le proprietà che più ci interessano per i nostri scopi. La funzione di autocorrelazione di un segnale modulato BOC presenta la particolare caratteristica, rispetto a segnali modulati BPSK, di avere un certo numero di picchi secondari, oltre a quello principale. Le ACF sono presentate, per gli stessi segnali della figura 2.12, nella fig. 2.13, assieme al proprio inviluppo. 62 Giulio Mezzana – Roberto Dell’Ariccia Fig. 3.13 ACF e loro inviluppi per vari segnali BOC a banda limitata Si può apprezzare autocorrelazione, che bene la rappresenta multimodalità sicuramente delle un funzioni tratto di molto caratteristico di questi segnali, e che andrà preso in considerazione in fase di acquisizione del segnale. Il numero di picchi positivi e negativi nelle ACF è pari a 2n – 1, il numero dei soli picchi positivi è dato da n – 1, ed i picchi sono separati da un ritardo T (vedi 2.20). Utilizzando la convenzione secondo cui l è l’indice del picco normalizzato dell’ACF (con l = 0 ad indicare il picco principale, l = 1 corrispondente all’indice del primo picco secondario alla destra di quello principale, ecc..), allora il valore dell’l-mo picco è pari a: 1l n l / n, l 0,1, , n 1 (2.24) Un cenno importante va fatto a proposito di questi picchi: infatti, a differenza di quello che succede con la modulazione BPSK, la presenza di 63 Giulio Mezzana – Roberto Dell’Ariccia più picchi può rendere ambigua l’acquisizione ed il tracking del segnale in quanto, come vedremo, queste operazioni si basano sul riconoscimento non ambiguo del picco di correlazione. Per capire meglio queste problematiche, si consideri la fig. 2.14 che mette a confronto le ACF di segnali modulati BPSK con quelle di segnali modulati BOC: la presenza di più picchi rende difficile il riconoscimento del picco principale da quelli secondari, soprattutto se consideriamo la presenza di rumore (che nella figura è stato invece trascurato). In conclusione, possiamo dire che l’andamento multimodale della funzione di autocorrelazione dei segnali modulati BOC ne segna, per i nostri scopi, il tratto più caratteristico e che più differenzia i segnali Galileo da quelli GPS. Fig. 3.14 Confronto fra le ACF di segnali BPSK e segnali BOC 3.4.4. Il segnale L1 di Galileo Dopo aver illustrato le particolarità dei segnali BOC, siamo ora pronti ad affrontare la descrizione del segnale trasmesso dai satelliti di Galileo 64 Giulio Mezzana – Roberto Dell’Ariccia sulla banda L1. La generazione del segnale è conforme al seguente schema [11]: Fig. 3.15 Generazione del segnale L1 di Galileo Come si vede, il segnale completo è costituito dalla multiplazione di tre componenti che sono, rispettivamente: Il canale L1-A, cui corrisponde la componente di segnale governativo (G/NAV), nell’ambito del già noto Public Regulated Signals (segnale di navigazione L1P). Il canale L1-B, cui corrisponde il canale di trasporto dei dati (I/NAV) (segnale di navigazione L1F). Tale segnale è modulato dalla sottoportante e dal ranging code CL1-B (ossia dalla sequenza di PRN). Il canale L1-C, noto come canale pilota (pilot channel), che è modulato solamente dalla sottoportante quadrata e dal ranging code CL1-C, ma che non trasporta dati. Va sottolineato che il canale pilota è una peculiarità introdotta nel sistema Galileo (non è previsto nel GPS), ed è quello su cui si effettuano le misure delle caratteristiche del segnale ricevuto in fase di acquisizione: la mancanza dei dati a modulare il canale rende di fatto tali misure più accurate di quelle che si potrebbero eseguire sul canale di dati. I segnali su B e C dovranno essere generati in accordo alle seguenti formule: 65 Giulio Mezzana – Roberto Dell’Ariccia e L1 B t c L1 B d L1 B rectTc , L1 B t iTc, L1 B signsin 2R s , L1 B t (2.25) i e L1C t c L1C rectTc , L1C t iTc , L1C signsin 2Rs , L1C t (2.26) i I satelliti del sistema Galileo dovranno trasmettere i ranging codes per il segnale L1 con i chip-rate ed i subcarrier-rate riportati nella seguente tabella: Channel (Parameter Y) SubcarrierType Subcarrier-Rate RS,L1-Y [MHz] Ranging Code Chip-Rate RC,L1-Y [MChip/s] A BOCc 15.345 2.5575 B BOC 1.023 1.023 C BOC 1.023 1.023 Tab. 3-8 Caratteristiche del segnale trasmesso su L1 Come si vede, dunque, il canale governativo è modulato con una BOCc(15,2.5) (dove BOCc sta per BOC-coseno, ossia una modulazione nella quale l’onda quadra è calcolata come segno del coseno invece che del seno), mentre sia il canale pilota che il canale di dati sono modulati con una BOC(1,1). Lo stream di dati del messaggio di navigazione, a seguito della codifica di canale, dovrà essere trasmesso, per le componenti di segnale di L1, con i symbol-rate elencati nella seguente tabella: Channel (Parameter Y) Symbol-Rate RD,L1-Y [symbols/s] A Encrypted B 250 C No data (pilot channel) Tab. 3-9 Caratteristiche del messaggio di navigazione Molto importante è poi sottolineare che il segnale su L1 dovrà essere modulato in accordo alla modulazione CASM (Coherent Adaptive Sub-carrier 66 Giulio Mezzana – Roberto Dell’Ariccia Modulation) che garantisce un inviluppo costante del segnale, e la cui espressione formale è data dall’equazione seguente: s L1 t 1 2 e L1 B t 2 e L1C t 3 j 2 e L1 A t e L1 A t e L1 B t e L1C t (2.27) Nello schema di multiplazione CASM, la costanza dell’inviluppo complesso è mantenuta sommando ai tre canali desiderati (A, B e C) un segnale addizionale, dato dal prodotto di tutti i segnali binari eL1-X (l’ultimo termine nella (2.27)). L’utilizzo della (2.27) conduce ad una costellazione di simboli inviata che è rappresentata nella fig. 2.16, nella quale compaiono anche i valori esatti delle componenti I e Q. Fig. 3.16 Costellazione dei simboli nella multiplazione CASM Lo schema a blocchi funzionale della tecnica CASM è presentato nella figura 2.17, la quale riveste un’importanza fondamentale sia per il ruolo esplicativo nei confronti della (2.27), sia perché rappresenta l’esatta implementazione della multiplazione CASM che sarà realizzata al calcolatore. 67 Giulio Mezzana – Roberto Dell’Ariccia Fig. 3.17 Rappresentazione grafica della multiplazione CASM 3.4.5. I codici di spreading Per chiudere la carrellata sul segnale trasmesso dai satelliti Galileo in banda L, vediamo ora i codici di spreading utilizzati. Come per il GPS, i codici di ranging sono codici di Gold lunghi un certo periodo che originano da altri due codici (G1 e G2) secondo uno schema ben preciso. Innanzitutto, andiamo a raccogliere in una tabella le lunghezze dei codici per tutti i segnali previsti dal sistema: Signal Component Code period (ms) E5a-I Code length (chips) Primary Secondary 20 10230 20 E5a-Q 100 10230 100 E5b-I 4 10230 4 E5b-Q 100 10230 100 E6-A Classified data E6-B 1 5115 – E6-C 100 5115 100 L1-A Classified Data L1-B 4 4092 – L1-C 100 4092 25 Tab. 3-10 Caratteristiche dei ranging codes 68 Giulio Mezzana – Roberto Dell’Ariccia I codici utilizzati in Galileo sono della stessa famiglia di quelli che abbiamo già descritto per il sistema GPS, dunque non ci attarderemo a discuterne nel dettaglio. Va notato in ogni caso che sono previsti anche dei codici secondari, che però non sono di Gold, ed avranno un chip rate ed una lunghezza molto più piccole del primario. In generale, un chip del codice secondario conterrà un’intera ripetizione del codice primario, così come evidenziato nella figura 2.18. Fig. 3.18 Relazione fra il codice primario e quello secondario Come sappiamo dalla discussione precedente sul GPS, quello che ci interessa per riprodurre correttamente i chip di codice sono le informazioni riguardanti le prese e gli stati iniziali degli shift register. Le prese dei registri, per i vari segnali, sono riportate in ottale nella tabella 2.11. Tab. 3-11 Prese degli shift register per i vari segnali L’inizializzazione degli stati dei registri viene effettuata in questo modo: nel registro numero 1, per qualsiasi codice, la parola allocata nelle celle di memoria è data da tutti 1, mentre nel registro numero 2 la parola 69 Giulio Mezzana – Roberto Dell’Ariccia cambia a seconda del satellite. Per la generazione del codice primario occorre riportare le notazioni in ottale delle prese e degli stati iniziali in binario, e poi ribaltarle. Il codice secondario, invece, è fissato e riportato, sempre in ottale, nella tabella seguente: Tab. 3-12 Parametri del codice secondario Anche ora, occorre riportare il tutto in binario e se il numero di bit ottenuto è inferiore alla lunghezza prevista per il codice si devono aggiungere alla sinistra della sequenza il necessario numero di zeri. 3.4.6. Livelli di potenza del segnale Galileo a RF Per chiudere la carrellata sui segnali trasmessi dai satelliti Galileo in banda L, andiamo ora a considerare i livelli di potenza del segnale rispetto al rumore. Per quel che riguarda la minima potenza del segnale ricevuto con un’antenna isotropica a 0 dBi, i valori sono riportati nella tabella 2.13. Tali valori sono validi per angoli di elevazione fra 10 e 90 gradi [5]. Signals Minimum Power (dBW) L1F -157 Tab. 3-13 Minimi livelli di potenza ricevuta su L1 I livelli di densità spettrale del rumore si assumeranno identici a quelli già calcolati nel caso del GPS, in quanto le caratteristiche del sistema di ricezione sono assunte essere le stesse. Dunque, con riferimento alle 70 Giulio Mezzana – Roberto Dell’Ariccia (2.11)-(2.14), possiamo ritenere che il livello di densità spettrale di rumore sia sempre pari a N0 = –205.2 dBW/Hz. Per concludere, parallelamente a quanto fatto con il GPS, andiamo a riportare i dati finora ottenuti in termini di rapporto fra la potenza della portante del segnale ricevuto e la densità spettrale di potenza del rumore in ricezione (rapporto C/N0). Se la potenza del segnale ricevuto su L1 è pari a C = – 157 dBW e, come visto, N0 = – 205.2 dBW/Hz, allora il rapporto fra la potenza della portante e la densità spettrale di rumore è pari a: C 157 205.2 48.2 dB Hz N0 (2.28) Come detto, il valore di potenza ricevuto per il segnale varia secondo l’angolo di elevazione, ed il valore preso come esempio di –157 dBW è un valore cautelativo che si ha nel caso peggiore. Come si vede, il C/N0 che si ottiene è superiore a quello che si ha con il GPS; tuttavia bisogna considerare che la modulazione BOC utilizzata non è tale da disporre tutta la potenza del segnale intorno alla portante. Tale potenza viene infatti suddivisa nei due lobi spettrali che si pongono a cavallo della portante. L’altezza dei due lobi dovrà quindi attendersi al disotto di quella del GPS, per il quale la modulazione BPSK mantiene invece tutta la potenza concentrata nell’unico lobo centrale. 71 Giulio Mezzana – Roberto Dell’Ariccia 4. CATENA RICEVENTE E SOFTWARE RECEIVER 4.1. Introduzione In questo capitolo focalizzeremo la nostra attenzione sulla catena ricevente di un generico ricevitore GNSS, con particolare riferimento ad un approccio software del problema. Il presente lavoro, infatti, ha come scopo fondamentale quello di mostrare le possibili implementazioni e le performance ottenibili applicando il concetto di Software Receiver al caso del sistema di navigazione Galileo, basandosi sui risultati e sulle metodologie già introdotte per il GPS. Introdurremo quindi i vantaggi e le problematiche inerenti alla progettazione di un ricevitore software, con particolare riferimento alle tematiche di nostro interesse che concernono i processi di correlazione nell’ambito degli algoritmi di acquisizione del segnale. Si illustreranno le innovative possibilità che è possibile sfruttare utilizzando un sistema di navigazione software-based, viste in contrapposizione al più classico approccio hardware-based. Non verranno d’altro canto ignorate le problematiche che questo diverso approccio pone, che saranno illustrate da un punto di vista puramente teorico in questo capitolo, per essere poi riprese su un piano più concreto nel capitolo in cui saranno presentati i risultati delle simulazioni. Dopo questa introduzione, entreremo maggiormente nel dettaglio dello schema ricevente di un sistema di navigazione satellitare. Nell’ambito di questa breve dissertazione, l’intera catena ricevente verrà analizzata nel dettaglio, a partire dall’antenna fino ad arrivare alla descrizione del canale di ricezione ed alla parte di signal processing, dettagliando tutte le particolarità che saranno poi riprese nella concreta implementazione al calcolatore del sistema complessivo. 72 Giulio Mezzana – Roberto Dell’Ariccia 4.2. Struttura di un ricevitore GNSS e Software Receiver La struttura di base del Software Receiver GNSS che sarà presa a riferimento qui e nel seguito, è mostrata nella fig. 3.1. ANTENNA RF IF FILTRI DI PRESELEZIONE A RF POSIZIONE VELOCITA’ TEMPO NAVIGATION PROCESSING DOWNCONVERSION ADC SIGNAL PROCESSING Fig. 4.1 Struttura del ricevitore software Per gli scopi del nostro lavoro, conviene esplorare più nel dettaglio la struttura dei blocchi di Signal Processing e di Navigation Processing, il cui contenuto è mostrato nella fig. 3.2. ACQUISIZIONE POSIZIONE DELL’UTENTE TRACKING POSIZIONE DEL SV IDENTIFICAZIONE DELLA SOTTOTRAMA EFFEMERIDI & PSEUDORANGE Figura 4.2 Signal e Navigation Processing I segnali trasmessi dai satelliti GPS o Galileo sono ricevuti dall’antenna e vengono poi posti in ingresso allo stadio a radio frequenza 73 Giulio Mezzana – Roberto Dell’Ariccia (RF) del ricevitore, che ha il compito di filtrarli (per eliminare il rumore fuori banda) e di amplificarli fino al livello desiderato; inoltre la frequenza propria del segnale viene convertita (stadio di Down-Conversion) ad una frequenza intermedia (IF) precedentemente scelta. Di seguito si utilizza un convertitore analogico-digitale (ADC) per la digitalizzazione del segnale: questo significa che, in questo schema, gli unici componenti hardware del sistema sono l’antenna, i filtri a RF e l’ADC. Il processo di acquisizione ricerca nello spazio bidimensionale di fase del codice e frequenza Doppler la presenza del segnale di un particolare SV, mentre il blocco di tracking è utilizzato per determinare le transizioni di fase provocate dai bit del messaggio di navigazione (vedi cap. 1) di quello specifico SV. I dati delle effemeridi e gli pseudoranges sono ricavati dai dati di navigazione; infine la posizione dell’utente può essere calcolata con la linearizzazione fornita nell’appendice A. Il punto cruciale è che il fondamento del concetto di Software Receiver, mostrato nella fig. 3.1, risiede nella possibilità di realizzare via software le fasi di acquisizione e inseguimento, che in un convenzionale ricevitore vengono invece effettuate facendo uso di hardware dedicato (p.es. tramite l’uso di correlatori hardware posti su una FPGA) per via del fatto che, per quest’ultimo, il passaggio al software avviene solamente dopo la fase di tracking e di acquisizione. Obiettivo del presente lavoro è dunque quello di sviluppare degli algoritmi di acquisizione che permettano un processamento software del segnale GPS/Galileo, in modo che la parte di Signal Processing e Navigation Processing possa essere effettuata interamente facendo uso di un microprocessore general-purpose (cioè disponibile su di un normale PC, senza far uso di risorse dedicate). Il concetto di software receiver è espresso nella fig. 3.3 a pagina seguente [9]. A commento della figura, bisogna tener presente che, mentre in un ricevitore GNSS hardware-based convenzionale il penultimo blocco è realizzato su un chip, togliendo perciò di fatto all’utente la possibilità di un libero accesso agli algoritmi implementati nell’hardware, in un software receiver invece i blocchi dopo l’ADC sono completamente realizzati 74 Giulio Mezzana – Roberto Dell’Ariccia utilizzando linguaggi di programmazione ad alto livello, e quindi l’utente ha un più elevato controllo sugli algoritmi stessi. Fig. 4.3 Schema di un Software Receiver 4.2.1. Vantaggi dell’approccio software Vediamo ora quali sono i vantaggi nell’utilizzo di un ricevitore software rispetto all’uso dei più convenzionali ricevitori hardware-based. Il principale vantaggio è che un ricevitore GNSS software possiede una maggiore flessibilità, dovuta all’indipendenza dal particolare hardware a disposizione: da questo punto di vista si hanno dunque diversi vantaggi implementando un ricevitore completamente su base software. Le uniche parti hardware rimangono l’antenna (che non potrà in ogni caso essere sostituita da una controparte software) e il sistema di Front-End, in quanto le capacità delle attuali CPU non sono ancora in grado di processare, completamente via software e in real-time, i segnali di navigazione provenienti direttamente dall’antenna (a causa delle alte frequenze di campionamento richieste, problema tanto più sentito sul sistema Galileo). Altri aspetti vanno evidenziati nell’implementazione che stiamo presentando: per prima cosa, un ricevitore software rimuove le nonlinearità dipendenti dalla temperatura dei componenti elettronici dell’hardware. In secondo flessibilità di luogo, un approccio valutazione e di software permette maggiore test, caratteristica che risulta particolarmente utile nella progettazione di un sistema complesso quale l’apparato ricevente. Molti sistemi possono acquisire dati complessi su 75 Giulio Mezzana – Roberto Dell’Ariccia entrambi i canali in fase (I) ed in quadratura (Q), mentre altri utilizzano dati reali provenienti da un unico canale [8]: qui e nel seguito faremo riferimento ad acquisizioni di dati complessi sui due canali I e Q. Va però esplicitamente notato che, i dati in uscita da questi due differenti schemi di Front-End possono essere processati dallo stesso software receiver: infatti, sia dati reali che complessi possono essere generati dal ricevitore apportando delle piccole modifiche al programma che implementa l’acquisizione. Inoltre un ricevitore software può anche adattarsi a dati digitalizzati con differenti frequenze di campionamento senza dover apportare modifiche all’hardware, ma solamente aggiornando il software: in questo modo è possibile confrontare fra loro le performance di algoritmi diversi senza alcuno stadio di sviluppo software. In terzo luogo, l’approccio software fornisce un efficace ambiente di simulazione: nuovi algoritmi possono essere sviluppati, mirati a risolvere particolari problemi (come per es. l’eventuale presenza di jamming o disturbi di altra natura) ed implementati nel ricevitore senza dover aggiungere o modificare componenti HW. È semplice dunque realizzare prototipi di segnali teorici e non ancora effettivamente presenti in aria (come i segnali Galileo) e testare le tecniche di processamento per i nuovi segnali senza nessuno sviluppo hardware. In ultimo luogo, la scelta di implementare algoritmi software consente di facilitare l’aggiornamento delle caratteristiche di ricezione del sistema, in funzione dell’evoluzione dei segnali di navigazione. La possibilità di eseguire aggiornamenti “on the fly” consente all’utente di poter aggiornare facilmente e in tempi rapidi il proprio software semplicemente scaricandone una nuova versione. 4.3. La catena ricevente Descriveremo ora nel dettaglio gli stadi della catena ricevente che saranno implementati nelle simulazioni dei successivi capitoli. Visti gli scopi del nostro lavoro, la descrizione comprenderà principalmente i primi stadi del sistema: in particolare, con riferimento alle figg. 3.1 e 3.2, 76 Giulio Mezzana – Roberto Dell’Ariccia considereremo una rapida carrellata dei blocchi evidenziati, soffermandoci alla fine anche sugli schemi di acquisizione, che saranno in ogni caso ripresi nel successivo capitolo 4. 4.3.1. L’antenna Un’antenna GPS/Galileo è progettata e realizzata per la ricezione dei segnali di navigazione: questo significa che le specifiche sono determinate dall’uso che se ne fa nell’ambito del sistema. In particolare, i requisiti sono definiti dai seguenti parametri: Guadagno vs. elevazione: l’antenna dovrebbe presentare un alto guadagno per angoli superiori ad uno specificato angolo di elevazione. In questo modo, i segnali provenienti dai SV saranno amplificati rispetto a segnali generati da sorgenti con più bassi angoli di elevazione. Reiezione dell’interferenza: l’antenna dovrebbe, in qualche misura, respingere (o quanto meno ridurre) i segnali interferenti, che potrebbero originarsi per es. da un mix di segnali radio di trasmettitori localizzati nelle vicinanze. L’antenna dovrebbe in ogni caso respingere segnali in bande di frequenza differenti. Reiezione del multipath: l’antenna dovrebbe ridurre quasi del tutto i segnali di multipath, in quanto questi segnali sono molto difficili da rimuovere negli stadi successivi del ricevitore. La caratteristica di riduzione del multipath va di pari passo con la proprietà di guadagno vs. elevazione, in quanto i segnali di multipath arrivano generalmente dalle riflessioni di terra provenienti da sotto l’antenna, e quindi da bassi angoli di elevazione. 4.3.2. Il blocco RF Front End Lo stadio di Front End rappresenta il blocco della catena che si occupa di agire sul segnale analogico, operando un processamento volto a preparare il segnale analogico alle successive operazioni di campionamento nel convertitore analogico-digitale. In particolare, un generico blocco di 77 Giulio Mezzana – Roberto Dell’Ariccia Front End contiene tipicamente due funzionalità di base: il signal conditioning e la down-conversion, come mostrato in fig. 3.4. Fig. 4.4 Struttura del blocco di Front End Signal Conditioning Lo scopo principale del filtraggio a RF è quello di operare una preselezione sul segnale in ingresso, al fine di rimuovere le componenti di interferenza: questo obiettivo viene raggiunto utilizzando un filtraggio passabanda sul segnale in ingresso (il filtro utilizzato viene quindi di solito indicato come filtro di preselezione). Inoltre, un altro scopo del blocco di Signal Conditioning è quello di operare un’amplificazione del segnale in arrivo (questo aspetto, tuttavia non verrà preso in considerazione nelle simulazioni). Down-conversion Questo blocco si occupa di traslare il segnale a RF su una portante più bassa rispetto a quella originaria: nel caso del segnale L1 (sia di Galileo che del GPS) il segnale ricevuto è traslato da una RF di 1575.42 MHz ad una frequenza intermedia (IF), che generalmente si aggira sulla decina di MHz. La traslazione è ottenuta facendo uso di un mixer, ossia di un sistema non lineare che opera il battimento del segnale in ingresso con una sinusoide ad una frequenza fissata che funge da riferimento (Local Oscillator, LO), in modo da variare la portante del segnale in ingresso di una quantità che dipende dalla frequenza scelta per l’oscillatore. Il LO deve essere molto stabile ed accurato, in modo che la nuova IF sia ben definita. La funzione del mixer può essere calcolata come segue [7]: s out (t ) sin (t ) s LO (t ) (3.1) 78 Giulio Mezzana – Roberto Dell’Ariccia La (3.1) può essere riscritta nel dominio della frequenza secondo la (3.2): S out ( f ) S in ( f ) * S LO ( f ) (3.2) dove con S(f) si è intesa la trasformata di Fourier di s(t). La (3.2) è l’applicazione pratica della ben nota proprietà della trasformata di Fourier secondo la quale una moltiplicazione in tempo diventa una convoluzione in frequenza. La fig. 3.5 a pagina seguente schematizza il principio alla base dell’operazione di Down-conversion effettuata dal mixer. Nella fig. 3.5(a) è mostrata la trasformata di Fourier del segnale LO (che sappiamo essere un impulso di Dirac), in (b) è invece mostrata la trasformata del segnale di ingresso a RF. In (c) si vede il risultato del mixing fra il segnale LO e il segnale a RF: si può notare che è stata applicata la (3.2) e che il segnale in uscita corrisponde alla convoluzione in frequenza del segnale (a) con il segnale (b). La frequenza del riferimento locale viene scelta secondo la seguente formula: f LO f RF f IF (3.3) Come si può vedere, però, l’uscita del mixer non può essere presa direttamente come segnale a IF, in quanto sono presenti delle armoniche spurie a frequenze particolari e ben precise. In particolare, l’operazione di mixing da luogo a quattro componenti di segnale, collocate alle frequenze [–fRF – fLO, –fRF + fLO, fRF – fLO, fRF + fLO]; poiché sono richieste solo le componenti a più bassa frequenza, all’uscita del mixer dovrà essere posto un opportuno filtro passa-basso per rimuovere le due componenti di segnale ad alta frequenza. La fig. 3.5 (d) evidenzia proprio il segnale risultante a IF dopo la Down-conversion e il filtraggio passa-basso. La fig. 3.5 nel suo complesso evidenzia l’idea teorica che sta alla base della Down-conversion, ed anche la necessità di utilizzare un filtraggio per rimuovere le alte frequenze indesiderate. 79 Giulio Mezzana – Roberto Dell’Ariccia Fig. 4.5 Principio di funzionamento della conversione da RF a IF 4.3.3. Il convertitore Analogico-Digitale (ADC) Il sistema per la conversione dal dominio analogico a quello digitale è responsabile del campionamento del segnale analogico a media frequenza. Per evitare distorsioni dovute ad aliasing spettrale, il campionamento del segnale su portante IF dovrà avvenire rispettando le condizioni del ben noto e fondamentale teorema di Nyquist, il quale stabilisce che, per ricostruire correttamente un segnale analogico a partire dai suoi campioni (segale digitale), il rate di campionamento dovrà essere almeno pari al doppio del massimo contenuto in frequenza del segnale stesso. Questo significa che, per soddisfare il teorema di Nyquist, il rate di campionamento fs dovrà rispettare la seguente condizione: 80 Giulio Mezzana – Roberto Dell’Ariccia f s 2 f MAX (3.4) nella quale fMAX rappresenta appunto il massimo contenuto spettrale del segnale da campionare. In realtà, la (3.4) rappresenta l’estensione del teorema di Nyquist, originariamente pensato per segnali in banda base, a segnali modulati su portante. È di fondamentale importanza capire il significato del teorema del campionamento: per un maggiore approfondimento, consideriamo quello che accade se il criterio (3.4) non viene rispettato. Fig. 4.6 Aliasing in frequenza La figura 3.6 mostra il piano di frequenze di un sistema campionato ad un sampling rate pari a fs. Si vede che, per tutti i segnali in ingresso con frequenza minore di fs/2 (come per esempio la sinusoide a frequenza f0) il criterio di Nyquist è completamente soddisfatto: infatti, un qualsiasi numero di segnali può essere presente nella regione ombreggiata e ciascuno di questi sarà rappresentato correttamente dai propri campioni. Ma se si considera la presenza di un segnale a frequenza superiore ad fs/2, per es. a frequenza fa, il processo di campionamento genererà una replica (alias) del segnale che apparirà nei dati campionati in corrispondenza della frequenza fs – fa. Va rilevato che questa immagine non può essere distinta da un segnale che sia realmente presente a quelle stesse frequenze e che sia invece correttamente campionato: il punto è che, una volta che l’aliasing è stato introdotto dal processo di campionamento, nessun tipo di elaborazione successiva potrà permettere di distinguere fra un segnale reale ed uno creato da aliasing spettrale. Perciò, l’imperativo deve essere 81 Giulio Mezzana – Roberto Dell’Ariccia quello di prevenire l’aliasing prima che si verifichi, scegliendo i rate di campionamento secondo la (3.4). In particolare, se applichiamo queste considerazioni per es. al sistema GPS, allora, considerando che il codice C/A ha una larghezza di banda complessiva di f = 2.046 MHz, si vede che il massimo contenuto spettrale di un segnale posto ad una IF arbitraria è pari a: 1 f MAX f IF f f IF 1 MHz 2 (3.5) La (3.5) dovrà essere tenuta in conto, insieme con un’analoga formula per il sistema Galileo, al momento dell’implementazione al calcolatore del sistema di ricezione. 4.4. Canali di ricezione Nel sistema ricevente di un sistema GNSS quali GPS e Galileo, il signal processing ha luogo generalmente facendo uso di differenti canali di ricezione. Ogni satellite visibile all’antenna è allocato su un certo canale, limitatamente al massimo numero di canali disponibili nel particolare ricevitore (generalmente tale numero arriva al massimo a 10-12 canali HW). Nei classici ricevitori hardware-based tali canali sono realizzati in HW, facendo uso di componenti dedicati; nell’ambito del nostro progetto di un ricevitore software, invece, tali canali sono da intendersi implementati mediante un opportuno linguaggio di programmazione. La fig. 3.7 mostra i blocchi che costituiscono un generico canale di ricezione. Fig. 4.7 Overwiev del canale di ricezione 82 Giulio Mezzana – Roberto Dell’Ariccia A livello logico, il blocco di acquisizione fornisce una prima stima (non particolarmente accurata) dei parametri del segnale in arrivo: questa stima, di interesse per la determinazione della posizione dell’utente, è raffinata dai due blocchi di inseguimento (o di tracking). Dopo la fase di tracking del segnale, è possibile estrarre i dati del messaggio di navigazione e calcolare gli pseudoranges per la localizzazione dell’utente. Prima di assegnare un canale ad un determinato SV, il ricevitore deve sapere quali sono i SV attualmente in vista: a questo scopo si utilizzano generalmente due metodi. Il primo va sotto il nome di warm start (“partenza a caldo”), mentre il secondo è noto come cold start (“partenza a freddo”). Nella warm start, il ricevitore combina l’ultima posizione calcolata con le informazioni memorizzate negli almanacchi: questi ultimi sono utilizzati per un calcolo della posizione approssimativa dei satelliti nell’istante attuale (basato sulla conoscenza delle orbite dei SV stessi). Queste stime di posizione sono dunque combinate con l’ultima posizione nota del ricevitore in un algoritmo per la determinazione dei SV che dovrebbero essere visibili in quel momento. La modalità di warm start presenta due principali problemi: in primo luogo, se il ricevitore è stato spostato molto lontano rispetto al punto in cui era stato spento (e.g. in un altro continente), l’ultima posizione del ricevitore calcolata non può essere chiaramente attendibile e i SV determinati non coincideranno con quelli realmente in visibilità. In secondo luogo, può accadere che i dati dell’almanacco riguardanti i parametri orbitali non siano aggiornati, e che quindi non forniscano le giuste posizioni dei satelliti. In entrambi i casi, il ricevitore deve necessariamente procedere ad una partenza a freddo. Nella cold start, il ricevitore non fa uso di nessuna informazione memorizzata in precedenza; al contrario, comincia dall’inizio la ricerca dei SV in visibilità. Il metodo di ricerca va sotto il nome di acquisizione, e la descrizione e l’implementazione degli algoritmi per la sua realizzazione via software sono l’obiettivo di questa tesi. 83 Giulio Mezzana – Roberto Dell’Ariccia Va precisato che un’acquisizione che svolge la sua ricerca su tutti i possibili SV è un’operazione che può richiedere molto tempo: per questo, quando possibile, è preferibile procedere ad una warm start. 4.4.1. Acquisizione Lo scopo della fase di acquisizione, è prima di tutto, quello di capire se un determinato satellite sia visibile all’utente oppure no. Nel caso in cui si determini che il satellite sia effettivamente in visibilità, l’algoritmo di acquisizione deve determinare le due seguenti proprietà del segnale ricevuto: Frequenza: la frequenza di un segnale proveniente da uno specifico satellite può differire dal suo valore nominale che, nel caso in cui si operi una Down-conversion, coincide con la media frequenza scelta. Lo spostamento della frequenza è dovuto all’effetto Doppler, generato dal moto relativo fra SV e ricevitore. In particolare, l’effetto Doppler dipende dalla velocità con cui avviene l’avvicinamento (o l’allontanamento) del ricevitore dal particolare satellite: lo spostamento in frequenza può arrivare, nel caso di massima velocità del satellite combinata con una velocità molto alta dell’utente, a valori massimi di 10 KHz [8]. I calcoli che portano a questi valori per lo shift Doppler sono riportati nell’appendice B, nella quale si evidenzia anche che, per ricevitori stazionari, lo spostamento non supera i 5 KHz. Fase del codice: la fase del codice denota il punto in cui comincia, nel blocco di dati che si sta elaborando, il codice di spreading del particolare segnale ricevuto (vedi § 1.3.1). Se per esempio, facendo riferimento al segnale GPS, viene esaminato un blocco di dati di 1 ms, i dati raccolti includono un’intera ripetizione del codice C/A (vista la periodicità di 1 ms di tale codice) e quindi anche il punto di inizio del codice stesso. La determinazione della fase del codice è realizzata facendo uso di differenti metodi: tuttavia, tutti questi algoritmi sono basati, in un modo o 84 Giulio Mezzana – Roberto Dell’Ariccia nell’atro, sulle peculiari proprietà dei particolari codici di spreading utilizzati. In particolare, sono molto importanti le proprietà di correlazione mutua e incrociata delle sequenze, proprietà che abbiamo già visto nel precedente capitolo. Per comprendere meglio le modalità di acquisizione, ricordiamo che, come visto nel cap. 1, sia il GPS che Galileo sono sistemi basati sulla tecnica di accesso multiplo CDMA; in base a questo, possiamo esprimere matematicamente il segnale s(t) ricevuto dal generico utente come combinazione dei segnali provenienti da tutti ed n i satelliti in visibilità: s (t ) s1 (t ) s 2 (t ) s k (t ) s n (t ) (3.6) Durante l’acquisizione del generico satellite k-mo, il segnale s(t) in ingresso è correlato con una copia generata localmente del codice C/A associato al satellite; la scelta di sequenze di spreading con opportune proprietà di cross-correlazione è fondamentale per far si che il processo di correlazione implichi la quasi totale rimozione, dal segnale in ingresso, dei segnali propri dei satelliti diversi dal k-mo. Per evitare di rimuovere anche il segnale desiderato sk(t), occorre che la copia generata sia perfettamente allineata temporalmente a quella in arrivo, cioè che la fase del codice sia opportunamente determinata mediante una ricerca su questo dominio. A tal proposito, la fase di acquisizione ha il compito di ottenere solamente una indicazione grossolana della reale fase del codice, per cui generalmente la ricerca procede a passi di un chip di codice o più. Dopo la moltiplicazione con la copia del codice, il segnale è posto in ingresso ad un mixer grazie al quale avviene il battimento con un’onda sinusoidale generata localmente e centrata su un’opportuna frequenza. Come abbiamo già visto in precedenza, questa operazione varia la frequenza centrale dello spettro, e si rende necessaria per rimuovere la portante del segnale in ingresso. Naturalmente non va dimenticato che, per quanto visto in precedenza, s(t) è affetto da una frequenza Doppler, dunque la rimozione della portante dal segnale implica che la frequenza del tono sinusoidale generato localmente debba essere variata nell’intorno della media frequenza scelta per quel particolare ricevitore. Come 85 Giulio Mezzana – Roberto Dell’Ariccia dimostrato nell’appendice B, lo shift Doppler è compreso, per ricevitori non stazionari, in un range massimo di ±10 KHz dalla frequenza nominale (vedi app. B); questo implica che differenti celle in frequenza andranno indagate per determinare la reale entità dello spostamento. Per determinare se un satellite sia effettivamente in visibilità, si considera sufficiente estendere la ricerca su celle di frequenza di ampiezza pari a 1 KHz, ottenendo così algoritmi che scandiscono il dominio della frequenza su 21 possibili celle [8]. Infine, dopo aver dunque rimosso anche la frequenza portante, tutte le componenti del segnale risultante in uscita vengono elevate al quadrato e sommate, dando luogo ad un determinato valore numerico in uscita: tale valore andrà di seguito confrontato con una soglia di acquisizione, per determinare (con una fissata probabilità) la presenza o meno del segnale in ambienti rumorosi. Abbiamo visto quindi che la procedura di acquisizione si configura principalmente come una modalità di ricerca bidimensionale nel dominio della fase del codice e della frequenza Doppler: per le diverse celle in frequenza, tutte le possibili fasi del codice sono scandite. Quando tutte le possibilità per la fase e la frequenza sono state provate, viene eseguita una ricerca per la determinazione del massimo della funzione bidimensionale così ottenuta; se tale valore massimo eccede una predeterminata soglia di acquisizione, si considera acquisito il satellite, con i corrispondenti shift in frequenza e fase. Per meglio chiarire i concetti ora esposti, la fig. 3.8 mostra un tipico andamento della funzione bidimensionale di acquisizione, ottenuta nel caso di un satellite in visibilità: il grafico mostra chiaramente un ampio picco di correlazione. 86 Giulio Mezzana – Roberto Dell’Ariccia Fig. 4.8 Funzione bidimensionale di acquisizione nel caso di presenza del SV La fig. 3.9 mostra, invece, la funzione di correlazione nel caso in cui l’acquisizione sia eseguita per un satellite che non è visibile al ricevitore. Si noti che in questo caso i valori sono tutti simili senza che si abbia nessun picco, ad indicare bassi valori di correlazione e quindi l’assenza dello specifico satellite dal piano dei SV in visibilità. 87 Giulio Mezzana – Roberto Dell’Ariccia Fig. 4.9 Funzione bidimensionale di acquisizione nel caso di assenza del SV 4.4.2. Tracking Loops Dopo la fase di acquisizione, il segnale transita attraverso i blocchi di inseguimento (o di tracking). Lo scopo principale della fase di tracking è quello di raffinare i valori grossolani di offset Doppler e di fase del codice forniti dall’acquisizione e di inseguirli, al variare delle proprietà del segnale ricevuto nel tempo. Proprio per la necessità di inseguire questi valori, e quindi di aggiornarne costantemente la stima nel tempo, l’inseguimento è realizzato attraverso degli anelli o loops (tracking loops). È importante raffinare i dati in uscita dai blocchi di acquisizione, in quanto l’accuratezza del valore finale della fase del codice è connessa alla precisione nel calcolo dello pseudorange e quindi, in definitiva, all’accuratezza ottenibile nella stima di posizione dell’utente. Come si vede nello schema di fig. 3.7, l’inseguimento è suddiviso in due parti: inseguimento del codice (code tracking) e inseguimento della frequenza/fase della portante (carrier frequency/phase tracking). Vediamo brevemente entrambi: 88 Giulio Mezzana – Roberto Dell’Ariccia Code Tracking: l’inseguimento del codice è generalmente realizzato attraverso l’uso di un anello noto come DLL (Delay Lock Loop), nel quale vengono generate tre repliche locali del codice che vengono poi correlate con il segnale in ingresso. Queste tre repliche sono note come Early, Prompt e Late (EPL) rispettivamente, e sono generalmente ritardate l’una dall’altra di mezzo chip. Carrier Frequency/Phase Tracking: l’altra parte dell’inseguimento è quello che ha luogo sulla portante del segnale, che può essere realizzato in due modi. È infatti possibile inseguire la fase della portante (attraverso il PLL – Phase Lock Loop) o la frequenza (con l’uso dell’FLL – Frequency Lock Loop). I tracking loops inseguono continuamente la frequenza e la fase del codice, che variano al trascorrere del tempo. Se il ricevitore perde l’aggancio su uno dei satelliti, vale a dire se gli anelli perdono la voluta accuratezza sull’informazione di fase e di frequenza, si dovrà procedere ad una nuova acquisizione del segnale di quel particolare satellite. Gli schemi più utilizzati sono: per il code tracking uno schema tipo Early-Prompt-Late (EPL, la ricerca del picco è effettuata tramite il calcolo della derivata numerica a partire dalle tre taps); per il carrier tracking invece si utilizza generalmente l’anello di Costa. La figura 3.10 mostra lo schema a blocchi di questi sistemi, così come appaiono generalmente in un convenzionale ricevitore. Tuttavia, poiché tali schemi non saranno implementati, non ci soffermeremo ulteriormente sulla loro descrizione. 89 Giulio Mezzana – Roberto Dell’Ariccia Fig. 4.10 Loops di tracking: EPL e anello di Costa 4.4.3. Estrazione dei dati di navigazione e calcolo degli pseudoranges Nella situazione in cui i segnali siano opportunamente inseguiti, è possibile rimuovere i codici di spreading e la frequenza portante dal segnale ricevuto, lasciando solamente i bit di dati del messaggio di navigazione. Nel caso del GPS, il valore di un bit di dati è ottenuto integrando il segnale su un periodo di 20 ms; dopo aver raccolto dati per circa 30 s, è possibile trovare l’inizio di una sottotrama, al fine di determinare l’istante di tempo in cui i dati sono stati originariamente trasmessi dal satellite. Una volta stimato il tempo di trasmissione, occorre decodificare i dati delle effemeridi per quello specifico satellite: queste informazioni sono poi utilizzate per calcolare la posizione del satellite al tempo di trasmissione. 90 Giulio Mezzana – Roberto Dell’Ariccia L’ultima cosa da fare prima di procedere al calcolo della soluzione navigazionale, è naturalmente il calcolo degli pseudoranges da almeno quattro satelliti in visibilità. Questi ultimi sono calcolati facendo uso del tempo stimato di trasmissione dal satellite e del tempo di arrivo del segnale al ricevitore, calcolato sulla base dell’inizio della sottotrama. 4.4.4. Determinazione della posizione L’ultimo (ma principale) compito del ricevitore è infine quello di determinare la posizione dell’utente che usufruisce del servizio di radiolocalizzazione satellitare. La posizione è calcolata a partire dagli pseudoranges e dalla posizione del SV trovata a partire dalle effemeridi, seguendo l’algoritmo di risoluzione proposto nell’appendice A. La fig. 3.11 rende l’idea del metodo di calcolo della posizione dell’utente facendo uso di segnali radio satellitari, secondo l’idea di base già ampiamente descritta nel § 1.2. Non tratteremo ulteriormente le problematiche connesse alla determinazione del segnale di navigazione e della posizione dell’utente, in quanto non risultano inerenti al presente lavoro. Nei prossimi paragrafi ci soffermeremo invece su uno studio più dettagliato dei possibili algoritmi di acquisizione utilizzabili nei sistemi reali, algoritmi che verranno poi concretamente implementati nelle simulazioni. 91 Giulio Mezzana – Roberto Dell’Ariccia Fig. 4.11 Determinazione della soluzione navigazionale 92 Giulio Mezzana – Roberto Dell’Ariccia 5. SIMULAZIONE DEI SEGNALI GNSS A FREQUENZA INTERMEDIA 5.1. Introduzione In questo capitolo saranno descritti i tools di simulazione che sono stati utilizzati per lo sviluppo e il test degli algoritmi oggetto della tesi. Dopo la prima fase di studio degli algoritmi e delle possibili architetture dei ricevitori software per sistemi di navigazione, si rendeva necessario un opportuno tool di simulazione dei segnali di navigazione. Poiché si disponeva già di simulatori di segnali a radiofrequenza GPS e Galileo sulla portante L1 realizzati in Simulink, è stato deciso di andare a modificare i suddetti simulatori in maniera tale che fossero più adatti allo sviluppo e al test del ricevitore software. Per quanto riguarda Galileo, verrà simulato il segnale trasmesso da GIOVE-A, nell’ottica di poter confrontare poi i risultati ottenuti con i dati simulati con quelli ottenuti con i dati reali. 5.2. Simulazione del segnale di navigazione: requisiti fondamentali L’obiettivo fondamentale era quello di ottenere simulatori di segnali campionati GPS e Galileo a frequenza intermedia (poiché attualmente sono questi di solito i dati di input di un ricevitore software allo stato dell’arte attuale) il più possibile fedeli alle modulazioni e multiplazioni descritte nei rispettivi Signal In Space Interface Control Document, riassunti nel capitolo 2. Inoltre, per essere flessibile nell’ottica di un utilizzo futuro con dati reali, i simulatori devono possedere i seguenti parametri settabili a livello globale: Frequenza intermedia: deve essere possibile impostare come input il valore della media frequenza. L’IF sarà dunque la 93 Giulio Mezzana – Roberto Dell’Ariccia frequenza di riferimento rispetto alla quale confrontare l’offset sul segnale satellitare introdotto dall’effetto Doppler. Frequenza di campionamento: deve essere possibile passare al sistema, come parametro d’ingresso, la frequenza di campionamento del segnale ricevuto. 5.3. Il simulatore di segnale GPS L’implementazione del simulatore di un singolo segnale GPS a frequenza intermedia è rappresentato nella figura seguente. Prima di descrivere i singoli blocchi, si riportano i parametri settabili dall’utente tramite l’interfaccia di Simulink che maschera il simulatore: 94 Giulio Mezzana – Roberto Dell’Ariccia Satellite ID: impostando il numero identificativo (1-32), vienescelta la sequenza di bit predefinita in modo tale da confrontare i bit demodulati in fase di tracking con quelli effettivamente simulati e il codice PRN reale del satellite Code Shift: è possibile scegliere la fase del codice C/A misurata in chips nel range [0..1022] Doppler Shift: è possibile settare lo shift doppler associato alla dinamica che si ha in linea di vista fra il satellite ed il ricevitore rispetto alla IF. Il range dei valori è [-10kHz,10kHz] per un ricevitore in movimento e [-5kHz,5kHz] per un ricevitore stazionario. Naturalmente questi valori possono essere maggiorati per tenere in conto possibili drift di frequenza tra oscillatore in trasmissione e in ricezione Doppler Rate: è possibile impostare il rate di cambiamento della doppler iniziale. Valori tipici per un ricevitore stazionario vanno da una media di 0.54 Hz/s ad un massimo di 0.936 Hz/s, 95 Giulio Mezzana – Roberto Dell’Ariccia mentre per un ricevitore in moto con un’accelerazione di un g si arriva a 51.5 Hz/s Carrier to Noise Ratio: un’altra importante caratteristica da inserire in un simulatore di segnale è certamente la possibilità di settare il parametro di C/N0, al fine soprattutto di stabilire qual è la sensibilità effettiva del sistema di acquisizione. Questo valore sarà il valore ricevuto a IF, dunque dopo possibili filtraggi e amplificazioni. Descritta l’interfaccia ad alto livello del simulatore, ora si descriveranno i singoli blocchi che lo compongono. Prima di iniziare le simulazioni, è necessario caricare un file che contiene i 33 codici C/A (il codice 33, non utilizzato dalla costellazione, verrà usato in seguito per il calcolo della soglia di acquisizione) e i 32 messaggi di navigazione predefiniti con 10 bit ripetuti in maniera ciclica. I codici sono stati generati con un’opportuna funzione matlab (riportata in appendice), con cui sono state verificate le proprietà di crosscorrelazione dei codici stessi, come si evince dalla figura seguente, in cui sono graficati i picchi delle possibili cross-correlazioni di tutti i codici. Come ci si aspettava i valori alti, pari a 1023, corrispondono alle autocorrelazioni e si trovano sulla diagonale principale. 96 Giulio Mezzana – Roberto Dell’Ariccia 1000 900 5 800 10 700 15 600 500 20 400 25 300 200 30 100 5 10 15 20 25 30 In questa maniera nel Workspace di Matlab vengono caricate una matrice di dimensione 32x1023 e una matrice 32x10: a questo punto due appositi blocchetti Signal From Workspace prelevano le due variabili dal Workspace e generano due segnali ciclici con la frequenza di 1.023 MHz e per il codice C/A e 50 Hz per i bits del messaggio di navigazione corrispondenti agli identificativi scelti nell’interfaccia grafica. Inoltre il codice viene sfasato circolarmente a seconda del code shift impostato nell’interfaccia grafica, e ciò viene implementato tramite la funzione Matlab circshift. 97 Giulio Mezzana – Roberto Dell’Ariccia Sia i codici che il messaggio di navigazione sono generati direttamente in forma bipolare, ovvero possono assumere i valori -1 e 1 ciò permette di sostituire le operazioni di XOR con delle semplici moltiplicazioni. Per questo motivo il messaggio di navigazione viene campionato a 1.023 MHz e a 10.23 MHz con due diversi blocchetti Zero-Holder Hold per permettere la moltiplicazione rispettivamente per il codice C/A e per il codice P(Y). 98 Giulio Mezzana – Roberto Dell’Ariccia Per quanto riguarda il codice P(Y), essendo criptato esso viene generato come una sequenza Pseudo-Noise che rispetti i 10.23 MHz di banda, utilizzando un apposito blocchetto Simulink PN: inoltre, esso viene convertito da unipolare in bipolare per il motivo già spiegato sopra e il tutto viene compattato in un nuovo blocchetto. Si hanno dunque i due codici di spreading che vanno a moltiplicare opportunamente i bit del messaggio di navigazione; dopodiché il segnale da trasmettere così ottenuto viene modulato su portante, rispettando le convenzioni considerate più volte che prevedono il C/A in fase ed il P(Y) in quadratura. Va notato che, prima di essere sommato al ramo in fase, il ramo in quadratura viene attenuato di 3 dB, così come richiesto nell’ICD del GPS. Per quanto riguarda l’implementazione della portante in fase e in quadratura, è stato implementato un sistema basato su un VCO la cui frequenza iniziale è pari alla somma dei parametri IF e Doppler scelti nell’interfaccia grafica: l’andamento della frequenza nel tempo è controllato da un segnale rampa la cui pendenza viene definita nell’interfaccia grafica ed è proprio pari alla Doppler rate scelta. Inoltre la portante viene generata con un ampiezza calcolata a partire dal valore di Carrier to Noise Ratio impostato nell’interfaccia grafica. Infatti tale parametro ‘C’ non rappresenta altro che il valore del rapporto C/N0 (in dB-Hz), che sarà richiesto in ingresso dal blocco di 99 Giulio Mezzana – Roberto Dell’Ariccia simulazione di segnale GPS, contenente al suo interno la somma dei segnali generati dai singoli satelliti della costellazione. A partire dal valore del rapporto Carrier-to-Noise, il simulatore provvede a calcolare l’ampiezza della sinusoide portante. Sapendo infatti che la potenza C di un segnale sinusoidale è legata alla propria ampiezza A dalla relazione: A2 C 2 (5.2) e che il rapporto C/N0 è dato da: C N0 C dBW N 0,dBW / Hz C dBW dB Hz C N0 N 0, dBW / Hz (5.3) dB Hz se ne conclude che l’ampiezza della sinusoide dovrà essere pari a: (5.4) A 2C ossia, considerando che il valore di C è fornito in ingresso in dBW: A 2 10 CdBW / 10 2 10 C N0 N 0 , dBW dB Hz / Hz / 10 (5.5) La (5.5) è precisamente la formula utilizzata nel campo ‘Output amplitude’ per determinare l’ampiezza della sinusoide a partire dal valore di C/N0 in dB-Hz fornito in ingresso al blocco a più alto livello. Lo schema Simulink descritto finora viene poi inserito in un blocco a più alto livello a cui è collegato un campionatore e un blocchetto che salva il segnale su un file .mat. 100 Giulio Mezzana – Roberto Dell’Ariccia L’andamento nel tempo del segnale del singolo satellite GPS a IF 15 MHz è il seguente, nel quale si vede bene la natura ondulatoria del segnale data dalla portante sinusoidale, ma la cosa più importante da notare è senza dubbio la presenza, evidenziata opportunamente dallo zoom, delle transizioni di fase binarie provocate dalla modulazione con il codice di spreading: Sebbene la rappresentazione in tempo precedente mostri qualche caratteristica illustrata dalla figura interessante del segnale trasmesso, tuttavia le maggiori informazioni sul corretto funzionamento del sistema in esame possono essere tratte dalla visualizzazione dello spettro di densità di potenza, sulla forma del quale si è già indagato nel capitolo 2. La figura seguente mostra lo spettro di densità di potenza (stimato utilizzando il metodo di Welch) della simulazione del segnale L1 del GPS centrato intorno ad una media frequenza di 15 MHz. In particolare, si può notare la sovrapposizione degli spettri tipici dei due codici C/A e P(Y), oltre a verificare la correttezza delle larghezze di banda dei due segnali (20.46 MHz per il Precision Code e 2.046 MHz per il Coarse/Acquisition Code). Nello zoom è evidenziato proprio la larghezza di banda del codice C/A. 101 Giulio Mezzana – Roberto Dell’Ariccia Un’ulteriore riprova della coerenza del simulatore al segnale reale è data dalla costellazione dei simboli della parte in fase, ovvero riferiti alla BPSK modulata dal codice C/A e dal messaggio di navigazione: successivamente si vedrà come il modulo di tracking del software receiver riuscirà a ricostruire i simboli della costellazione, mostrati nella figura seguente tramite lo Scatter Plot di Simulink. 102 Giulio Mezzana – Roberto Dell’Ariccia Ora che è stata descritta l’implementazione a basso livello, si può considerare quella ad alto livello, che semplicemente sfrutta l’implementazione del singolo satellite appena vista per generare un segnale in ricezione che sia la somma di più segnali GPS. Infatti, come ben evidenziato nel cap. 1, per determinare la soluzione navigazionale si necessita di almeno quattro SV in visibilità e dei relativi pseudoranges: è dunque auspicabile considerare la situazione in cui al ricevitore arrivi un segnale che sia la somma di almeno quattro segnali dai rispettivi satelliti. D’altra parte, di solito un ricevitore si trova a dover elaborare un segnale che è la somma di 8-12 segnali provenienti dai satelliti in vista, dunque sarà necessario simulare fino a 12 satelliti per valutare l’impatto della mutua interferenza in fase di acquisizione e tracking. Il risultato finale è il seguente, in cui i contributi dei singoli satelliti in vista vengono mascherati sotto un unico blocco, che permette di scegliere la frequenza intermedia, naturalmente comune a tutti i segnali: 103 Giulio Mezzana – Roberto Dell’Ariccia Non viene presentato il segnale in uscita al blocco GPS IF Signal generator, in quanto non risulta molto diverso dal segnale del singolo satellite già illustrato nelle figure precedenti: in particolare, in frequenza 104 Giulio Mezzana – Roberto Dell’Ariccia non cambia nulla, mentre in tempo variano solamente le ampiezze che risulteranno più grandi proporzionalmente al numero dei satelliti simulati. In conclusione, è interessante porre l’accento sulla differenza che intercorre fra il segnale del singolo satellite rispetto a quello costituito dalla somma dei quattro SV: in realtà, se i codici di Gold fossero perfettamente ortogonali, non vi sarebbe differenza alcuna in quanto, in ricezione, l’interferenza mutua fra i differenti segnali sarebbe stata completamente annullata dall’operazione di despreading. Tuttavia, come appropriatamente segnalato nei capitoli precedenti, in realtà l’ortogonalità dei vari codici di spreading non è perfetta, e si hanno dei valori non nulli in corrispondenza ad alcuni valori di cross-correlazione: questo significa che, modellando il segnale complessivo come somma di altri segnali GPS, si avranno delle perdite in ricezione, valutabili in termini di una riduzione della sensibilità del ricevitore rispetto al caso di ricezione del segnale del singolo satellite. 5.4. Il simulatore del segnale di GIOVE-A sulla banda L1 L’implementazione del simulatore per GIOVE-A è molto simile a quella del GPS; tuttavia, le differenze fra i due sistemi si rendono evidenti soprattutto per quel che riguarda i codici di spreading (primari e secondari), la modulazione e multiplazione. In particolare, il segnale di GIOVE-A si differenzia da quello Galileo per il fatto di avere un codice primario sul canale pilota lungo 8184 chips invece che 4092 e per una durata di 8 ms invece che 4 ms. 105 Giulio Mezzana – Roberto Dell’Ariccia Per quel che riguarda i registri, la differenza non sta nel principio di generazione dei chip dei codici (che infatti sono ancora codici di Gold, sebbene più lunghi), ma nel fatto che la rappresentazione dei valori iniziali e delle taps per la phase selection risulta meno immediata di quella del GPS e si basa sulle notazioni in ottale. 106 Giulio Mezzana – Roberto Dell’Ariccia Tuttavia, i codici primari e il codice secondario del canale pilota non sono stati generati via Matlab, poiché già disponibili in formato bipolare (confrontare []). La modulazione rappresenta invece la maggiore differenza rispetto a quanto realizzato per il GPS. Galileo è infatti il primo sistema satellitare ad introdurre l’innovativa modulazione BOC nella trasmissione del segnale di navigazione, modulazione di cui si è ampiamente trattato nel cap. 2; tale trattazione teorica rappresenta il fondamento per la realizzazione concreta del simulatore. Inoltre, un altro elemento di novità introdotto da Galileo è sicuramente la tecnica di multiplazione CASM, che rappresenta senza dubbio un’interessante modalità di trasmissione di un segnale a inviluppo complesso costante. L’implementazione del simulatore di GIOVE-A a frequenza intermedia è rappresentato nella figura seguente: 107 Giulio Mezzana – Roberto Dell’Ariccia L’interfaccia grafica associata è uguale a quella del GPS, apparte il fatto che ora il parametro Satellite ID scompare in quanto viene simulato un solo satellite. Come si può facilmente apprezzare, lo schema in oggetto è notevolmente più complicato di quello realizzato per il sistema GPS e ora se ne descriveranno i blocchi che lo compongono. 108 Giulio Mezzana – Roberto Dell’Ariccia Sul canale in fase, i codici primari, il messaggio di navigazione e il codice secondario vengono richiamati dal workspace di matlab, una volta averli caricati da un opportuno file e generati con il rate previsto nel ICD di GIOVE-A. Come si vede nella figura seguente, il codice secondario è concatenato col codice primario in modo tale che un chip del secondario duri un’intera replica del codice primario: dunque l’intera replica del secondario dura 25x8 ms cioè 200 ms, e quindi il rate equivale a 125 bit/s. Dunque la sequenza dei chip del secondario, già convertita in bipolare, che verrà generata a 125 bit/s sarà: 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 Per quanto riguarda il messaggio di navigazione a 250 bit/s sul canale B, è stata generata una sequenza predefinita di 10 bits, in modo tale da poterne verificare l’esatta ricostruzione in fase di tracking, come si farà per i chip del codice secondario. 109 Giulio Mezzana – Roberto Dell’Ariccia Anche in questo caso i codici primari sono sfasati circolarmente usando la funzione circshift di matlab: lo shift è applicato nello stesso modo a entrambi i codici primari, anche se hanno lunghezze differenti e ciò è reso possibile grazie alla proprietà circolare dei codici. Il blocco più interessante è sicuramente quello che si occupa di generare la sottoportante quadrata per la simulazione della modulazione BOC(1,1), utilizzata per la trasmissione del segnale L1. Benché teoricamente l’onda quadra potrebbe ottenersi calcolando il segno del seno, tuttavia il modo più efficiente è quello di utilizzare un generatore discreto di impulsi, già presente come funzione nella libreria di Simulink. La figura seguente mostra l’effettiva implementazione dell’onda quadra, mentre la successiva rappresenta l’interfaccia del blocco di generazione discreta di impulsi. Fig. 5.9 – Implementazione del segno del seno (onda quadra). Si noti solo che il sample time, che è un parametro fondamentale che Simulink richiede per quasi tutti i blocchi, è stato settato giustamente al doppio del valore nominale in quanto bisogna considerare che ciascun impulso dura due campioni (si veda il campo ‘Period’). 110 Giulio Mezzana – Roberto Dell’Ariccia Fig. 5.10 – Interfaccia del generatore di impulsi. Dunque, tenuto conto di questo effetto, il generatore restituisce un’onda quadra alla frequenza di 1.023 Msample/s, che è esattamente la frequenza della sottoportante di una BOC(1,1). Il blocco ‘Classified Data’ è costruito allo stesso modo di quello che si occupa della generazione del codice P(Y) del GPS, ovvero come una sequenza randomica che rispetta il rate previsto dal ICD. Da sottolineare il fatto che il canale A di L1 trasmette con una modulazione BOCc(15,2.5), quindi in questo caso in realtà l’onda quadra da generare è costituita dal segno del coseno piuttosto che del seno; questo cambiamento è ottenuto semplicemente ponendo ad uno il campo ‘Phase Delay’ del blocco che genera gli impulsi. Inoltre la frequenza va cambiata di conseguenza, portandola a 15.345 Msample/s. 111 Giulio Mezzana – Roberto Dell’Ariccia I vari blocchi che generano i differenti segnali BOC sono collegati fra loro secondo la logica della multiplazione CASM, che si ritiene utile riproporre qui di seguito: s L1 t 1 2 eL1 B t 2 eL1C t 3 j2 eL1 A t eL1 A t eL1 B t eL1C t (5.1) All’estrema destra dello schema si possono notare le funzioni d’onda sinusoidali, utilizzate per traslare su portante le componenti analogiche di bassa frequenza SL1-I e SL1-Q: anche in questo caso si è utilizzato lo stesso metodo del simulatore GPS, ovvero due VCO controllati da un segnale rampa. Come si vede nella figura seguente, lo schema viene incapsulato in un blocco ad alto livello seguito da un campionatore e da un blocco che salva il file nel formato .mat. Illustrato l’intero sistema, non rimane che mostrare i risultati del simulatore stesso nel dominio della frequenza, in quanto nel dominio del tempo si visualizzerebbe un plot non molto dissimile da quello mostrato per il GPS. A questo proposito, la figura seguente mostra l’andamento dello spettro di densità di potenza del segnale L1 di Galileo nella sua interezza, centrato intorno ad una portante di 20 MHz. Lo spettro offre molti spunti interessanti. In primo luogo, l’occupazione spettrale è quella che ci si attendeva da L1, con un segnale che occupa 40.92 MHz di banda, come dichiarato nel SIS-ICD. 112 Giulio Mezzana – Roberto Dell’Ariccia In secondo luogo, l’andamento spettrale al centro della portante mostra il classico splitting dello spettro in due lobi principali, tipico della modulazione BOC con cui sono trasmessi i segnali Galileo. Naturalmente, detto andamento andrà confrontato con quello riportato in letteratura per il segnale L1 di Galileo, che riportiamo nella figura successiva. Fig. 5.1 Spettro di densità di potenza del segnale L1 di GIOVE-A, centrato intorno a 20 MHz 113 Giulio Mezzana – Roberto Dell’Ariccia Fig. 5.2 Spettro di densità di potenza teorici dei segnali di GIOVE-A su L1 ed L2 Come si può ben notare, l’aderenza fra i due andamenti è evidente, a conferma della validità del simulatore presentato. Per trarre ulteriori informazioni dall’andamento spettrale, può essere interessante graficare gli spettri delle componenti di bassa frequenza I e Q separatamente, e non sommate insieme.. Un’analisi separata permette di trarre più informazioni, in quanto ciascuna delle due componenti è modulata con un’unica BOC, il cui andamento sarà più chiaramente riconoscibile se considerata separatamente dall’altra. A questo scopo, la figura seguente mostra lo spettro di densità di potenza della componente in fase e la figura successiva quello della parte in quadratura. Si può notare che la visualizzazione separata dei due rami ha portato gli effetti voluti, in quanto ora è possibile discutere separatamente le caratteristiche dei due segnali BOC che stiamo considerando. 114 Giulio Mezzana – Roberto Dell’Ariccia Fig. 5.3 Spettro di densità di potenza della parte in fase del segnale su L1 Fig. 5.4 Spettro di densità di potenza della parte in quadratura del segnale su L1 La prima figura mostra il ramo in fase, sul quale, come già evidenziato in precedenza, ci aspettiamo di trovare una modulazione BOC(1,1). Dalla discussione svolta nel capitolo 2, ci aspettiamo che lo 115 Giulio Mezzana – Roberto Dell’Ariccia spettro mostri due lobi principali, ciascuno di larghezza pari a 2.046 MHz: questa eventualità è ben evidenziata dallo zoom della a pagina seguente (si ricordi che il numero di lobi è dato da n, dove n è definito dal rapporto fra il doppio della frequenza della sottoportante e il chip rate del codice; nel caso della BOC(1,1), quindi, n = 2). Lo zoom evidenzia anche la frequenza su cui è centrato il lobo: è ben noto (vedi cap. 2) che il picco dovrebbe essere centrato ad una frequenza che dista dalla portante una quantità pari alla frequenza della sottoportante, che in questo caso è pari a 1.023 MHz. Dunque il picco dovrebbe essere centrato su 21.023 MHz; si vede tuttavia che l’effettiva frequenza centrale del lobo è leggermente inferiore: tale fatto è però pienamente giustificato nell’ambito nella modulazione BOC, in quanto è ben noto che l’interazione coerente fra la semibanda inferiore e quella superiore provoca un leggero abbassamento della frequenza centrale di ciascun lobo. Fig. 5.5 Spettro di densità di potenza della parte in fase del segnale su L1 (zoom) Le stesse considerazioni possono essere riproposte per la figura seguente: si tratta dello spettro di densità di potenza di quella che dovrebbe essere una BOCc(15,2.5). La prima considerazione è sul numero di 116 Giulio Mezzana – Roberto Dell’Ariccia lobi: considerando infatti che, in questo caso, n = 12, ci si aspettano 2 lobi principali divisi da 10 lobi secondari, come effettivamente si verifica. Inoltre, per la BOCc(15,2.5), i lobi principali dovrebbero essere centrati su frequenze che distano 15.345 MHz dalla portante, come effettivamente accade se osserviamo la fig. 5.18. Inoltre, lo zoom mostra che, anche in questo caso, l’effetto di interazione coerente fra le sottobande sposta leggermente in basso la frequenza centrale del lobo. Sempre lo zoom, evidenzia che la banda del lobo ottenuto è effettivamente pari ai 5.115 MHz attesi, comprovando così la correttezza del segnale generato. Fig. 5.6 Spettro di densità di potenza della parte in quadratura del segnale su L1 (zoom). Ora che le caratteristiche della modulazione sono state accertate, passiamo ad esaminare la correttezza dell’implementazione della modulazione CASM: il modo più immediato per discuterne è visualizzare la costellazione del segnale in uscita. Questo è stato fatto nella fig. 5.21, nella quale si sono considerati il ramo in fase e quello in quadratura, che sono stati utilizzati per costruire un segnale complesso a partire dal quale graficare poi il diagramma nel piano di Gauss della figura. Confrontando i 117 Giulio Mezzana – Roberto Dell’Ariccia punti di costellazione della figura seguente con i punti teorici della costellazione CASM, si nota l’aderenza del modello simulato a quello che sarà realmente trasmesso dai satelliti della costellazione Galileo. Può essere interessante notare che lo Scatter Plot di Simulink, in quanto progettato per disegnare i punti a tempo di simulazione, evidenzia chiaramente che l’occorrenza dei simboli non è la stessa: i punti puramente immaginari appaiono più spesso di quelli complessi. Questo comportamento è spiegabile considerando che i rami in fase ed in quadratura hanno differenti sia il chip rate che la frequenza della sottoportante: ciò provoca lo squilibrio osservato nelle occorrenze dei punti della costellazione. Fig. 5.7 Costellazione del segnale simulato L1 di GIOVE-A 118 Giulio Mezzana – Roberto Dell’Ariccia 5.5. Simulazione del Rumore Termico In questo paragrafo si andrà a considerare la schematizzazione (semplificata) dell’ambiente circostante, consistente nell’inserzione di un rumore gaussiano bianco sommato al segnale simulato. Naturalmente, mentre per i simulatori si è differenziato il discorso fra GIOVE-A e GPS, l’ambiente è invece lo stesso per entrambi i sistemi, dunque il discorso portato avanti in questo paragrafo sarà da considerarsi applicato tanto al GPS che a GIOVE-A. Il blocco per l’introduzione di rumore gaussiano bianco è un blocco di libreria in Simulink, il quale andrà dunque solamente settato opportunamente in modo da simulare l’opportuno livello di disturbo del sistema. La figura seguente mostra il blocco utilizzato, insieme con la relativa interfaccia. 119 Giulio Mezzana – Roberto Dell’Ariccia Fig. 5.8 Blocco Simulink per la generazione del rumore bianco a banda limitata Come si vede, la potenza di rumore è settata ad un valore conforme a quello espresso nella (2.14), ove si tenga in debito conto dell’eventualità che il blocco in questione richiede di specificare la densità spettrale di potenza di rumore bilatera (N0/2) anziché quella unilatera (questo spiega la differenza di 3 dB fra i due valori). Il parametro ‘Seed’ rappresenta il seme iniziale per il generatore di numeri pseudo-causali utilizzato dal blocco: non essendo un campo rilevante per lo scopo della presente tesi, viene lasciato il valore di default. Un discorso a parte merita in questo caso il valore del ‘Sample Time’, che rappresenta il tempo di campionamento del blocco. Teoricamente, il rumore gaussiano bianco ha un intervallo di correlazione pari a zero e una densità spettrale a banda infinita; in realtà, nei sistemi fisici, il rumore sarà bianco solo all’interno della banda del segnale. In altre parole il tempo di correlazione non sarà zero, ma molto più piccolo dell’inverso della frequenza massima usata nel modello. Il blocco genera, quindi, dei numeri casuali distribuiti normalmente secondo uno specifico sample time, che corrisponde all’intervallo di correlazione; quest’ultimo, affinché la simulazione sia accurata, deve essere scelto secondo la (5.6), condizione riportata nelle specifiche del blocco stesso: 120 Giulio Mezzana – Roberto Dell’Ariccia tc 1 1 100 f max (5.6) nella quale fmax rappresenta il massimo contenuto spettrale del segnale d’interesse. Considerando che il segnale d’interesse (GPS/GIOVE-A) è generato ad una media frequenza ben specificata (nell’esempio 14/20 MHz), allora il massimo contenuto spettrale sarà dato dall’IF cui si aggiunge la specifica semibanda del segnale. In altre parole, se consideriamo il GPS, allora il campo ‘Sample Time’ andrà posto pari a: tc 1 1 100 14 10.23 10 6 (5.7) Se invece parliamo di Galileo allora si dovrà porre: tc 1 1 100 20 20.46 10 6 (5.8) La (5.8) giustifica quindi pienamente il valore utilizzato nella fig. 5.23. L’inserzione di rumore porta naturalmente delle variazioni del segnale trasmesso, sia in tempo che in frequenza. In particolare, ci si dovranno attendere importanti modifiche agli spettri dei segnali visualizzati nelle figg. 5.15-5.20, oltre che ai punti di costellazione della CASM. Per quel che riguarda gli spettri di densità di potenza, bisogna ricordare le conclusioni a cui si era giunti alla fine del cap. 2: in particolare si era asserito che, introdotto l’opportuno livello di rumore, lo spettro del segnale utile non sarebbe più risultato visibile, trovandosi circa 15 dB sotto il rumore. Vediamo se quest’asserzione risulta verificata nel nostro caso: per prima cosa, mostriamo nella fig. 5.24 lo spettro di densità di potenza dei campioni di rumore in uscita al blocco. 121 Giulio Mezzana – Roberto Dell’Ariccia Fig. 5.9 Stima della densità spettrale di potenza del rumore simulato La figura precedente mostra appropriatamente come la densità spettrale di rumore sia abbastanza costante (come dovrebbe essere) sull’intervallo considerato, e come soprattutto il valore massimo della densità spettrale coincida con i –205.2 dBW/Hz riportati nella (2.14). Dunque, già il semplice confronto fra gli spettri delle figg. 5.6/5.19 e 5.24 mostra che il segnale GPS/GIOVE-A si trova mediamente circa 15 dB al di sotto del rumore, il che giustifica la nostra conclusione, tratta nel capitolo 2, che non è possibile osservare la presenza o l’assenza del segnale facendo uso di un semplice analizzatore di spettro, senza prevede alcuna amplificazione. Questa eventualità è puntualmente verificata dalla fig. 5.25, che rappresenta il confronto degli spettri del segnale GPS e del rumore, indicando anche la distanza fra i due livelli di densità di potenza. 122 Giulio Mezzana – Roberto Dell’Ariccia Fig. 5.10 Confronto fra le densità spettrali del GPS e del rumore L’ultima figura mostra un confronto particolarmente interessante, e spiega il motivo per il quale il segnale che entra in ingresso al ricevitore, di cui lo spettro di densità di potenza è mostrato nella fig. 5.26, non mostra nessun andamento particolare, ma di fatto non potrebbe, visto che si tratta di rumore gaussiano bianco. 123 Giulio Mezzana – Roberto Dell’Ariccia Fig. 5.11 Spettro di densità del segnale GPS simulato in ingresso al sistema ricevente Gli stessi discorsi si applicano al segnale Galileo, il quale, pur essendo trasmesso con maggiore potenza rispetto al GPS, si trova in ogni caso nelle stesse condizioni di segnale utile al di sotto del rumore di diversi dB, così come testimoniato dalla fig. 5.27, con riferimento al segnale sul canale pilota (che è quello di interesse per l’acquisizione, in quanto il canale criptato non potrà essere decodificato, mentre il canale di dati, per la presenza dei dati stessi, porta di fatto a misure più rumorose). Da quanto detto, segue che anche per il sistema Galileo il segnale in ingresso alla catena ricevente mostrerà un andamento in frequenza simile a quello della fig. 5.26, che quindi non si ritiene utile ripresentare per non appesantire la discussione. Invece è interessante mostrare come si modifica la costellazione CASM a causa del rumore, che sposterà i punti del piano di Gauss in modulo e fase intorno ai punti teorici delle figg. 5.21 e 5.22. La fig. 5.28 mostra la costellazione del segnale L1 cui è stato aggiunto del rumore bianco, con un C/No pari a 48.2 dB-Hz. 124 Giulio Mezzana – Roberto Dell’Ariccia Fig. 5.12 Confronto fra le densità spettrali del GPS e del rumore 125 Giulio Mezzana – Roberto Dell’Ariccia 6. ACQUISIZIONE DEI SEGNALI DI RADIONAVIGAZIONE 6.1. Introduzione Dopo aver descritto, a grandi linee, tutta la catena ricevente saranno ora descritti i differenti algoritmi di acquisizione. In particolare, l’attenzione sarà posta su quegli algoritmi che risultano teoricamente meno complessi dal punto di vista del carico computazionale e del tempo di esecuzione, e dunque più adatti ad un’implementazione completamente software. Come si vedrà, da questo punto di vista risulteranno molto interessanti gli algoritmi FFT-based, i quali presentano il grande vantaggio di parallelizzare, per uno dei due parametri di interesse nella fase di acquisizione, la ricerca sul dominio di definizione, riducendo conseguentemente i tempi di elaborazione. Questa descrizione sarà propedeutica sia per l’effettiva implementazione di tali algoritmi, sia per cominciare a comprendere quali fra le possibili alternative proposte in letteratura possa essere la migliore. Il capitolo prosegue con la trattazione, a livello generale, dei fondamenti teorici alla base delle distribuzioni attese di probabilità dei campioni in uscita al sistema di acquisizione, per poter fissare le opportune soglie di detezione una volta scelta una determinata probabilità di falso allarme. In chiusura, si affronta la descrizione delle scelte, interenti al processo di acquisizione, che condizionano le effettive prestazioni dei sistemi implementati 6.2. Aspetti teorici 6.2.1. Algoritmi di acquisizione Entriamo quindi nel dettaglio della descrizione teorica degli algoritmi utilizzati per l’acquisizione del segnale satellitare. Come già menzionato nel capitolo precedente, lo scopo dell’acquisizione è quello di determinare 126 Giulio Mezzana – Roberto Dell’Ariccia i satelliti in visibilità e di estrarre dei valori inziali della frequenza portante e della fase del codice dei segnali trasmessi dai vari satelliti. Come detto nei capp. 1 e 2, la costellazione GPS è costituita nominalmente da 32 satelliti, ciascuno identificato da una diversa sequenza PRN, secondo le corrispondenze riportate nella tab. 2.3. Il parametro della fase del codice rappresenta l’allineamento in tempo del codice PRN, nel blocco di dati corrente: questo parametro è necessario per poter generare, in ricezione, una copia locale del codice PRN che risulti perfettamente allineato con il codice di spreading dei dati in arrivo. Solo quando questo accade è possibile moltiplicare in ricezione il segnale ricevuto per il codice PRN del particolare SV in vista con la giusta fase, rimuovendo così il ranging code dallo stream di dati ricevuto1. Riveste molta importanza anche la portante del codice: tale frequenza corrisponde, nel caso più comune in cui si effetti un’operazione di down-conversion, alla media frequenza. L’IF è un parametro noto nella progettazione del software receiver, a partire dalla frequenza centrale del segnale in ricezione (nel nostro caso, L1 = 1575.42 MHz) e dai parametri di settaggio del mixer nel down-converter. Tuttavia si è visto, nel capitolo 2, che la frequenza ricevuta può deviare, ed in generale devierà, dalla portante nominale a causa della velocità non nulla in linea di vista del satellite, che darà luogo ad uno spostamento (in alto o in basso, a seconda che il SV sia in avvicinamento o in allontanamento) delle frequenza dovuto all’effetto Doppler. Abbiamo anche visto che, nel caso peggiore di ricevitore GNSS posto su un aeromobile in movimento ad alta velocità, la frequenza può deviare fino a 10 KHz. È importante conoscere con esattezza il valore reale della frequenza del segnale in arrivo, per poter essere in grado di generare una portante locale con cui moltiplicare il segnale in arrivo. In un ricevitore tradizionale, l’acquisizione è generalmente operata in un’ASIC, mentre nell’ambito di un ricevitore software, tale operazione è implementata in hardware. Nei prossimi paragrafi, verrà descritta nei 1 I codici PRN mostrano un elevato picco di correlazione solamente quando si trovano in corrispondenza al ritardo nullo (cfr § 2.3.3). Quindi, i due segnali devono essere perfettamente allineati per poter rimuovere il codice sui dati in arrivo. 127 Giulio Mezzana – Roberto Dell’Ariccia dettagli la teoria alla base del funzionamento dei tre principali metodi di acquisizione al fine di dimostrare la possibilità di implementazione del metodo più conveniente da utilizzarsi nell’ambito di un software receiver. Nell’ultimo paragrafo verrà inoltre fatto cenno alla modalità mediante le quali si sono calcolate le soglie di acquisizione utilizzate, sulla base delle statistiche dei campioni in ricezione. 6.2.2. Acquisizione mediante ricerca seriale L’acquisizione mediante ricerca seriale è uno dei primi metodi usati per acquisire un segnale nell’ambito dei sistemi ad accesso multiplo basato sulla tecnica CDMA, in quanto è il metodo di più immediata comprensione, ma anche il meno raffinato. La fig. 4.1 rappresenta i diagramma a blocchi dell’algoritmo di ricerca seriale. Fig. 6.1 Schema per l’acquisizione mediante ricerca seriale Come si può vedere dalla figura, l’algoritmo è basato semplicemente sulla moltiplicazione del segnale in arrivo per la sequenza di codice PRN e per il segnale portante locale, entrambi generati in ricezione. Il generatore del PRN da luogo ad una sequenza pseudo-random corrispondente allo specifico satellite e con una certa fase del codice (che per esempio, per il GPS va da 1 a 1023, mentre per Galileo va da 1 a 4092). Il segnale in ingresso è inizialmente moltiplicato per questa sequenza PRN generata localmente; dopodiché, si opera la moltiplicazione con la frequenza portante generata localmente. La moltiplicazione con il segnale portante genera il segnale in fase I, mentre la moltiplicazione con una versione 128 Giulio Mezzana – Roberto Dell’Ariccia ruotata in fase di 90° della portante stessa genera il segnale in quadratura Q. I segnali I e Q sono integrati su un certo periodo di tempo2 e infine sono posti in ingresso ad un blocco per il calcolo dell’elevamento al quadrato e poi sono sommati insieme. Idealmente, almeno per quel che riguarda il segnale GPS, la potenza di segnale dovrebbe essere collocata interamente sulla componente I del segnale, dal momento che il codice C/A è modulato solamente su quel ramo (cfr. equazione (2.6)): tuttavia, in questo caso, il segnale I generato dal satellite non corrisponderà in generale alla componente I demodulata. Questo accade perché la fase del segnale è incognita a causa dell’azione disturbante del rumore: quindi, per essere sicuri di rilevare correttamente il segnale, è necessario estendere la ricerca sia sulla componente I che su quella Q. L’output dello schema è costituito da un valore che rappresenta di fatto la correlazione fra il segnale in ingresso ed il segnale in arrivo dalla media frequenza. A questo punto, si pone una soglia di acquisizione predefinita sui campioni in uscita al correlatore: se la soglia viene superata, si dichiara il segnale presente e si assumono corretti i parametri di fase del codice e di frequenza portante che hanno dato luogo al picco di correlazione. Tali parametri possono dunque essere passati ai successivi loops di tracking per il raffinamento dei parametri di acquisizione di quel particolare SV. L’algoritmo di acquisizione seriale opera dunque su due sweeps successivi: uno sweep in frequenza, cercando su tutte le possibili frequenze portanti di media frequenza nel range di 10 KHz a passi di 1 KHz (vedi § 4.3.2), cui segue uno sweep su tutti i possibili code delay (1023 per il GPS, 4092 per Galileo). Questa schematizzazione ci permette di stimare il numero di possibili combinazioni che l’algoritmo seriale deve scandire prima di determinare se un determinato SV è in vista oppure no: in tutto, queste combinazioni assommano per il GPS a: 2 Questo periodo di tempo è generalmente scelto pari al periodo del codice del sistema che stiamo considerando: nel caso del GPS, quindi, si fissa pari ad 1 ms, nel caso del segnale L1 di Galileo invece si potrà fissare pari a 4 ms (dal momento che si hanno 4092 chip a 1.023 Mchips/sec). 129 Giulio Mezzana – Roberto Dell’Ariccia 10000 1023 2 1 1023 21 21483 combinazioni 1000 (6.1) Naturalmente si tratta di un numero molto elevato di combinazioni, ma questo numero è addirittura destinato ad aumentare nel caso del segnale Galileo. Per quest’ultimo infatti, il calcolo esplicito del canale pilota conduce a: 10000 8184 2 1 8184 21 171864 combinazioni 1000 (6.2) Questo algoritmo di ricerca seriale impone una ricerca esaustiva su un numero di possibili combinazioni che risulta, già per il sistema GPS, molto alto ma che, per il sistema Galileo, diventa addirittura improponibile. Questa scansione completa è sicuramente la più evidente debolezza del sistema di acquisizione basato sulla ricerca seriale in entrambi i domini della frequenza portante e della fase del codice. Bisogna sottolineare che questo schema va a pesare proprio sulle caratteristiche di complessità e costo computazionale che, in un’ottica di implementazione via software dell’acquisizione, rappresentano invece esattamente le caratteristiche da salvaguardare. 6.2.3. Acquisizione mediante ricerca parallela nel dominio della frequenza Nel paragrafo precedente abbiamo visto come il metodo di acquisizione completamente seriale risulti una procedura estremamente dispendiosa dal punto di vista del carico di calcoli, e, dunque, anche dal punto di vista del tempo necessario prima di poter fornire una risposta sulla presenza o meno del segnale di un particolare SV. Questo perché la ricerca è eseguita sequenzialmente su tutti i possibili valori assumibili dai due parametri di interesse: è evidente che, invece, se uno dei due domini potesse essere eliminato dalla procedura di ricerca seriale, ovvero potesse essere scandito in parallelo, le prestazioni di questa procedura potrebbero migliorare significativamente. 130 Giulio Mezzana – Roberto Dell’Ariccia Questo secondo metodo sfrutta proprio questa importante osservazione: come il nome stesso implica, nello schema di acquisizione mediante ricerca parallela nel dominio della frequenza si parallelizza la ricerca in uno dei due domini, quello della portante. Si tratta di un metodo FFT-based, che utilizza la trasformata di Fourier per operare una trasposizione dal dominio del tempo a quello della frequenza, nel quale è possibile scorrere in parallelo le celle del dominio stesso. La fig. 4.2 mostra lo schema a blocchi di quest’ulteriore schema di acquisizione: Fig. 6.2 Schema a blocchi dell’acquisizione mediante ricerca parallela nel dominio della frequenza Il segnale in arrivo è moltiplicato da una sequenza PRN generata localmente, con un codice corrispondente ad un certo satellite ed una fase del codice compresa fra 0 e 1023 (per il GPS), o fra 0 e 8184 (per Galileo canale pilota). Il segnale così ottenuto viene traslato nel dominio trasformato della frequenza mediante l’applicazione della trasformata di Fourier. Naturalmente la trasformata di Fourier discreta potrà essere implementata in differenti modi: in particolare sarà possibile utilizzare un algoritmo tipo DFT (Discrete Fourier Transform) oppure FFT (Fast Fourier Transform). La FFT è, fra i due, il metodo più veloce, ma richiede che la sequenza dei campioni in ingresso abbia lunghezza pari ad una potenza di due3. Per comprendere meglio il funzionamento dello schema, la fig. 4.3 illustra il risultato della moltiplicazione del segnale in ingresso con una replica perfettamente allineata (vale a dire con la giusta fase iniziale) del PRN del satellite in visibilità generato localmente. Come si vede chiaramente dalla figura a pagina seguente, il segnale all’ingresso del 3 La lunghezza della sequenza deve essere pari a 2x, x Є {1,2,....} 131 Giulio Mezzana – Roberto Dell’Ariccia blocco che calcola la FFT è costituito da un tono sinusoidale ad una frequenza fissata, qualora il codice sia perfettamente allineato. Quest’ultima condizione deve essere necessariamente verificata affinché sul segnale in arrivo scompaia completamente la modulazione dovuta al ranging code. Se il segnale contiene componenti provenienti da altri satelliti (come generalmente accade), queste ultime saranno minimizzate a causa delle proprietà di cross-correlazione delle sequenze di Gold, discusse nel cap. 2. Fig. 6.3 (a) Il codice PRN modulato sulla portante. (b) Il codice PRN perfettamente allineato. (c) Dopo la moltiplicazione con il segnale in (b), il risultato è un tono sinusoidale puro Dunque, se si considera che la fase del codice sia correttamente agganciata, allora la FFT opererà su un’onda sinusoidale ad una fissata frequenza, e restituirà in uscita un picco di elevata ampiezza (si tratta della materializzazione dell’impulso di Dirac, che corrisponde alla trasformata di Fourier di un segnale sinusoidale). Il picco in questione si troverà collocato in corrispondenza della frequenza dell’onda sinusoidale in ingresso: il calcolo del posizionamento del picco potrà dunque fornirci l’informazione sulla frequenza portante del segnale da acquisire, che corrisponderà alla media frequenza spostata di un offset dovuto alla Doppler. Sottraendo dunque all’indice di frequenza trovato il valore dell’IF (noto), potremo finalmente determinare l’entità dello shift Doppler che influenza il segnale in arrivo. 132 Giulio Mezzana – Roberto Dell’Ariccia L’accuratezza della frequenza così determinata dipende dalla lunghezza della DFT (o FFT); tale lunghezza corrisponde al numero di campioni che costituiscono il blocco di dati analizzati. Nell’ipotesi in cui si analizzi 1 ms di dati, il numero di campioni può essere calcolato come 1/1000 della frequenza di campionamento. Perciò, se la frequenza di campionamento risultasse, per esempio, pari a fs = 10 MHz, il numero di campioni sarebbe pari a N = 107/103 = 10000. Con una lunghezza della DFT (FFT) pari ad N, i primi N/2 campioni rappresentano le frequenze da 0 Hz fino a fs/2: per cui, la risoluzione in frequenza del segnale in uscita è pari a: f fs / 2 fs N /2 N (6.3) Nel caso in cui la frequenza di campionamento sia fissata a 10 MHz, la risoluzione sarebbe pari a 1 KHz. La fig. 4.4 mostra l’output del blocco che calcola la trasformata di Fourier. Nella parte (a) della figura è mostrato il risultato del calcolo della trasformata nel caso di codice perfettamente allineato: può essere notato facilmente il picco nel grafico (di diversi dB al di sopra degli altri valori del grafico) che indica la frequenza del segnale entrante. La parte (b) della figura mostra invece l’uscita della FFT nel caso in cui la moltiplicazione sia avvenuta per un codice non perfettamente allineato: questa eventualità può essere riconosciuta dall’assenza di picchi nel plot. 133 Giulio Mezzana – Roberto Dell’Ariccia Fig. 6.4 Trasformata di Fourier del segnale in ingresso moltiplicato per il codice. (a) Moltiplicazione per un codice perfettamente allineato, presenza del picco. (b) Moltiplicazione con un codice non allineato, nessun picco è presente Mentre il metodo di acquisizione mediante ricerca seriale scandisce tutte le celle su entrambi i domini della fase del codice e della Doppler, la ricerca parallela nel dominio della frequenza deve scandire serialmente soltanto le 1023 (8184) celle del code delay. A fronte di questo vantaggio c’è naturalmente da considerare che il parallelismo è stato ottenuto a spese del costo computazionale dell’operazione di trasformazione secondo Fourier per il passaggio in frequenza. Ma la cosa importante da considerare è che, a seconda dell’implementazione utilizzata per il passaggio al dominio trasformato, è possibile e relativamente facile ottenere un algoritmo che permetta un’acquisizione più rapida, se comparata con quella ottenibile con il metodo puramente seriale. Tale maggiore velocità è naturalmente imputabile alla possibilità di scorrere il dominio Doppler in parallelo, senza la necessità di scandire cella per cella. 6.2.4. Acquisizione mediante ricerca parallela nel dominio della fase del codice L’idea di base nella ricerca parallela nel dominio della frequenza può essere ulteriormente sviluppata, considerando la possibilità di parallelizzare la ricerca nel dominio della fase del codice. Come si vede dalle equazioni (4.1)-(4.2), il numero di celle di ricerca nel dominio della fase del codice è significativamente più grande rispetto a 134 Giulio Mezzana – Roberto Dell’Ariccia quello che si ha nel dominio della frequenza, e questo è tanto più vero se consideriamo un sistema come Galileo, che in banda L trasmette codici anche otto volte più lunghi di quelli in uso per GPS. Allora, invece di utilizzare un metodo di acquisizione come il precedente, che parallelizza la ricerca nel dominio della frequenza eliminando la necessità di scandire le 21 possibili celle in Doppler, l’idea per migliorare ulteriormente le performance del sistema è quella di parallelizzare la ricerca nel dominio del codice, così che solamente 21 celle in Doppler debbano essere scandite, contro le 1023/8184 del metodo precedente. In quest’ambito, uno dei più recenti algoritmi utilizzati per l’acquisizione dei segnali GPS, è stato progettato proprio per sfruttare al meglio i vantaggi della parallelizzazione nel dominio del code delay, ed è noto come schema di acquisizione mediante ricerca parallela nel dominio della fase. Come abbiamo visto, lo scopo dell’acquisizione è quello di calcolare la correlazione del segnale in ingresso ed un codice PRN. Invece di moltiplicare il segnale in ingresso con un codice PRN, traslato di volta in volta secondo tutti i 1023/8184 possibili ritardi (come si fa nell’acquisizione seriale), è più conveniente operare la correlazione circolare tra il segnale in ingresso ed il codice PRN senza dover di volta in volta ritardare la fase. Dal punto di vista teorico, è possibile operare una correlazione circolare nel dominio della frequenza, utilizzando ancora una volta la trasformata di Fourier: un metodo per realizzare quanto detto è descritto in [14] e verrà riportato di seguito. La trasformata di Fourier discreta (DFT) di una sequenza x(n) di lunghezza finita N, è calcolata come segue: N 1 X k xn e i 2kn / N (6.4) n 0 La cross-correlazione fra due sequenze x(n) e y(n), entrambe di lunghezza finita N, si può calcolare come: 135 Giulio Mezzana – Roberto Dell’Ariccia z n N 1 xm yn m (6.5) m 0 La convoluzione, sempre fra le stesse due frequenze di lunghezza finita e pari ad N, si può scrivere come: N 1 z n xn y n x m y n m (6.6) m 0 A questo punto si impongono due osservazioni molto importanti. La prima: le equazioni (4.5) e (4.6) mostrano bene che l’unica differenza fra la cross-correlazione e la convoluzione fra due sequenze di lunghezza finita è il segno dell’espressione y n m . Secondariamente, bisogna ricordare una proprietà fondamentale di teoria dei segnali che ci dice che la convoluzione in tempo fra due sequenze diventa, in frequenza, il prodotto delle due sequenze trasformate. Dunque è possibile scambiare moltiplicazione e convoluzione grazie alla trasformata di Fourier in maniera immediata; combinando le equazioni (4.4) e (4.6) si ottiene la DFT della convoluzione fra X k e Y k , a dimostrazione della proprietà appena menzionata: N 1 N 1 Z k xm y n m e i 2 kn / N n 0 m 0 N 1 N 1 m 0 n 0 (6.7) xm e i 2 km / N y n m e i 2 k nm / N X k Y k La (4.7) dimostra di fatto il legame, garantito dalla trasformata di Fourier, fra convoluzione e moltiplicazione, che può essere riassunto dalla (4.8): F z n xn y n Z k X k Y k (6.8) Combinando ora le equazioni (4.4)-(4.6), si ottiene la DFT della crosscorrelazione fra X k e Y k : 136 Giulio Mezzana – Roberto Dell’Ariccia N 1 N 1 Z k xm y n m e i 2 kn / N n 0 m0 N 1 xm e m 0 i 2 km / N N 1 yn m e (6.9) i 2 k n m / N X k Y k n 0 Quindi, l’ultima formula dimostra come la connessione fra la correlazione nel dominio del tempo e la sua rappresentazione nel dominio trasformato è molto simile alla connessione che esiste fra la convoluzione e la sua rappresentazione in frequenza. L’unica differenza risiede nel fatto che la trasformata di Fourier di una delle due sequenze deve essere coniugata prima della moltiplicazione. Ora che la rappresentazione della correlazione nel dominio della frequenza è stata determinata, si può tornare nel dominio del tempo (dove dobbiamo tornare per poter visualizzare il risultato della correlazione) attraverso l’utilizzo della trasformata inversa di Fourier (IDFT/IFFT). Basandosi sulle equazioni (6.4)-(6.9), la fig. 6.5 mostra lo schema a blocchi dell’algoritmo di ricerca parallela nel dominio della fase del codice. Fig. 6.5 Schema a blocchi per l’acquisizione mediante ricerca parallela nel dominio della fase del codice Il segnale in arrivo è moltiplicato con un segnale proveniente da oscillatore locale, che ha il compito di scandire le 21 celle Doppler alla ricerca della reale frequenza portante del segnale in ingresso. Tramite questa moltiplicazione si generano le componenti analogiche di bassa 137 Giulio Mezzana – Roberto Dell’Ariccia frequenza del segnale, in fase (I) ed in quadratura (Q, moltiplicazione con una versione ruotata in fase di 90° dell’OL). I due segnali I e Q sono combinati insieme a formare un numero complesso xn I n jQ n , che rappresenta l’input al sistema di calcolo della DFT/FFT. La copia della sequenza PRN generata in ricezione è trasformata nel dominio della frequenza, ed il risultato (complesso) viene coniugato, secondo quanto appreso dalle equazioni precedenti. A questo punto, si realizza la correlazione circolare nel dominio della frequenza secondo la (4.9), moltiplicando fra loro la trasformata di Fourier del segnale in arrivo dopo battimento e il complesso coniugato della trasformata di Fourier del PRN memorizzato. In ultimo, si ripassa nel dominio del tempo per la visualizzazione dei risultati attraverso l’uso della trasformata inversa di Fourier: l’output della IDFT/IFFT viene posto in ingresso ad blocco che ne calcola il modulo quadro, ed infine avviene il confronto con le predisposte soglie di acquisizione. Il punto fondamentale è che, secondo la (6.9), il valore assoluto dell’output della trasformata di Fourier inversa rappresenta nei fatti la cercata correlazione fra il segnale in ingresso ed il codice PRN memorizzato: quindi, se un picco è presente (e supera la soglia di acquisizione) allora si potrà affermare che il SV associato a quel PRN è in vista, e l’indice del picco (opportunamente normalizzato) indica la fase del PRN con cui il segnale in ingresso è modulato. S’impongono, allora, una serie di osservazioni. In primo luogo, l’algoritmo appena descritto, se comparato con il metodo di ricerca parallelo in frequenza, dovrà operare una ricerca seriale solamente sulle suddette 21 celle nel dominio Doppler: per ciascuna di queste celle, si dovrà calcolare una trasformata di Fourier ed una trasformata inversa, così che l’effettiva efficienza di calcolo del metodo di acquisizione dipenderà essenzialmente dal modo in cui queste funzioni sono implementate al calcolatore. In secondo luogo, mentre l’accuratezza nella stima della frequenza è la stessa degli altri due algoritmi, l’accuratezza della stima del parametro di fase del codice PRN è sicuramente maggiore rispetto agli altri metodi, in 138 Giulio Mezzana – Roberto Dell’Ariccia quanto, invece di avere l’accuratezza di un chip, si ha una precisione che dipende dal numero di campioni utilizzati (in quanto viene restituito un valore di correlazione per ciascun campione di segnale). Ciò significa che, se per esempio la frequenza di campionamento è fissata a 10 MHz, allora una sequenza di codice PRN campionata è composta da 10000 campioni, in modo che il valore di fase del codice stimato può assumere 10000 valori diversi, invece che 1023/8184 come accadeva negli altri due metodi. L’algoritmo appena descritto dunque, essendo quello che impone il minor numero di ricerche seriali (solo sulle 21 celle in doppler), è senz’altro quello da cui ci si aspettano i risultati migliori, almeno dal punto di vista della velocità di acquisizione (in quanto per quel che riguarda il carico computazionale bisogna comunque tenere in debita considerazioni le operazioni di FFT/IFFT). Questo è soprattutto vero per il sistema Galileo, per il quale si evita di scandire serialmente le 8184 celle di code delay che rappresentano la lunghezza dei codici trasmessi sulla portante L1 per il canale pilota. 6.2.5. Soglie di acquisizione Vediamo ora brevemente come possono essere calcolate le soglie da porre sul segnale in uscita al blocco che si occupa di acquisire un particolare satellite: il superamento di dette soglie comporterà l’assunzione, da parte del sistema, che il particolare satellite è effettivamente in vista. Naturalmente, vista la presenza del rumore termico, dette assunzioni saranno affette da una certa probabilità di falso allarme, che rappresenta la probabilità che la soglia sia superata dal solo rumore, e di mancata rivelazione, che rappresenta l’eventualità che il picco di correlazione non superi la soglia. Per quantificare queste probabilità, occorre determinare i livelli di segnale attesi secondo le statistiche ipotizzabili per i campioni in uscita al rivelatore quadratico d’inviluppo. Le simulazioni effettuate sono tutte sviluppate in un ambiente caratterizzato da rumore gaussiano bianco, dunque i 2N campioni (N per la componente I ed N per la componente Q) che vengono posti in ingresso al rivelatore quadratico d’inviluppo che segue i correlatori possono essere 139 Giulio Mezzana – Roberto Dell’Ariccia assunti gaussiani. La somma dei quadrati di 2N variabili aleatorie gaussiane dà luogo ad una nuova distribuzione chiamata distribuzione -quadrato a 2N gradi di libertà che ha la formulazione seguente [2], [15]: N z I 2k Q 2k N 2 E Ik E Qk k 1 2 k 1 (6.10) i z z N i 1 e 2 2 2 Pz; , N e i! 2N i N i 1! i 0 Si può dare ora, una definizione più analitica di cosa siano effettivamente le probabilità di falso allarme e di mancata rivelazione. Si noti che per i falsi allarmi manca il termine che rappresenta proprio l'energia del segnale e in questo caso la distribuzione si dice centrale: Th FA P( z; N )dz MD P (z;, N )dz Th (6.11) 0 Queste due equazioni rappresentano esattamente il principale problema da risolvere e, vista la non immediatezza della formulazione della distribuzione -quadrato, il compito non è agevole senza l'uso di calcolatori. Per un’analisi più dettagliata di queste distribuzioni si rimanda al [2], in questo paragrafo si presenteranno solo i risultati più interessanti. La risoluzione dei due integrali proposti genera le distribuzioni cumulative -quadrato nella forma centrale e non centrale, che per l’analisi in corso rappresentano le formule generali di mancata rivelazione e falso allarme: Th 2 FA e i 0 i! 2 e j i N 1 Th 2 MD 1 e j 0 2 j! Th N j 1 2 i 0 Th i 2 i! (6.12) Si nota subito che il calcolo più complesso da realizzare è quello relativo alla distribuzione non centrale, perché presenta una serie numerica all'interno della quale vi è una sommatoria. Si può comunque anticipare che il troncamento della serie al termine j=k produce un errore non superiore alla quantità qui di seguito indicata: 140 Giulio Mezzana – Roberto Dell’Ariccia j k err 1 e 2 2 j0 j! (6.13) Nella fig. 4.6 a pagina seguente sono mostrate le probabilità di falso allarme al variare della soglia e delle post-accumulazioni (cioè del numero di millisecondi memorizzati e poi sommati per effettuare una sorta di integrazione incoerente), così come riportate in [15]. Dunque si vede che naturalmente il valore della soglia dipenderà dal livello di rumore presente nelle simulazioni: tale livello è già stato calcolato nel cap. 2, ed è su quei valori che si procederà al calcolo della soglia di acquisizione per un fissato valore di Pfa, mediante la fig. 6.6. 6.2.6. Fattori che influenzano le prestazioni dell’acquisizione Diversi sono i fattori che possono influenzare in maniera non trascurabile le reali prestazioni ottenibili dal programma che esegue l’acquisizione. Uno dei fattori più importanti è senza dubbio la lunghezza del pacchetto di dati utilizzati per acquisire il ritardo del codice e lo shift Doppler. Un altro fattore importante è la larghezza del passo utilizzato nella ricerca lungo il dominio Doppler: utilizzando passi più piccoli si ottiene una ricerca più fine in frequenza, ma si aumenta il tempo di processazione. 141 Giulio Mezzana – Roberto Dell’Ariccia N=1 Probabilità di falso allarme N=2 N=3 100,000% N=4 N=5 10,000% N=6 N=7 1,000% N=8 N=9 0,100% N=10 0,010% 0,001% 4 14 24 34 44 54 64 2 Soglie in sigma Fig. 6.6 Probabilità di falso allarme al variare della soglia di acquisizione 6.2.7. Lunghezza del set di dati da acquisire È importante determinare, secondo criteri di ottimalità delle prestazioni, la lunghezza dei dati su cui vengono applicati gli algoritmi di acquisizione fin qui descritti. Più lungo è il set di dati, più si allunga il tempo necessario a portare a termine l’acquisizione; tuttavia, il beneficio che si ha nell’usare periodi di dati molto estesi è il miglioramento del rapporto S/N del segnale in ricezione [9]. Il problema dell’acquisizione va poi contestualizzato nell’ambito delle problematiche del ricevitore software: ciò significa che, per ottenere acquisizioni ragionevolmente rapide, occorrerà scegliere accuratamente la lunghezza ottima del set di dati. I due fattori che limitano la scelta di set di dati eccessivamente lunghi sono la lunghezza dei dati di navigazione e la velocità di variazione della frequenza Doppler. Infatti, dal momento che un bit del messaggio di navigazione (per il GPS) dura 20 ms, se accade che i primi 10 ms di dati contengono una transizione di fase dovuta alla variazione del bit di navigazione, allora non ci sarà nessuna transizione di fase nel successivi 10 ms. Quindi, la massima lunghezza di dati da utilizzarsi è pari a 10 ms [20]. 142 Giulio Mezzana – Roberto Dell’Ariccia Dal momento che il codice C/A ha una durata di 1 ms, è certo che l’inizio del segnale codificato col C/A potrà essere trovato all’intero del set di dati della lunghezza selezionata. Tuttavia, c’è ancora la possibilità che la transizione di fase dovuta al bit di navigazione si abbia all’interno di questo millisecondo di dati: se questo avviene, allora certamente il successivo millisecondo di dati non potrà contenere nessun altra transizione di fase dovuta al messaggio di navigazione. Perciò, al fine di garantire la presenza di almeno un set di dati esente da transizioni di fase, dovranno utilizzarsi un minimo di 2 ms consecutivi di dati in acquisizione. Dalla discussione fin qui presentata, i limiti all’interno dei quali scegliere la lunghezza del set di dati sono fissati fra 2 e 10 ms; bisogna però considerare il trade-off fra la lunghezza dei dati e la durata dell’acquisizione. Per questo, nella maggior parte dei casi, sono richiesti uno o due millisecondi per acquisire segnali con buona potenza, mentre ne servono generalmente cinque o dieci per acquisire segnali più deboli. Per il sistema Galileo, analoghi ragionamenti portano a concludere che la dimensione da scegliere per il set di dati da acquisire sia pari a 8 ms (bisogna infatti ricordare che i codici di spreading utilizzati sul canale pilota di L1 sono lunghi otto volte tanto quelli del GPS). 6.2.8. Dimensione delle celle in Doppler Il passo da utilizzare nella ricerca sul dominio Doppler è un altro fattore importante per conseguire un’acquisizione rapida ed efficace. Infatti, dal momento che la frequenza portante del segnale è affetta da uno shift Doppler, tale shift deve essere naturalmente tenuto in conto nella generazione del segnale, e dovrà essere ricercato su tutto il dominio di definizione. Il numero di celle Doppler da coprire sul range ±10 KHz deve essere determinato in modo opportuno: usare un passo grande nella ricerca aumenta naturalmente la velocità con cui si ottengono i risultati, d’altro canto un passo più fine permette una maggiore accuratezza nella determinazione della Doppler, pur risultando in un aumento del carico computazionale. 143 Giulio Mezzana – Roberto Dell’Ariccia Il punto importante è però che il passo da utilizzare nella ricerca in frequenza è correlato alla lunghezza del set di dati usato in acquisizione [8]. Dalle proprietà di correlazione dei codici di Gold infatti, si può vedere come, quando il segnale in ingresso e la copia locale del codice sono sfasate di un chip, non si registra nessuna correlazione. Se invece i due segnali sono sfasati per meno di un chip, allora si ha una correlazione parziale: in particolare, se c’è un offset di mezzo chip, l’ampiezza del picco di correlazione si riduce di 6 dB. Per assicurare che ci sia ancora una correlazione parziale fra il segnale in ingresso e quello memorizzato, occorre che la separazione in frequenza non ecceda il mezzo chip di offset. Se quindi si sceglie di acquisire su un set di dati lungo 1 ms, allora un segnale di 1 KHz varierà di 1 ciclo in un millisecondo. In particolare, la relazione da rispettare è la seguente: Lunghezza set dati x Larghezza celle Doppler = 1 cilclo (6.14) Allora, nel caso del GPS, per far sì che il requisito (6.14) sulla massima separazione in frequenza sia rispettato, il passo in frequenza deve essere scelto pari ad 1 KHz. Nel caso del sistema Galileo invece, poiché la lunghezza del set di dati acquisito si allunga, si deve ridurre la dimensione delle celle in Doppler (aumentandone di conseguenza il numero). In particolare, poiché per come detto prima si acquisirà su blocchi di 8 ms, la (4.14) impone che il passo da utilizzare in frequenza sia pari a 125 Hz, ossia 1/8 di quello utilizzato per il GPS. Questo significa che con Galileo si avranno 81 celle contro le 21 celle del GPS: naturalmente, il fatto di scandire più celle in Doppler avrà un peso sia dal punto di vista del carico computazionale che dei tempi medi di acquisizione. Tuttavia bisogna tenere bene a mente che tale fatto è intrinseco al sistema Galileo stesso, e dunque non rappresenta una differenza eliminabile al fine di poter utilmente comparare fra loro i due sistemi. Si tratta invece di una peculiare caratteristica di Galileo, che impone la ricerca Doppler su un maggior numero di celle, per non perdere il picco di acquisizione. 144 Giulio Mezzana – Roberto Dell’Ariccia L’ultima caratteristica da evidenziare è che si farà riferimento ad acquisizioni “a freddo”, senza cioè avere alcuna notizia a priori sulla posizione dei satelliti o del ricevitore stesso: nella realtà, tuttavia, si potrà generalmente procedere ad acquisizioni “a caldo”, potendo utilizzare informazioni precedentemente memorizzate che, combinate con le informazioni degli almanacchi, consentono di ridurre sensibilmente i tempi di acquisizione riducendo le celle di ricerca sul dominio bidimensionale. 6.3. Implementazione software 6.3.1. Obiettivi 6.3.2. Architettura Generale L’algoritmo implementato nel modulo di acquisizione è il Parallel Code Phase Search, descritto nel capitolo teorico dedicato all’acquisizione: la scelta è stata fatta sulla base delle migliori prestazioni e del minor costo computazionale del Parallel Code Phase Search rispetto agli altri due algoritmi esaminati. Ad alto livello il modulo di acquisizione è sostanzialmente uguale sia per GPS sia per Galileo, in quanto a livello funzionale gli inputs e gli outputs che lo caratterizzano sono gli stessi. Fondamentalmente gli inputs sono rappresentati da: Un segnale ad una certa frequenza intermedia, campionato con un’opportuna frequenza di campionamento ed eventualmente quantizzato, convertito nel formato .mat di Matlab Un insieme di parametri, alcuni inerenti al segnale da processare (IF e Fs) e altri che specificano direttamente l’algoritmo, quali la Probabilità di Falso Allarme del sistema e il numero di frames di acquisizione da utilizzare. 145 Giulio Mezzana – Roberto Dell’Ariccia Le repliche locali dei codici CA e le stesse repliche trasformate nel dominio della frequenza mediante FFT e coniugate Le repliche locali dell’oscillatore locale, ovvero seno e coseno Dopo il processamento, gli outputs generati dal modulo di acquisizione sono: La lista dei canali allocati, che definisce quali satelliti sono stati acquisiti e con quale doppler e con quale fase del codice. 6.3.3. Descrizione dell’algoritmo di Acquisizione per GPS In questo paragrafo sarà esaminato nel dettaglio l’algoritmo di acquisizione per GPS, discutendo tutti i passaggi intermedi del processamento, facendo riferimento all’acquisizione su 1 ms di dati, rimandando ai successivi paragrafi possibili varianti sul set di dai da acquisire. Nella figura seguente viene mostrato lo schema a blocchi dell’algoritmo, che rappresenta l’espansione del blocco centrale del precedente schema. 146 Giulio Mezzana – Roberto Dell’Ariccia Prima di poter iniziare l’acquisizione vera e propria sono eseguite delle operazioni preliminari: Conversione del file dal formato originario al formato .mat di Matlab Impostazione dei parametri di acquisizione 147 Giulio Mezzana – Roberto Dell’Ariccia Parametro Frequenza Intermedia (Hz) Frequenza di campionamento (Hz) Frames di Acquisizione Doppler massima di scansione Doppler fine (boolean) Passo di ricerca della doppler fine (Hz) Pfa Funzione Determina la frequenza centrale intorno alla quale ricercare il segnale, è una caratteristica del file di dati da processare. Influenza la generazione delle repliche dell’oscillatore locale Determina quanti campioni per chip verranno generati campionando le repliche dei codici CA, è una caratteristica del file di dati da processare Ci sono 21 valori possibili (0.5,1:20), determina la lunghezza del set di dati da acquisire e la lunghezza delle repliche di codice e OL Definisce il massimo valore in modulo della doppler che verrà ricercata Attiva/disattiva la ricerca fine Se la ricerca fine è attivata, determina la risoluzione finale ottenuta e il numero di iterazioni della scansione Determina la soglia di acquisizione Generazione delle repliche campionate dei codici CA e delle rispettive FFT coniugate: le repliche sono generate in base alla Fs e alla lunghezza del set di dati da acquisire, le FFT* vengono impiegate nel modulo di generazione della soglia e nel calcolo della matrice di acquisizione mentre le repliche nel dominio del tempo vengono impiegate nel modulo di ricerca fine della frequenza doppler. Il campionamento viene eseguito tramite Matlab, a partire dal tempo di campionamento 1/Fs e dal tempo di chip 1/1023000, e dopo vengono calcolate le FFT: nelle figure seguenti sono mostrate l’autocorrelazione e la cross-correlazione per dei codici CA campionati a 12.276 MHz con 1 frame di acquisizione, cioè lunghi 12276 campioni (6 campioni per chip). Come ci si aspettava il picco di autocorrelazione è pari al numero totale di campioni ovvero 12276, mentre la cross-correlazione è compresa in un range di valori che va da 1000 a -1000, ovvero il valore massimo di 148 Giulio Mezzana – Roberto Dell’Ariccia autocorrelazione è circa 12-13 volte più alto del massimo valore di cross-correlazione, come per i codici CA non campionati. CA 1 Autocorrelation, frames = 1 14000 12000 10000 samples 8000 6000 4000 2000 0 -2000 -1.5 -1 -0.5 0 code shift (samples) 0.5 1 1.5 4 x 10 CA 1,CA 2 Cross-correlation, frames = 1 1000 800 600 400 samples 200 0 -200 -400 -600 -800 -1000 -1.5 -1 -0.5 0 code shift (samples) 0.5 1 1.5 4 x 10 149 Giulio Mezzana – Roberto Dell’Ariccia C’è da rimarcare il fatto che le repliche che saranno input all’unità di ricerca fine, saranno lunghe un solo frame. Generazione delle repliche campionate del seno e del coseno dell’oscillatore locale: le repliche sono generate in base alla Fs, alla IF (che determina la frequenza centrale) e alla lunghezza del set di dati da acquisire che ne determinano la lunghezza, mentre il numero delle repliche è determinato dalla massima doppler di scansione e dal passo di scansione, determinato dalla lunghezza del set di dati acquisito. Le repliche sono impiegate nel calcolo della matrice di acquisizione e nel modulo di generazione della soglia. Inizializzazione dei 12 canali GPS: 12 variabili di tipo struct vengono inizializzate in Matlab, ognuna con gli stessi attributi. Variabile “canale” Numero del satellite (1,32) Status del canale (acquisito/non acquisito) Doppler di acquisizione Frequenza di acquisizione (IF + doppler di acquisizione) Fase di acquisizione (in chips) Fase di acquisizione (in campioni) Picco di correlazione Una volta concluse le operazioni preliminari, è possibile iniziare l’acquisizione dei satelliti GPS in visibilità, secondo una sequenza di operazioni che verranno descritte ora, evidenziando i passi fondamentali dell’algoritmo implementato. Step 1 Dal file di dati viene selezionato il primo millisecondo e vengono caricate le repliche 150 Giulio Mezzana – Roberto Dell’Ariccia Step 2 Calcolo della soglia di acquisizione Step 3 Scansione dei 32 satelliti GPS: dopo il calcolo della soglia, vi è un ciclo for che esegue una scansione dei 32 satelliti GPS selezionando mediante l’indice di scansione il determinato codice CA campionato. Step 3.1 Per ogni satellite, viene eseguita una scansione seriale nel dominio della frequenza doppler nell’intorno della IF di riferimento. Il numero delle celle doppler scandite, fissato il numero dei frames di acquisizione a 1, dipende dalla massima doppler che si vuole ricercare: con un solo frame (1 ms), la risoluzione in frequenza e cioè il passo di scansione è pari a 1 kHz, ovvero si avranno 11 celle per un ricevitore stazionario (5 kHz di massima doppler) e 21 celle per un ricevitore in movimento (10 kHz di massima doppler). Step 3.1.1 Per ogni cella doppler, tramite un ciclo for, vengono effettuate le seguenti operazioni: 1. Tramite battimento con le repliche seno e coseno dell’oscillatore locale vengono estratte le componenti in fase (I) e in quadratura (Q) 2. Le componenti I e Q vengono sommate per formare il segnale complesso in input alla FFT 3. Il segnale complesso viene trasformato tramite FFT 4. Il segnale ottenuto al punto III viene moltiplicato elemento per elemento per la FFT coniugata del codice CA corrispondente al satellite che si sta cercando di acquisire 5. Il vettore ottenuto al punto IV viene anti trasformato 6. Dal vettore ottenuto al punto V viene estratto il modulo quadro 151 Giulio Mezzana – Roberto Dell’Ariccia 7. Il vettore ottenuto viene inserito nella matrice di acquisizione, costruita per righe, ovvero ogni riga rappresenta il risultato di una ricerca parallela nel dominio della fase del codice, fissata la cella doppler Step 3.2 Alla fine della scansione doppler è stata costruita per righe la matrice di acquisizione, che avrà dimensioni pari al numero delle celle doppler per il numero di campioni di codice nel millisecondo di acquisizione, ovvero Fs/1000. Ogni elemento della matrice rappresenta il valore di correlazione ottenuto per il dato satellite, per determinati valori di doppler e fase del codice, identificati dagli indici dell’elemento della matrice. Dalla matrice di acquisizione viene calcolato il massimo che rappresenta il picco di correlazione, e gli indici del massimo corrispondono alla doppler e alla fase del codice stimati. La fase del codice acquisita è espressa in campioni e in questo formato viene inviata al modulo di tracking. Tuttavia è possibile risalire alla fase espressa in chips, e dunque confrontabile con quella settata nel simulatore, attraverso una semplice conversione, sapendo con quanti campioni un chip di codice viene rappresentato: Ad esempio, con 13 campioni per chip e una fase stimata in campioni di 276, la fase in chips sarà 20.23. Step 3.3 Tramite un if viene effettuato un controllo sul picco di correlazione calcolato. Se il picco non supera la soglia, ovvero si assume il satellite non in visibilità, l’algoritmo ritorna allo Step 3.1. Step 3.3.1 152 Giulio Mezzana – Roberto Dell’Ariccia Se il picco supera la soglia, le seguenti operazioni vengono effettuate: Viene allocato un canale con le seguenti informazioni riguardanti il segnale del satellite acquisito, ovvero numero del satellite,doppler, frequenza di acquisizione (IF + doppler) fase del codice (in campioni e in chips) e picco di correlazione. Inoltre viene aggiornata, ovvero incrementata, la variabile next_ch il cui valore corrisponde al successivo canale disponibile Se il picco non supera la soglia, si passa al satellite successivo, ovvero si ritorna allo Step 3: se il satellite corrente è il 32, l’algoritmo termina. Step 3.3.2 Se il picco supera la soglia e la ricerca fine della frequenza è stata attivata, il codice, sfasato circolarmente in base alla fase di acquisizione, viene moltiplicato per il segnale in ingresso, in modo che rimanga solo la portante e la modulazione data dal messaggio di navigazione. In questo modo si può applicare una ricerca seriale della doppler nell’intorno della stima data dall’acquisizione. Se la stima è stata migliorata, il nuovo picco di correlazione è maggiore di quello precedentemente calcolato, e dunque vengono aggiornate le informazioni del canale corrente, ovvero picco di correlazione, doppler e frequenza di acquisizione (IF + doppler fine). Se il picco non supera la soglia, si passa al satellite successivo, ovvero si ritorna allo Step 3: se il satellite corrente è il 32, l’algoritmo termina. Step 4 L’algoritmo termina, e passa al modulo di tracking la lista dei canali allocati con le rispettive informazioni che saranno gli input per il modulo di tracking. 153 Giulio Mezzana – Roberto Dell’Ariccia 6.3.4. Descrizione dell’Algoritmo di Acquisizione per Galileo 6.3.5. Acquisizione su set di dati di lunghezza diversa L’algoritmo di acquisizione esaminato nelle sezioni precedenti è stato successivamente modificato per poter permettere al SR di: Acquisire segnali deboli, a vantaggio delle prestazioni (guadagno in sensibilità e nella stima della doppler) ma a discapito della velocità di acquisizione Acquisire con maggiore velocità a discapito delle prestazioni (perdite in sensibilità e nella stima della doppler) 154 Giulio Mezzana – Roberto Dell’Ariccia Queste funzionalità sono implementate andando ad aumentare o diminuire la lunghezza del set di dati da acquisire, dunque si avranno due varianti: Acquisizione “long”, in cui il set di dati da acquisire è maggiore di quello standard Acquisizione “partial”, in cui il set di dati da acquisire è minore di quello standard Le modalità con cui l’algoritmo viene modificato verranno discusse qui di seguito, prima per GPS e poi per Galileo. 6.3.5.1. GPS Per il sistema GPS, si è visto che la durata standard del set di dati da acquisire è 1 ms perché un millisecondo è pari alla durata di un intera replica del codice CA: in tal modo si ottiene una risoluzione in frequenza di 1 kHz, che rappresenta il passo per la scansione doppler. Se si aumenta la durata del set di dati la risoluzione in frequenza aumenta e si hanno a disposizione più celle doppler dove ricercare il segnale: inoltre, aumenta il guadagno di codice, pari ora alla lunghezza in campioni della nuova replica di codice. Tutto ciò va a discapito del costo computazionale, che aumenta sensibilmente. Se si vuole ottenere invece un basso costo computazionale, allora si può eseguire l’acquisizione su mezzo millisecondo, peggiorando la risoluzione in frequenza con la diminuzione del numero delle celle doppler e diminuendo il guadagno di codice. Tuttavia, vi è un limite superiore di frame di acquisizione dato da 20 ms, poiché 20 sono le repliche consecutive di ogni bit del messaggio di navigazione e quindi superando questo valore si avrebbe sempre la certezza di avere una transizione di bit che porterebbe ad una degradazione delle prestazioni in fase di acquisizione. 155 Giulio Mezzana – Roberto Dell’Ariccia # Frames (ms) Risoluzione in frequenza (Hz) # Celle doppler (repliche OL), caso stazionario # Celle doppler (repliche OL), caso non stazionario Guadagno di codice rispetto al caso standard (dB) 0.5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2000 1000 500 333 250 200 166 143 125 111 100 90 83 77 71 67 63 59 55 53 50 6 11 21 31 41 51 61 71 81 91 101 111 121 131 141 151 161 171 181 191 201 11 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 341 361 381 401 -3 0 3 4.8 6 7 7.8 8.4 9 9.5 10 10.4 10.8 11.1 11.5 11.8 12 12.3 12.6 12.8 13 Acquisendo un set di dati di lunghezza diversa, le modifiche che devono essere apportate alla struttura base dell’algoritmo riguardano principalmente le repliche locali dei codici e dell’oscillatore locale. Per quanto riguarda le repliche dell’oscillatore locale, queste saranno in numero pari alle celle doppler di scansione e di lunghezza pari al numero di campioni equivalenti al numero di frames di acquisizione considerati. 156 Giulio Mezzana – Roberto Dell’Ariccia Invece, le repliche locali dei codici varieranno solo in lunghezza e verranno calcolate seguendo i seguenti passi: 1. Caricamento della matrice CA(33,1023) 2. Campionamento in base alla Fs CA(33,Fs/1000) 3. Ripetizione della matrice in base ai frames di acquisizione (queste repliche nel dominio del tempo saranno impiegate nella ricerca fine della frequenza): CA = [CA CA … CA] = CA(33,frames*Fs/1000) 4. Viene calcolata la FFT di ogni riga della matrice CA e poi coniugata Nelle due figure seguenti sono mostrate la autocorrelazione del CA 1 e la cross-correlazione dei CA 1 e 2 con 0.5 ms di acquisizione e Fs=12.276 MHz, dove si può notare l’abbassamento del picco di 3 dB rispetto al caso standard, ovvero Fs/1000/2 = 6138. CA 1 Autocorrelation, frames = 0.5 7000 6000 5000 Samples 4000 3000 2000 1000 0 -1000 -8000 -6000 -4000 -2000 0 2000 code shift (samples) 4000 6000 8000 157 Giulio Mezzana – Roberto Dell’Ariccia CA 1, CA 2 Cross-correlation, frames = 0.5 800 600 400 200 samples 0 -200 -400 -600 -800 -1000 -1200 -8000 -6000 -4000 -2000 0 2000 code shift (samples) 4000 6000 8000 Con la stessa frequenza di campionamento sono state generate le stesse figure precedenti, ma considerando 2 ,8 e 20 frames di acquisizione. 158 Giulio Mezzana – Roberto Dell’Ariccia 2.5 x 10 4 CA 1 Autocorrelation, frames = 2 2 samples 1.5 1 0.5 0 -0.5 -2.5 -2 -1.5 -1 -0.5 0 0.5 code shift (samples) 1 1.5 2 2.5 4 x 10 CA 1,CA 2 Cross-correlation, frames = 2 2000 1500 1000 samples 500 0 -500 -1000 -1500 -2000 -2.5 -2 -1.5 -1 -0.5 0 0.5 code shift (samples) 1 1.5 2 2.5 4 x 10 159 Giulio Mezzana – Roberto Dell’Ariccia 10 x 10 4 CA 1 Autocorrelation, frames = 8 8 samples 6 4 2 0 -2 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 code shift (samples) 0.4 0.6 0.8 1 5 x 10 CA 1,CA 2 Cross-correlation, frames = 8 8000 6000 4000 samples 2000 0 -2000 -4000 -6000 -8000 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 code shift (samples) 0.4 0.6 0.8 1 5 x 10 160 Giulio Mezzana – Roberto Dell’Ariccia 2.5 x 10 5 CA 1 Autocorrelation, frames = 20 2 samples 1.5 1 0.5 0 -0.5 -2.5 2 x 10 -2 -1.5 4 -1 -0.5 0 0.5 code shift (samples) 1 1.5 2 2.5 5 x 10 CA 1,CA 2 Cross-correlation, frames = 20 1.5 1 samples 0.5 0 -0.5 -1 -1.5 -2 -2.5 -2 -1.5 -1 -0.5 0 0.5 code shift (samples) 1 1.5 2 2.5 5 x 10 161 Giulio Mezzana – Roberto Dell’Ariccia Come si può notare considerando n frames di acquisizione, oltre al picco centrale più alto in assenza di sfasamento, le autocorrelazioni delle repliche ora presentano un numero di picchi laterali pari a: Essi sono dovuti essenzialmente a completi allineamenti delle subrepliche: infatti le ampiezze dei picchi laterali corrispondono a quelle delle autocorrelazioni effettuate con un numero di frames minori. Ad esempio nell’ultima figura il picco più basso si trova a circa 112276, che è l’ampiezza dell’autocorrelazione con 1 frame, il secondo a 112276*2, che è l’ampiezza dell’autocorrelazione con 2 frames e così via. Inoltre si può notare come la cross-correlazione assuma una forma triangolare, con un massimo proprio nel caso di assenza di sfasamento tra i due codici. Il rapporto tra picco di autocorrelazione e massimo valore di crosscorrelazione ad esempio con 8 frames è pari a 17. Si potrebbe pensare che la presenza di picchi laterali possa portare a false rivelazioni del segnale su fasi del codice non esatte, ma poiché si esegue una ricerca parallela nel dominio della fase del codice e si calcola il massimo, ciò non accade. 6.3.5.2. Galileo 6.3.6. Ricerca fine della frequenza 6.3.6.1. GPS 6.3.6.2. Galileo 6.3.7. Soglia di acquisizione 6.3.7.1. GPS 6.3.7.2. Galileo 6.4. Test e risultati 162 Giulio Mezzana – Roberto Dell’Ariccia 7. TRACKING DEI SEGNALI DI RADIONAVIGAZIONE 7.1. Introduzione Si potrebbe pensare che il metodo base per il tracking di un segnale sia quello di costruire un filtro a banda stretta intorno al segnale ed inseguire la variazione di frequenza nel tempo. Normalmente nei sistemi di tracking attualmente utilizzati, la frequenza centrale del filtro a banda stretta è fissa, ma un segnale generato localmente insegue la frequenza del signale di ingresso. Le fasi del segnale di ingresso e del segnale locale sono comparate attraverso quello che è detto comparatore di fase, l’uscita del quale passa attraverso un filtro a banda stretta. Dal momento che il circuito di tracking ha una banda molto stretta, la sensibilità è molto alta rispetto a quella del metodo di acquisizione. Quando nella portante sono presenti degli shift di fase causati ad esempio dal codice C/A del GPS, la prima cosa da fare è togliere il codice. Il processo di tracking inseguirà il segnale e estrarrà le informazioni del messaggio di navigazione. Nel caso il ricevitore del segnale di radionavigazione sia stazionario, la variazione di frequenza dovuta al movimento del satellite è molto lenta e sotto queste condizioni anche la variazione di frequenza del segnale generato localmente sarà molto lenta. Per eliminare il codice C/A ad esempio, è necessario un altro loop. Per cui in generale per traccare un segnale di radionavigazione, c’è bisogno di due loop di tracking, uno per traccare la frequenza della portante ed un altro per traccare il codice o meglio la fase del codice. 163 Giulio Mezzana – Roberto Dell’Ariccia 7.2. Aspetti teorici 7.2.1. Phase-Locked Loops (PLL) Lo scopo principale di un PLL è quello di aggiustare la frequenza di un oscillatore locale per matchare la frequenza di un segnale di input. Un PLL di base è mostrato in figura 5.1. La figura 5.1° mostra la configurazione nel dominio del tempo, mentre la 5.1b mostra la stessa configurazione nel dominio di Laplace. Il segnale di input è i t è quello di output dal VCO è f t . Il comparatore di fase misura la differenza di fase di questi due segnali. L’amplificatore k 0 rappresenta il guadagno di del comparatore di fase e il filtro passa-basso limita il rumore nel loop. Il voltaggio di input Vo al VCO, controlla la sua frequenza di uscita, che può essere espressa come: 2 t 0 k1u t V0 (7.1) Dove 0 è la frequenza angolare centrale del VCO, k1 è il guadagno del VCO e u t è definito come: 0 per t 0 u t 1 per t 0 (7.2) La fase dell’angolo del VCO può essere ottenuta integrando l’equazione 5.1: t t 0 0 2 t dt 0 t f t 0 t k1u t V0 dt (7.3) 164 Giulio Mezzana – Roberto Dell’Ariccia Fig. 7.1 PLL di base Dove t f t k1u t V0 dt (7.4) 0 La trasformata di Laplace di f t è: f s V0 s k1 s (7.5) Osservando la figura 8.1b si possono scrivere le seguenti equazioni: Vc s k0 s k 0 i s f s (7.6) Vo s Vc s F s (7.7) f s Vo s k1 s (7.8) Da queste tre equazioni si ricava: s i s f s s f s Vc s Vo s oppure k0 k 0 F s k 0 k1 F s s i s f s 1 k 0 k1 F s (7.9) Dove s è la funzione di errore. La funzione di trasferimento H s del loop è definita come: 165 Giulio Mezzana – Roberto Dell’Ariccia H s f s i s k 0 k1 F s s k 0 k1 F s (7.10) La funzione di trasferimento dell’errore è definita come: Hes s i s f s s 1 H s i s i s s k 0 k1 F s (7.11) La banda equivalente di rumore è definita come: 2 Bn H j df (7.12) 0 Dove è la frequenza angolare definita come 2f . Per studiare le proprietà di un PLL, si utilizzano ini genere due tipi di segnali di input. Il primo tipo è la funzione detta gradino unitario: S i t u t i s 1 s (7.13) Il secondo tipo è un segnale modulato in frequenza: S i t t i s s2 (7.14) 7.2.2. Phase-Locked Loop del primo ordine Un PLL del primo ordine, implica che il denominatore della funzione di trasferimento H s sia una funzione del primo ordine in s. L’ordine di un PLL dipende dall’ordine del filtro di loop. Per questo tipo di PLL, la funzione del filtro è: F s 1 (7.15) Questo è il PLL più semplice di tutti. Considerando come segnale di ingresso un gradino, la corrispondente funzione di trasferimento dall’equazione 5.9 diventa: 166 Giulio Mezzana – Roberto Dell’Ariccia H s k 0 k1 s k 0 k1 (7.16) Come si vede il demolitore della funzione è del primo ordine. La banda di rumore può essere espressa come: k 0 k1 2 df k 0 k1 2 d 2 2 0 2 k 0 k1 2 0 2 k 0 k1 Bn k 0 k1 2 (7.17) k k 0 1 tan 1 2k 0 k1 4 k 0 k1 0 Con un segnale di ingresso i s 1 , la funzione di errore può essere s trovata tramite l’equazione 5.10 come: s i s H e s 1 s k 0 k1 (7.18) L’errore steady-state4 può essere trovato per mezzo del teorema del valore finale della trasformata di Laplace: lim y t lim sY s t (7.19) s 0 Per mezzo dell 5.18, il valore finale di t può essere trovato come: lim t lim s s lim t s 0 s 0 s sk 0 k1 0 Se si considera come segnale di ingresso i s (7.20) , la funzione di s2 errore è: s i s H e s 1 s s k 0 k1 (7.21) 4 Per errore di steady-state, si intende l’errore come differenza fra input ed output di un sistema considerato nel limite del tempo che va ad infinito 167 Giulio Mezzana – Roberto Dell’Ariccia L’errore steady-state è: lim t lim s s lim t s 0 s 0 s k 0 k1 k 0 k1 (7.22) L’errore di fase steady-state non è uguale a zero. Un alto valore di k 0 k1 permette di avere un errore piccolo. Tuttavia dall’equazione 8.15 la larghezza di banda a 3dB si ha per s k 0 k1 . Per questo motivo, un piccolo valore di t comporta anche un alto valore di larghezza di banda, che contiene più rumore. 7.2.3. Phase-Locked Loop del secondo ordine Nel caso di un PLL del secondo ordine, il denominatore della funzione di trasferimento H s è una funzione del secondo ordine di s. Uno dei possibili filtri per realizzare un PLL del secondo ordine è: F s s 2 1 s 1 (7.23) Sostituendo questa relazione nella 7.9, la funzione di trasferimento diventa: k 0 k1 2 s k 0 k1 2 n s n2 1 1 H s 2 k 0 k1 2 s k 0 k1 s 2 n s n2 s 1 1 (7.24) Dove n è la frequenza naturale, che può essere espressa come: k 0 k1 1 n (7.25) Mentre è il camping factor che può essere espresso come: 2 n k 0 k1 2 ω oppure ς n 2 1 2 (7.26) 168 Giulio Mezzana – Roberto Dell’Ariccia Il denominatore di H s è del secondo ordine. La banda di rumore può essere espressa come: 2 1 2 n 2 n Bn H df 2 2 0 0 1 2 n n 1 4 2 n d 2 n n d 2 2 0 4 2 2 22 1 1 n n (7.27) 1 4 La funzione di trasferimento dell’errore può essere ottenuta per mezzo delle 5.10 come: H e s 1 H s s2 s 2 2 n s n2 Se si considera un input i s s (7.28) 1 , la funzione di errore è: s s s 2 n s n2 (7.29) 2 L’errore steady-state è dato da: lim t lim s s 0 t (7.30) s 0 Considerando ora un input i s s 1 s 2 n s n2 2 1 , la funzione di errore è: s2 (7.31) L’errore steady-state è: 169 Giulio Mezzana – Roberto Dell’Ariccia lim t lim s s 0 t s 0 (7.32) Come si vede dalle formule, considerando un segnale modulato in frequenza, l’errore steady-state per il PLL del secondo ordine è zero, cosa non vera per un PLL del primo ordine. 7.2.4. Trasformazione dai sistemi continui a quelli discreti Nel precedente paragrafo, le considerazioni fatte erano basate su sistemi continui, tuttavia la tesi in oggetto si propone di implementare un software receiver, in cui i PLL dovranno essere realizzati via software. Per fare questo, bisogna passare dai sistemi continui a quelli discreti. La trasformazione dal dominio continuo s a quello discreto z , viene fatta attraverso una trasformazione bilineare: s 2 1 z 1 t s 1 z 1 (7.33) Dove t s è l’intervallo di campionamento. Sostituendo la precedente relazione nella 5.22, il filtro diventa: F z C1 C2 C1 C 2 C1 z 1 1 z 1 1 z 1 (7.34) Dove: C1 2 2 t s 2 1 t C2 s 1 (7.35) La figura è mostrata in fig. 7.2. 170 Giulio Mezzana – Roberto Dell’Ariccia Fig. 7.1 Filtro di loop Il VCO nel PLL è rimpiazzato da un sintetizzatore digitale di frequenza e la sua funzione di trasferimento N z può essere utilizzata per cambiare il risultato nella 5.7 con: N z f z Vo z k1 z 1 1 z 1 (7.36) Quindi la funzione di trasferimento H z può essere scritta come: H z f z i z k 0 F z N z 1 k 0 F z N z (7.37) Sostituendo le 5.33 e 5.35 nella 5.36 si ottiene: H z k 0 k1 C1 C 2 z 1 k 0 k1C1 z 2 1 k 0 k1 C1 C 2 2z 1 1 k 0 k1C1 z 2 (7.38) Applicando la trasformazione bilineare della 5.32 nella 5.23 il risulto ottenuto è: H z 4 4 4 t n s t 2 t 8z 4 4 t t z 2 n 2 n t s 2 n t s 2 z 1 n t s r n t s z 2 2 n s 2 n s 2 1 n s 2 n s (7.39) Eguagliando i denominatori della 7.37 e 7.38 si ottiene il valore dei coefficienti C1 , C 2 : 171 Giulio Mezzana – Roberto Dell’Ariccia C1 8 n t s 1 k 0 k1 4 4 n t s n t s 2 (7.40) 2 4 n t s 1 C2 k 0 k1 4 4 n t s n t s 2 7.2.5. Tracking di portante e di codice nel sistema GPS Tipicamente il segnale di ingresso di un PLL è un’onda continua o un segnale modulato in frequenza e la frequenza del VCO è controllata in modo da inseguire quella del segnale di ingresso. In un ricevitore per segnali di radionavigazione, il segnale è proprio il segnale di radionavigazione e il PLL deve inseguire (o traccare) questo segnale. Per riuscire a traccare il segnale, il codice di spreading deve essere rimosso e sono necessari due loops. Il primo loop serve a traccare la fase del codice di spreading, il secondo a traccare la frequenza della portante. Questi due loop devono essere in qualche modo accoppiati per lavorare insieme ed il loro funzionamento accoppiato si può vedere nella figura sottostante. Fig. 7.2 Loops di Tracking per codice e portante per il sistema GPS 172 Giulio Mezzana – Roberto Dell’Ariccia Vengono in pratica generate tre repliche del codice di spreading dette Early, Prompt e Late. La replica Prompt viene moltiplicata per il segnale di ingresso ed il risultato è un segnale continuo le cui transizioni di fase sono dovute solo al messaggio di navigazione. Questo segnale è quindi mandato in ingresso al loop di portante, la cui uscita sarà sempre un segnale continuo con la frequenza della portante identica a quella del segnale di input originale. Questo segnale è utilizzato a sua volta per eliminare la portante dal segnale di ingresso e questo si fa moltiplicando i due segnali. Il segnale di ingresso in questo caso sarà solo il codice di spreading senza portante e verrà utilizzato come segnale di ingresso al loop di codice. Come spiegato precedentemente, l’aquisizione determina l’inizio del codice di spreding. Il loop di codice genera le repliche Early e Late del codice C/A, shiftate normalmente di mezzo chip, queste due repliche vengono correlate con il codice C/A di ingresso e vengono quindi prodotti due output. Questi output vengono fatti passare in un filtro che ne fa la media e viene fatta la radice dell’uscita. Le due uscite sono confrontate per generare un segnale di controllo che serve ad aggiustare il rate del codice C/A generato localmente, in modo da far sì che il segnale generato matchi il segnale originale di ingresso. Il codice C/A generato localmente è il prompt e questo segnale è utilizzato per eliminare il codice C/A dal segnale di ingresso. Per quanto riguarda il loop di portante, questo riceve in ingesso un segnale continuo modulato in fase solo dal messaggio di navigazione, dato che il codice C/A è stato eliminato. Come per la fase del codice, anche il valore inziale della frequenza è stimato durante l’acquisizione. Il VCO genera una onda con una frequenza in accordo a quanto stimato. Il segnale è diviso in due parti, una detta in fase ed una detta in quadratura, sfasate di 90° l’una dall’altra, le quali vengono correlate con il segnale di ingresso. L’uscita dei correlatori e quindi filtrata e le loro fasi sono confrontate attraverso l’uso di un comparatore arcotangente. Sì utilizza l’arcotangente, dato che quest’ultima non risente delle transizioni di fase dovute al messaggio di navigazione e questo può essere considerato un caso di Costas Loop. Un loop Di Costas è, infatti, un PLL che è insensibile alle transizioni 173 Giulio Mezzana – Roberto Dell’Ariccia di fase. L’uscita dal comparatore è filtrata nuovamente e questo genera un segnale di controllo utilizzato per sintonizzare l’oscillatore in modo che generi una portante che insegua quella del segnale di ingresso. 7.2.6. Tecnica Block Adjustment of Synchronizing Signal (BASS) Fino ad ora abbiamo visto il metodo convenzionale per il tracking, tuttavia esiste anche un'altra tecnica detta BASS. Utilizzando questa tecnica, una volta generato il codice C/A, questo viene utilizzato per tutto il tempo, inoltre non è richiesto nessun aggiustamento iniziale di fase come invece accadeva per il metodo convenzionale. Il concetto alla base del motodo BASS è quello della trasformata discreta di Fourier. Considerando un segnale di ingresso digitalizzato xn , la sua DFT può essere espressa come: N 1 X k xn e j 2nk N (7.40) n 0 Dove k rappresenta una determinata componente in frequenza e N è il numero totale dei campioni considerati nell’intervallo di tempo che in genere e per semplicità e considerato pari alla durata di una ripetizione del codice di spreading. Se xn è ottenuto digitalizzando un’onda sinusoidale, allora il valore massimo di X k i rappresenta la frequenza segnale di ingresso. La parte reale ed immaginaria di X k i possono essere utilizzate per ottenere l’angolo di fase del segnale come segue: ImX k i tan 1 ReX k i (7.41) Dove è la fase iniziale dell’onda seno rispetto alla funzione Nucleo. Se k è un intero, la fase iniziale del Nucleo è zero. In generale, se la frequenza del segnale di input è una quantità non nota, devono essere calcolate tutte le componenti di k . Tuttavia solo la metà dei valori di k forniscono informazioni utili. La componente più alta di X k i può essere 174 Giulio Mezzana – Roberto Dell’Ariccia trovata comparando tutti i valori X k e per fare questo normalmente si usa la FFT per risparmiare tempo di calcolo. 7.3. Implementazione software In questo capitolo verranno discussi in dettaglio gli algoritmi sviluppati per il tracking del segnale di radionavigazione, sia esso GPS o Galileo. 7.3.1. Obiettivo Come già accennato nel capitolo precedente, scopo dell’acquisizione è quello di stimare due parametri fondamentali che sono fase del codice e frequenza doppler di un eventuale segnale di radionavigazione. La stima accurata di questi due parametri risulta essere di importanza vitale, perché permetterà al tracking di agganciare il segnale ed inseguirlo. Il funzionamento del tracking, come spiegato nel capitolo 5, è basato principalmente su due loops, uno per agganciare la frequenza e l’altro per agganciare la fase del codice. Come vedremo più avanti questi due loops lavorano insieme. 7.3.2. Architettura Prima di entrare nei dettagli dell’algoritmo vediamo a grandi linee la architettura generale di tutto il processo di tracking. 175 Giulio Mezzana – Roberto Dell’Ariccia Fig. 7.3 Architettura generale del tracking 176 Giulio Mezzana – Roberto Dell’Ariccia Il sistema riceve in input la frequenza doppler e la fase del codice stimate per mezzo degli algoritmi di acquisizione. Il passo successivo consiste nel creare le repliche locali del codice di spreading che saranno moltiplicate per il segnale di ingresso, una volta effettuato il battimento della frequenza portante. Il segnale, in banda base, viene fatto passare nei due loops che raffinano la stima della frequenza della portante (IF + Doppler shift) e la fase del codice, permettendo l’inseguimento del segnale. 7.3.3. Descrizione dell’algoritmo di tracking per GPS Di seguito verrà descritto nel dettaglio l’algoritmo di tracking per il sistema GPS e verrà mostrato cosa succede al segnale nei vari steps. La funzione che principale che contiene tutte le funzioni per inseguire il segnale prende in ingresso due parametri che sono il numero del canale da traccare ed il segnale ad IF. Vediamo ora step by step quello che succede all’interno della suddetta funzione: Step 1 Vengono assegnati i seguenti valori: fc: frequenza della portante stimata dalla acquisizione code_phase: fase del codice stimata dalla acquisizione svnum: numero del satellite corrispondente al canale passato in ingresso alla funzione Step 2 Vengono settati i valori del tempo di campionamento, inverso della frequenza di campionamento, ed il numero totale di campioni da processare per ogni frame. Il numero di campioni nn è scelto in modo che ogni frame abbia durata esattamente pari ad 1 ms ed il numero dei frames è a sua volta calcolato dividendo la lunghezza totale del segnale per il numero di campioni in un frame. 177 Giulio Mezzana – Roberto Dell’Ariccia L’algoritmo eseguirà le funzioni di tracking un numero di volte pari al numero frames calcolati in precedenza. Step 3 Si settano due variabili: code_offset: questa variabile permette di settare lo spacing fra le repliche locali del codice ed è calcolata moltiplicando il code_offset espresso in chip per il numero di campioni in un chip. Ad esempio se si vuole un code-offset di mezzo chip e il campionamento è fatto a 6.138 MHz, considerando che il codice CA è lungo 1023 chip ed ha una chip-rate pari a 1.023 MHz, si avrà 12.276 12 ossia ogni chip è rappresentanto da 1.023 12 campioni, quindi code_offset 1 12 6 campioni. 2 code_change: questa variabile permette di specificare di quanto deve spostarsi la replica locale del codice di spreading, se il valore del discriminatore del DLL supera un determinato valore in modulo. Anche in questo caso si tratta di moltiplicare il valore di code_change desiderato in chip per il numero di campioni in un chip e, come nel caso precedente se si volesse uno spostamento di mezzo chip, il code_change avrebbe come valore 6. Step 4 vengono calcolati i coefficienti del loop di Costas C1 e C2, tramite una apposita funzione che vuole in ingresso i parametri: gain WDF WB Step 5 Vengono generate le tre repliche locali Early, Prompt e Late, dei codici di spreading. I codici non sono calcolati in real time, ma sono storati 178 Giulio Mezzana – Roberto Dell’Ariccia come file .mat. Attraverso una operazione di “rotazione”, tramite il comando circshift, i codici vengono allineati in base alla stima della fase del codice e ulteriormente ruotati per creare le replice Early e Late. Step 6 Si fa iniziare un ciclo che avrà durata pari al numero di frames calcolato in precedenza. Step 6.1 Si generano le repliche locali della portante seno e coseno, tali da avere una durata pari ad 1 millisecondo, nel seguente modo: sine e j 2 fctsnn phase cosine e j 2 fcts nn phase Dove nn è il numero totale di campioni in un frame, ts è la durata di un campione e phase è un valore che inizialmente è pari a 0, ma che successivamente memorizza la fase dell’ultimo campione. Quest’ultima operazione serve per fare in modo che quando verrà creata la replica locale del successivo millisecondo il segnale sia continuo con il precedente e non ci siano quindi salti di fase, che inficerebbero il corretto funzionamento del PLL. Si utilizza l’esponenziale complesso in modo che seno e coseno siano coerenti. Step 6.2 Si prende l’equivalente di un millisecondo di dati del segnale e si memorizza in un variabile x. 179 Giulio Mezzana – Roberto Dell’Ariccia Signal 1 ms 1.5 1 Amplitude 0.5 0 -0.5 -1 -1.5 0 2000 4000 6000 8000 10000 12000 14000 Samples Fig. 7.4 Segnale di igresso 1 ms Per vedere meglio che si tratta di una modulazione BPSK su portante IF, se ne mostra una immagine ingrandita. 180 Giulio Mezzana – Roberto Dell’Ariccia Signal 1 ms 1 Amplitude 0.5 0 -0.5 -1 6800 6850 6900 6950 Samples 7000 7050 7100 Fig. 7.5 Segnale di ingresso ingrandito Nella immagine sopra sono ben visibili i salti di fase dovuti alla particolare modulazione scelta e si vede che l’ampiezza del segnale è modulata a causa della presenza della portante. Step 6.3 Si porta il segnale in banda base moltiplicando il segnale in ingresso per le repliche locali del seno e del coseno, ottenendo così il ramo in fase I e quello in quadratura Q. 181 Giulio Mezzana – Roberto Dell’Ariccia In-phase brench 1 Amplitude 0.5 0 -0.5 -1 7500 7600 7700 7800 Samples 7900 8000 8100 Fig. 7.6 Immagine ingrandita del ramo in fase del segnale La portante, a meno di un residuo dovuto ad un non perfetto allineamento tra portante del segnale generato localmente e portante vera, è stata eliminata ed ora sono visibili i bit del codice di spreading che resta l’ultima cosa da togliere per poter stabilire in quel determinato millisecondo il valore del messaggio di navigazione trasmesso. È bene fare una considerazione, l’operazione che permette di eliminare la portante, consiste in una semplice moltiplicazione del segnale per un un’onda sinusoidale generata localmente e tale moltiplicazione da come risultato la seguente espressione: CA cos2ft cos2ft 1 1 CA CA cos4ft 2 2 2 (7.1) Come si vede nella espressione scritta sopra, quello che rimane è il codice CA più il segnale di prima con una frequenza doppia e questo è ben visibile nella figura 7.4 dove i bit del codice sono modulati da un’onda sinusoidale, mentre la portante è stata tolta. 182 Giulio Mezzana – Roberto Dell’Ariccia Per verificare che quanto affermato è vero si può vedere nuovamente il contenuto in frequenza del segnale. Power Spectral Density Estimate via Welch -55 -60 -65 Power/frequency (dB/Hz) -70 -75 -80 -85 -90 -95 -100 0 1 2 3 Frequency (MHz) 4 5 6 Fig. 7.7 Segnale dopo il battimento della portante La figura mostra chiaramente che il segnale è stato portato in banda base, ma che lo stesso è anche stato traslato in banda e portato intorno ai 4 MHz che è esattamente il doppio della frequenza portante iniziale. Per ovviare a questo problema, la soluzione è quella di inserire un filtro passabasso che abbia un frequenza di cutoff pari alla banda del segnale CA più la massima doppler possibile che si ricorda essere 10 KHz. Si utilizza perciò un filtro passa-basso di Butter del 2 ordine. Lo spettro del segnale a valle del filtro è il seguente: 183 Giulio Mezzana – Roberto Dell’Ariccia Power Spectral Density Estimate via Welch -50 -60 -70 Power/frequency (dB/Hz) -80 -90 -100 -110 -120 -130 -140 0 1 2 3 Frequency (MHz) 4 5 6 Fig. 7.8 Spettro del segnale a valle del filtro di Butter Il contenuto spettrale del segnale intorno alla frequenza di 4 MHz, si trova ora quasi 40 dB sotto il segnale in banda base. Il segnale che rappresentava i bit del codice CA è ora il seguente: 184 Giulio Mezzana – Roberto Dell’Ariccia In-phase branch 0.8 0.6 0.4 Amplitude 0.2 0 -0.2 -0.4 -0.6 1.04 1.05 1.06 1.07 1.08 Samples 1.09 1.1 1.11 4 x 10 Fig. 7.9 Ingrandimento del segnale in banda base a valle del filtro di Butter Il contenuto in frequenza intorno ai 4 Mhz è stato eliminato ed ora i bit del CA sono ben visibili. Step 6.4 Avendo eliminato dal segnale in ingresso la portante quello che resta da togliere, come detto in precedenza, è il codice di spreading. I due segnali I e Q vengono correlati con le repliche locali del codice generate in precedenza. Il valore di output della correlazione fra replica Prompt IP e ramo in fase, rappresenta il valore stimato del messaggio di navigazione per quel determinato frame. 185 Giulio Mezzana – Roberto Dell’Ariccia 8148 In Phase Signal Amplitude 8147.5 8147 8146.5 8146 8145.5 0 0.2 0.4 0.6 0.8 1 Time (ms) 1.2 1.4 1.6 1.8 2 Fig. 7.10 Valore stimato del messaggio di navigazione in un determinato millisecondo Step 6.5 Vengono inizializzati i due discriminatori dei loops: code_discri(frame): I I I I 2 P QP2 2 L Q L2 2 P Q P2 2 L Q L2 Q phase_discri(frame): arctan P IP Ad ogni successiva iterazione del codice, questi valori vengono aggiornati. Step 6.6 Viene fatto un controllo per vedere se la fase di pull-in del filtro è finita. Nella fase di pull-in i coefficienti del filtro PLL, erano calcolati utilizzando alti valori per il dumping factor e per la banda, cosa che permetteva un aggancio meno preciso, ma più veloce, finita la fase di pull- 186 Giulio Mezzana – Roberto Dell’Ariccia in cui si ha la certezza di essere agganciati al segnale, la banda del filtro viene stretta e il dumping factor abbassato. Vengono quindi ricalcolati i valori C1 e C2. Per decidere quando far finire la fase di pull-in, si possono seguire diverse strade, la più semplice è quella di decidere un determinato intervallo temporale, ad esempio 30 ms, dopo il quale stringere il filtro. Un’altra soluzione che risulta essere più funzionale, è quella di uscire dal pull-in quando l’errore in frequenza o in fase si trova al di sotto di una certa soglia. Tuttavia un buon controllo sulla apertura e chiusura del filtro, risulta essere di fondamentale importanza principalmente nei caso in cui ci sia la possibilità di improvvise perdite repentine del segnale o di notevoli abbassamenti dello stesso, cosa che capita normalmente in un contesto urbano con il sistema ricevente montato su una piattaforma in movimento. In questo caso aprire e chiudere il filtro in modo automatico e quindi non deciso a priori, su base temporale, permette al sistema di rimanere agganciato. Nei casi più estremi sarà necessario acquisire nuovamente il segnale. Step 6.7 Tramite i coefficienti del filtro C1 e C2 e per mezzo dell’uscita del discriminatore, il PLL stima il delta di frequenza per correggere la portante locale e allinearla con quella presente nel segnale. La fc utilizzata nello step 6.1 viene aggiornata nel seguente modo: fc fc fc . Step 6.8 Si controlla se il valore di uscita del discriminatore di codice è troppo largo. Quello che si fa di fatto è evitare di aggiornare di volta in volta il valore della fase delle repliche locali del codice, ma aggiornarlo solo se si è al di sopra o al di sotto di un determinato valore settato in precedenza (max_discri). Normalmente per il GPS nel caso di ricevitore fisso, un valore in modulo di 0.5 è più che sufficiente per consentire il corretto funzionamento. 187 Giulio Mezzana – Roberto Dell’Ariccia Nel caso sia necessario un aggiornamento il codice viene fatto ruotare di un valore pari a code_change. Step 7 Si torna allo step 6 7.3.4. Descrizione dell’algoritmo di tracking per GALILEO 7.3.5. Risultati Finali In questo capitolo verranno presentati gli output dell’alogoritmo. 7.3.5.1. GPS Si considera come segnale di input quello generato tramite i simulatori come descritto nel capitolo 5, nel quale è presente un solo, si è in assenza di rumore e la Doppler rate è nulla. È chiaro che una situazione del genere è da considerarsi un caso ideale e bel lontano dalla realtà, ma per i nostri scopi risulta essere una ottima scelta. Più avanti verranno presi in considerazione casi simulati più complessi, fino ad arrivare a quelli reali. Sì è visto nel capitolo relativo all’acquisizione che il file in esame, una volta processato permetteva di stimare una frequenza doppler di 1800 Hz ed una fase del codice pari a 345.1667. Si ricorda che il segnale in esame è campionato a 12.276 MHz con una frequenza IF pari a 2 MHz e non c’è il codice P. La particolare scelta della frequenza di campionamento, permette di rappresentare ogni chip del codice per mezzo di 12 campioni, infatti 12.276 12 . 1.023 188 Giulio Mezzana – Roberto Dell’Ariccia Power Spectral Density Estimate via Welch -20 -40 Power/frequency (dB/Hz) -60 -80 -100 -120 -140 0 1 2 3 Frequency (MHz) 4 5 6 Fig. 7.11 Spettro di densità di potenza del segnale in ingresso al tracking Il segnale non viene trackato tutto insieme, ma se ne prende di volta in volta, secondo il metodo BASS, una parte equivalente ad un millisecondo. Il primo millisecondo ha lo spettro mostrato nella figura sotto. 189 Giulio Mezzana – Roberto Dell’Ariccia Power Spectral Density Estimate via Welch -55 -60 -65 Power/frequency (dB/Hz) -70 -75 -80 -85 -90 -95 -100 0 1 2 3 Frequency (MHz) 4 5 6 Fig. 7.12 Spettro di un millisecondo di segnale 7.3.5.2. Output finali Per prima cosa è utile far vedere come il PLL insegue la frequenza portante è precisamente viene mostrato l’inseguimento della doppler. 190 Giulio Mezzana – Roberto Dell’Ariccia Estimated Doppler 1855 1850 1845 Frequency [Hz] 1840 1835 1830 1825 1820 1815 0 100 200 300 400 500 Time [ms] 600 700 800 900 1000 Fig. 7.13 Doppler stimata per mezzo del PLL Nella figura sopra è bel visibile un periodo transitorio iniziale, proprio del filtro di loop, che alla fine arriva a stabilizzarsi intorno ad una frequenza pari a 1837 Hz. Ricordiamo che la frequenza Doppler stimata in acquisizione e passata in seguito al tracking come parametro iniziale era di 1800 Hz. Il PLL sta di fatto inseguendo la vera frequenza portante che è pari ad IF + Doppler stimata. Un ulteriore conferma del corretto funzionamento del PLL nell’inseguire la frequenza della portante, si può avere osservando il grafico dell’errore di fase che è proprio l’uscita del discriminitatore del PLL. 191 Giulio Mezzana – Roberto Dell’Ariccia Carrier Phase Error 25 20 Angle [Degrees] 15 10 5 0 -5 0 100 200 300 400 500 Time [ms] 600 700 800 900 1000 Fig. 7.14 Grafico dell'errore di fase Anche in questo caso dopo un periodo transitorio iniziale l’errore tende a zero ed il tracking insegue il segnale. Fino ad ora abbiamo visto il comportamento del PLL, esaminiamo ora quello del DLL. Come già detto il DLL serve ad inseguire il codice servendosi anch’esso di un discriminatore, basato sulle uscite dei correlatori Early, Prompt e Late. Per prima cosa si esamina l’uscita del discriminatore. 192 Giulio Mezzana – Roberto Dell’Ariccia Code Phase Error (chips) 2 1.5 1 Chip 0.5 0 -0.5 -1 -1.5 -2 0 100 200 300 400 500 Time [ms] 600 700 800 900 1000 Fig. 7.15 Errore di fase del codice L’errore, come è ben visibile nel grafico, si trova intorno ad un determinato valore pari a circa 0.25 chip. Si ricorda che nell’algoritmo sviluppato, si è scelto di implementare il DLL in modo che la fase delle repliche del codice locale, fosse aggiornata solo se l’errore supera una certa soglia. In particolare in questo caso tale soglia è fissata a 0.5 chip, infatti la fase non è mai aggiornata e l’errore resta costante. In realtà l’errore non è fisso, ma oscilla intorno ad un valore come si può vedere nella figura sottostante. 193 Giulio Mezzana – Roberto Dell’Ariccia Code Phase Error (chips) 0.246 0.244 Chip 0.242 0.24 0.238 0.236 100 110 120 130 140 Time [ms] 150 160 170 180 Fig. 7.16 Ingrandimento dell'errore di fase del codice Le oscillazioni sono molto piccole e quindi l’errore non supera mai la soglia, di fatto la fase delle repliche locali Early, Prompt e Late non viene mai aggiornata. Questo si può vedere nel grafico che mostra l’uscita dei tre correlatori. 194 Giulio Mezzana – Roberto Dell’Ariccia 7 x 10 7 GPS L1 - In Phase Correlators Output Early Prompt Late 6 Correlation power 5 4 3 2 1 0 0 100 200 300 400 500 Frames 600 700 800 900 1000 Fig. 7.17 Uscita dei correlatori del ramo in fase Come ci si aspetta il Prompt è sopra tutti e si nota che la replica Early è sopra quella Late. Ci si doveva aspettare questo risultato, dato che osservando la figura 7.13, i codici risultano essere disallineati di circa un quarto di chip. -1 -1/2 1/2 1 Fig. 7.18 Uscita dei correlatori Early Prompt e Late Il non perfetto allineamento fra il codice nel segnale e la replica prompt, non inficia il corretto funzionamento del DLL ed in generale di tutto il tracking, l’unico effetto è quello di avere un picco di correlazione 195 Giulio Mezzana – Roberto Dell’Ariccia più basso e quindi la potenza dei bits del messaggio di navigazione sarà un po’ più bassa. Resta da far vedere il risultato alla fine dell’intero ciclo di tracking. 1 x 10 4 GPS - DLL Prompt Output Quadrature In Phase 0.8 0.6 Signal Amplitude 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 100 200 300 400 500 Time (ms) 600 700 800 900 1000 Fig. 7.19 Uscita del DLL relativa alla replica Prompt. La parte in fase rappresenta i bits del messaggio di navigazione Il risultato finale come previsto è l’estrazione dei bits del messaggio di navigazione che sono l’uscita della replica Prompt del DLL. Come ci si aspettava tutta la potenza è sul ramo in fase, mentre quello in quadratura va a zero. La figura 7.17 rappresenta il messaggio di navigazione sotto forma di segnale, è utile però averlo anche sotto forma di bit di informazione. 196 Giulio Mezzana – Roberto Dell’Ariccia GPS - Navigation Message 2 1.5 1 Bit Value 0.5 0 -0.5 -1 -1.5 -2 100 200 300 400 500 Time [ms] 600 700 800 900 1000 Fig. 7.20 Bits del messaggio di navigazione 7.3.5.3. Galileo 7.4. Test e risultati In questo capitolo vengono eseguiti alcuni test per valutare le performance dell’algoritmo di tracking. Si utililizzeranno segnale simulati, segnali reali e segnali simulati hardware forniti da ESA (European Space Agency). 7.4.1. GPS 7.4.1.1. Segnali utilizzati Per comodità di trattazione, di seguito è riportata la tabella con l’elenco dei segnali che verranno utilizzati nei vari test. 197 Giulio Mezzana – Roberto Dell’Ariccia Codice Frequenza di campionamento Frequenza portante Gap C/N0 Noise Numero di satelliti presenti 1 12.276 MHz 2 MHz No 50 No 1 2 12.276 MHz 2 MHz Sì 50 No 1 Tab. 7-1 Tabella dei segnali utilizzati per effettuare i test 7.4.1.2. Gap Come primo test, si creerà un gap nel segnale di ingresso, simulando ad esempio una macchina che entra in una galleria e si vedrà come risponde il tracking in questa situazione. Il segnale utilizzato è quello con codice 2 secondo quanto riportato nella tabella 7-1. Per prima cosa esaminiamo il comportamento del PLL. Carrier Phase Error 100 80 60 Angle [Degrees] 40 20 0 -20 -40 -60 -80 0 100 200 300 400 500 Time [ms] 600 700 800 900 1000 Fig. 7.21 Grafico dell'errore di fase nel caso di un segnale con un gap 198 Giulio Mezzana – Roberto Dell’Ariccia Nonostante il gap di più di 200 ms, il tracking riesce perfettamente a riagganciare il segnale e a riportare l’errore di fase intorno allo zero. Per quanto riguarda i correlatori si ha l’uscita riportata nella figura sottostante. 7 x 10 7 GPS L1 - In Phase Correlators Output Early Prompt Late 6 5 || 4 3 2 1 0 0 100 200 300 400 500 Frames 600 700 800 900 1000 Fig. 7.22 Uscita dei correlatori per il segnale con un gap Come ci si aspettava anche il DLL riesce a riagganciare senza problemi la fase del codice. È chiaro che l’utilizzo di questo particolare segnale facilita molto il compito del tracking. 199 Giulio Mezzana – Roberto Dell’Ariccia 8. ARCHITETTURA FINALE DEL SOFTWARE RECEIVER E GRAPHIC USER INTERFACE 200 Giulio Mezzana – Roberto Dell’Ariccia 9. CONCLUSIONI 201 Giulio Mezzana – Roberto Dell’Ariccia 10. ELENCO DELLE FIGURE E TABELLE Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. 2.1 Posizionamento dell'utente nel caso bidimensionale ........................................... 5 2.2 Localizzazione con tre SV e con quattro SV ...................................................... 6 2.3 Geometria di riferimento ........................................................................... 8 2.4 Costellazione dei satelliti GPS.....................................................................12 2.5 I tre segmenti del sistema GPS ....................................................................13 2.6 Schematizzazione delle componenti di segnale su L1 ed L2 ..................................16 2.7 Struttura del messaggio di navigazione ..........................................................17 2.8 Il segmento di terra di Galileo ....................................................................26 2.9 Overview del sistema Galileo......................................................................27 2.10 Piano di utilizzo delle frequenze del sistema Galileo ........................................28 2.11 Overwiev degli andamenti spettrali dei segnali i navigazione Galileo .....................32 3.1 Schematizzazione della tecnica DSSS ............................................................34 3.2 Spettri dei segnali sulle frequenze L1 ed L2 ....................................................39 3.3 Schema a blocchi della generazione del segnale GPS..........................................40 3.4 Modalità di spreading dei bit del messaggio di navigazione ..................................43 3.5 Generazione del segnale GPS su L1 ...............................................................43 3.6 – Shift regiter per la generazione dei codici di Gold ...........................................45 3.7 Proprietà di correlazione dei codici C/A: autocorrelazione del codice C/A per il SV 15 .49 3.8 Proprietà di correlazione dei codici C/A: autocorrelazione del codice C/A per il SV 15 zoom .......................................................................................................50 3.9 Proprietà di cross-correlazione dei codici C/A: cross-correlazione fra i codici dei SV 15 e 31 ..........................................................................................................51 3.10 Configurazione del primo stadio dello schema di ricezione .................................53 3.11 Generazione di un segnale BOC ..................................................................59 3.12 Spettri di densità di potenza di vari segnali BOC .............................................62 3.13 ACF e loro inviluppi per vari segnali BOC a banda limitata ..................................63 3.14 Confronto fra le ACF di segnali BPSK e segnali BOC ..........................................64 3.15 Generazione del segnale L1 di Galileo..........................................................65 3.16 Costellazione dei simboli nella multiplazione CASM ..........................................67 3.17 Rappresentazione grafica della multiplazione CASM .........................................68 3.18 Relazione fra il codice primario e quello secondario .........................................69 5.1 Spettro di densità di potenza del segnale L1 di GIOVE-A, centrato intorno a 20 MHz .. 113 5.2 Spettro di densità di potenza teorici dei segnali di GIOVE-A su L1 ed L2 ................. 114 5.3 Spettro di densità di potenza della parte in fase del segnale su L1 ....................... 115 5.4 Spettro di densità di potenza della parte in quadratura del segnale su L1 ............... 115 5.5 Spettro di densità di potenza della parte in fase del segnale su L1 (zoom) .............. 116 5.6 Spettro di densità di potenza della parte in quadratura del segnale su L1 (zoom)...... 117 5.7 Costellazione del segnale simulato L1 di GIOVE-A ........................................... 118 5.8 Blocco Simulink per la generazione del rumore bianco a banda limitata ................. 120 5.9 Stima della densità spettrale di potenza del rumore simulato ............................. 122 5.10 Confronto fra le densità spettrali del GPS e del rumore ................................... 123 5.11 Spettro di densità del segnale GPS simulato in ingresso al sistema ricevente .......... 124 5.12 Confronto fra le densità spettrali del GPS e del rumore ................................... 125 202 Giulio Mezzana – Roberto Dell’Ariccia Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. 7.1 Filtro di loop ....................................................................................... 171 7.2 Loops di Tracking per codice e portante per il sistema GPS ................................ 172 7.3 Architettura generale del tracking ............................................................. 176 7.4 Segnale di igresso 1 ms ........................................................................... 180 7.5 Segnale di ingresso ingrandito................................................................... 181 7.6 Immagine ingrandita del ramo in fase del segnale ........................................... 182 7.7 Segnale dopo il battimento della portante .................................................... 183 7.8 Spettro del segnale a valle del filtro di Butter ............................................... 184 7.9 Ingrandimento del segnale in banda base a valle del filtro di Butter ..................... 185 7.10 Valore stimato del messaggio di navigazione in un determinato millisecondo ......... 186 7.11 Spettro di densità di potenza del segnale in ingresso al tracking ........................ 189 8.12 Spettro di un millisecondo di segnale......................................................... 190 7.13 Doppler stimata per mezzo del PLL ........................................................... 191 7.14 Grafico dell'errore di fase ...................................................................... 192 7.15 Errore di fase del codice........................................................................ 193 7.16 Ingrandimento dell'errore di fase del codice ................................................ 194 7.17 Uscita dei correlatori del ramo in fase ....................................................... 195 7.18 Uscita dei correlatori Early Prompt e Late ................................................... 195 7.19 Uscita del DLL relativa alla replica Prompt. La parte in fase rappresenta i bits del messaggio di navigazione ............................................................................. 196 Fig. 7.20 Bits del messaggio di navigazione ............................................................. 197 Fig. 7.21 Grafico dell'errore di fase nel caso di un segnale con un gap ............................. 198 Fig. 7.22 Uscita dei correlatori per il segnale con un gap............................................. 199 Tab. 1-1 Caratteristiche della costellazione GPS .........................................................10 Tab. 1-2 Caratteristiche dell’Open Service per la sincronizzazione ...................................20 Tab. 1-3 Caratteristiche dell’Open Service per la sincronizzazione ...................................20 Tab. 1-4 Caratteristiche del Safety of Life Service ......................................................21 Tab. 1-5 Caratteristiche del Public Regulated Service ..................................................22 Tab. 1-6 Supporto del sistema Galileo al Search and Rescue Service .................................23 Tab. 1-7 Larghezze di banda e frequenze centrali dei segnali trasmessi .............................28 Tab. 1-8 Matrice di corrispondenza fra i segnali ed i servizi Galileo ..................................30 Tab. 1-9 Riassunto delle caratteristiche salienti dei segnali di navigazione Galileo ................31 Tab. 2-1 Tabella di verità dell’operazione di XOR .......................................................41 Tab. 2-2 Tabella di verità della moltiplicazione..........................................................41 Tab. 2-3 Corrispondenze fra i codici di spreading ed i SV ad essi associati...........................47 Tab. 2-4 Valori di cross-correlazione dei codici di Gold .................................................50 Tab. 2-5 Minimi livelli di potenza dei segnali GPS ricevuti all’uscita di un’antenna 0 dBIC con polarizzazione circolare destra (RHCP – Rigth-Hand Circular Polarization) [6]. ................52 Tab. 2-6 Convenzioni simboliche............................................................................56 Tab. 2-7 Caratteristiche del segnale trasmesso ..........................................................56 Tab. 2-8 Caratteristiche del segnale trasmesso su L1 ...................................................66 Tab. 2-9 Caratteristiche del messaggio di navigazione ..................................................66 Tab. 2-10 Caratteristiche dei ranging codes ..............................................................68 Tab. 2-11 Prese degli shift register per i vari segnali ....................................................69 203 Giulio Mezzana – Roberto Dell’Ariccia Tab. 2-12 Parametri del codice secondario ...............................................................70 Tab. 2-13 Minimi livelli di potenza ricevuta su L1........................................................70 Tab. 7-1 Tabella dei segnali utilizzati per effettuare i test .......................................... 198 204 Giulio Mezzana – Roberto Dell’Ariccia 11. ABBREVIAZIONI 205 Giulio Mezzana – Roberto Dell’Ariccia 12. APPENDICE 206 Giulio Mezzana – Roberto Dell’Ariccia 13. BIBLIOGRAFIA 207