Lista delle figure vi
Lista delle tabelle vii
Lista dei listati ix
Introduzione xi
1 Software-Defined Radio 1
1.1 Caratteristiche delle Software Radio . . . 1
1.1.1 Un po’ di storia . . . 1
1.1.2 Flessibilità . . . 4
1.1.3 Fattibilità: architetture multiprocessore eterogenee . . 4
1.1.4 Aspetti software . . . 5
1.2 Cognitive Radio . . . 6
1.3 Design . . . 8
1.3.1 Struttura generale . . . 8
1.3.2 Tecniche di digitalizzazione . . . 9
1.3.3 GPS e Software-Defined Radio . . . 13
2 GNU Radio 17 2.1 Struttura di GNU Radio . . . 17
2.1.1 Python . . . 18
2.1.2 C++ . . . 18
2.1.3 SWIG . . . 19
2.2 Grafo di elaborazione . . . 19
2.3 Costruire un nuovo modulo . . . 22
2.3.1 Testing di un nuovo modulo . . . 27
2.4 Blocchi comuni . . . 28
ii INDICE
3 USRP 29
3.1 Struttura generale . . . 29
3.2 Firmware della FPGA . . . 30
3.2.1 Ricezione . . . 31
3.2.2 Trasmissione . . . 33
3.2.3 Ampiezza di banda del bus USB . . . 34
3.2.4 Sintonizzazione della USRP . . . 34
3.2.5 Digital Down-Converter (DDC) . . . 36
3.3 Daughterboard . . . 37
3.3.1 DBSRX . . . 39
4 GPS 47 4.1 Introduzione a GPS/EGNOS . . . 47
4.2 Composizione della costellazione GPS . . . 48
4.2.1 Pseudorandom Noise (PRN) . . . 51
4.3 Caratteristiche generali dei segnali GPS/EGNOS . . . 52
4.4 Nozioni sul posizionamento . . . 54
4.4.1 Equazioni base per il posizionamento . . . 56
4.4.2 Misurazione degli Pseudorange . . . 57
4.4.3 Sistema di coordinate sferico . . . 58
4.5 Contenuto dei segnali GPS . . . 59
5 SoftRec 63 5.1 Architettura hardware . . . 64
5.1.1 RF/IF down conversion . . . 64
5.1.2 Scelta della frequenza di campionamento . . . 65
5.1.3 Signal Tap . . . 66
5.2 Architettura software . . . 69
5.2.1 Acquisition . . . 70
5.2.2 Tracking . . . 83
5.2.3 Navigation . . . 86
5.3 Dettagli implementativi . . . 88
6 Implementazione 91 6.1 Concetti teorici . . . 91
6.1.1 Struttura della USRP . . . 91
6.1.2 Scelta della frequenza di campionamento . . . 94
6.2 All’esterno di SoftRec . . . 96
6.2.1 Interleaving . . . 97
6.2.2 Quantizzazione ad 1 bit . . . 98
6.2.3 GNU Radio Driver . . . 99
6.3 All’interno di SoftRec . . . 103
6.3.1 I/Q splitting . . . 103
6.3.2 Base-band downconverter . . . 104
Conclusioni 113
A Calcolo della frequenza di campionamento in SoftRec 115 B Schema elettrico della daughterboard DBSRX 117
C Lista degli acronimi 119
Bibliografia 125
Ringraziamenti 127
iv INDICE
1.1 Schema a blocchi base di un software receiver. . . 9
1.2 Aliasing proprio e improprio. . . 11
1.3 Ricevitore a frequenza intermedia. . . 12
1.4 Ricevitore a conversione diretta. . . 13
1.5 Classificazione delle Software Radio per il GPS. . . 14
1.6 Classificazione dei front-end in base alla sezione RF. . . 15
2.1 Struttura di GNU Radio. . . 19
2.2 Rappresentazione grafica di un semplice grafo di elaborazione. 21 2.3 Diagramma delle classi: derivazione da gr_block. . . 23
3.1 USRP . . . 30
3.2 USRP: architettura generale. . . 31
3.3 USRP: Struttura del firmware della FPGA. . . 32
3.4 USRP: ramo di ricezione. . . 33
3.5 USRP: ramo di trasmissione. . . 33
3.6 Daughterboard DBSRX. . . 40
3.7 DBSRX: diagramma a blocchi. . . 41
3.8 MAXIM MAX2118: diagramma a blocchi. . . 41
4.1 Schema di modulazione del canale C/A GPS. . . 54
4.2 Posizionamento in due dimensioni. . . 55
4.3 Posizionamento in tre dimensioni. . . 57
4.4 Conversione da riferimento cartesiano a riferimento sferico. . 59
4.5 Algoritmi di correzione e posizionamento nel GPS. . . 60
4.6 Composizione delle trame del GPS. . . 61
5.1 Struttura generale di SoftRec. . . 63
5.2 Struttura hardware di SoftRec. . . 64
vi ELENCO DELLE FIGURE
5.3 Struttura hardware di Signal Tap. . . 65
5.4 L’interfaccia Signal Tap . . . 67
5.5 Ordinamento dei bit in trasmissione da Signal Tap. . . 68
5.6 Architettura generale di SoftRec. . . 70
5.7 Diagramma di stato di SoftRec. . . 71
5.8 Corrispondenza tra numeri interi e numeri di 1 presenti nella rappresentazione binaria. . . 72
5.9 Costruzione delle matrici contenenti il codice. . . 74
5.10 Modulo di acquisizione non coerente del codice. . . 79
5.11 Ricerca della frequenza. . . 79
5.12 Correlazione versus code shift e frequency shift. . . 84
5.13 Struttura del modulo di tracking . . . 85
5.14 Struttura delle prime due word di ogni subframe. . . 87
5.15 Struttura software di SoftRec. . . 89
6.1 Struttura di SoftRec con l’utilizzo di Signal Tap. . . 96
6.2 Struttura di SoftRec con l’utilizzo della USRP. . . 97
6.3 USRP Driver: interleaving. . . 97
6.4 USRP Driver: 1 bit quantization. . . 98
6.5 USRP Driver: grafo di elaborazione. . . 100
6.6 USRP Driver: configurazione del LPF. . . 102
6.7 Downconverter I/Q . . . 105
6.8 Downconverter I/Q a reiezione d’immagine . . . 107
6.9 Grafico del seno e coseno campionato generati dalla funzione BuildCarrier(). . . 109
B.1 DBSRX: schema elettrico. . . 118
4.1 Costellazione GPS. . . 48
4.2 Cronologia dei lanci dei satelliti GPS. . . 49
4.3 Distribuzione degli SVN sui piani orbitali. . . 50
4.4 Distribuzione dei PRN sui piani orbitali. . . 51
4.5 Parametri del segnale GPS. . . 53
4.6 Parametri del segnale EGNOS. . . 55
5.1 Portanti GPS/EGNOS. . . 64
5.2 Caratteristiche dell’IF filter. . . 65
5.3 Frequenze di campionamento ammissibili . . . 66
6.1 DBSRX: calcolo delle prestazioni di sintonizzazione. . . 94
6.2 Fattori di decimazione e frequenze di campionamento . . . . 95
6.3 Corrispondenza tra∗aritmetico e⊕(XOR) logico. . . 106
6.4 Corrispondenza tra+ aritmetico ed operatori logici∨e∧. . . 108
viii ELENCO DELLE TABELLE
2.1 Realizzazione del dial tone del telefono con GNU Radio. . . . 20
2.2 complex_to_interleaved_float: dichiarazione della classe . 23 2.3 complex_to_interleaved_float: definizione della classe . . . 24
2.4 complex_to_interleaved_float: definizione del binding in SWIG . . . 26
2.5 complex_to_interleaved_float: script di testing . . . 27
3.1 Definizione di tune() . . . 35
3.2 Estratto della definizione di set_freq() (driver della DBSRX). 43 3.3 Definizione di set_bw() (driver della DBSRX). . . 44
5.1 Definizione di MemCpyWithPackTrigger64() . . . 69
5.2 Definizione di LoadCntTable() . . . 72
5.3 Definizione di OneCount() . . . 73
5.4 Definizione di BuildCode() . . . 75
5.5 Nucleo fondamentale dell’algoritmo di acquisizione. . . 80
5.6 Definizione di SerCodeAcqFast(). . . 81
6.1 complex_to_interleaved_float: metodo work(). . . 98
6.2 sign_to_packed_fb: metodo get_sign(). . . 99
6.3 sign_to_packed_fb: metodo work(). . . 99
6.4 Definizione di FillBuffers(). . . 103
6.5 Definizione di BuildCarrier(). . . 108
6.6 Definizione di BBDownConvFast(). . . 110
x ELENCO DEI LISTATI