het implementeren van een meerkanaals gnss … · industriële wetenschappen, elektronica-ict...
TRANSCRIPT
HET IMPLEMENTEREN VAN EEN MEERKANAALS GNSS-ONTVANGER MET FLEXIBELE HERCONFIGURATIE OP EEN FPGA Rapport over de masterproef van Ruben SMEETS en Joris VOLDERS kandidaten voor de graad van Academische Master Industriële Wetenschappen, Elektronica-ICT Promotoren: dr. ir. W. Aerts dr. ir. N. Mentens Academiejaar 2011 - 2012 Referentie: MP2012/ELO/05
Woord vooraf
Als laatstejaarsstudenten Industrieel Ingenieur Elektronica aan de Katholieke Hogeschool
Limburg kregen we de mogelijkheid om een masterproef te maken. Onze keuze is daarbij gegaan
naar de opdracht van de Koninklijke Sterrenwacht van België. Ons onderwerp luidde als volgt:
het implementeren van een meerkanaals GNSS-ontvanger met flexibele herconfiguratie op een
FPGA. Dit leek ons een interessante en uitdagende opdracht omdat GNSS-ontvangers niet meer
weg te denken zijn uit de moderne samenleving. Daarbij kregen we met deze thesis de kans om
ons verder te verdiepen in de wereld van telecommunicatie en chipdesign.
Voor het goed verlopen van ons eindwerk zouden we graag aan een aantal mensen een
dankwoord willen uiten. Zonder hun hulp en steun hadden we namelijk nooit dergelijk
eindresultaat kunnen bereiken.
Eerst en vooral willen we onze promotoren, dr.ir. Wim Aerts en dr. ir. Nele Mentens bedanken
voor hun technische ondersteuning en de mogelijkheid die zij ons gaven om deze thesis te
verwezenlijken. Verder willen we ook nog een aantal andere mensen bedanken. Hierbij denken
we aan dr. Jeroen Lievens voor zijn taalkundige hulp en Jo Vliegen voor zijn hulp en begeleiding
bij het programmeren van de Virtex FPGA. Ook willen we vertegenwoordiger Johan Buschgens
van Anritsu bedanken voor zijn uiteenzettingen over de meet- en testapparatuur van Anritsu. Ten
slotte willen we de mensen van de sterrenwacht bedanken voor het ter beschikking stellen van
het nodige materiaal en lokalen en Acro voor het in bruikleen stellen van het ML401 FPGA
ontwikkelbord.
Ruben Smeets en Joris Volders
Juni 2012
Inhoud
Woord vooraf ............................................................................................................................................................ 15
Lijst van tabellen ....................................................................................................................................................... 19
Verklarende woordenlijst ......................................................................................................................................... 22
Abstract ...................................................................................................................................................................... 24
Summary .................................................................................................................................................................... 25
Inleiding ..................................................................................................................................................................... 26
Situering ................................................................................................................................................................. 26
Globale onderzoeksvraag ....................................................................................................................................... 26
Doelstellingen ......................................................................................................................................................... 14
Materiaal en methode ............................................................................................................................................. 15
1 GNSS-systemen................................................................................................................................................. 16
1.1 Geschiedenis .............................................................................................................................................. 16
1.1.1 Decca, LORAN en Omega radio navigatie systemen ........................................................................... 16 1.1.2 Transit ................................................................................................................................................... 17
1.2 Gps............................................................................................................................................................. 17
1.2.1 Inleiding ................................................................................................................................................ 17 1.2.2 Geschiedenis ......................................................................................................................................... 18 1.2.3 Basisconcept van een gps-systeem ........................................................................................................ 18
1.3 Galileo ....................................................................................................................................................... 22
1.3.1 Inleiding ................................................................................................................................................ 22 1.3.2 Geschiedenis ......................................................................................................................................... 22 1.3.2 Basisconcept van een Galileo systeem .................................................................................................. 23
1.4 GLONASS .................................................................................................................................................. 24 1.4.1 Inleiding ................................................................................................................................................ 24 1.4.2 Geschiedenis ......................................................................................................................................... 24
1.4.3 Basisconcept van GLONASS ................................................................................................................ 24
1.5 Beidou en Compass ................................................................................................................................... 25
1.5.1 Inleiding ................................................................................................................................................ 25 1.5.2 Basisconcept van Beidou-1 ................................................................................................................... 25 1.5.3 Basisconcept Beidou-2 of Compass ...................................................................................................... 26
1.6 Korte vergelijking van de systemen ........................................................................................................... 27
2 Datastructuren .................................................................................................................................................. 28
2.1 Gps............................................................................................................................................................. 28 2.1.1 Inleiding ................................................................................................................................................ 28
2.1.2 Signaaleigenschappen ........................................................................................................................... 28 2.1.3 Datastructuur ......................................................................................................................................... 30
2.2 Galileo ....................................................................................................................................................... 31 2.2.1 Inleiding ................................................................................................................................................ 31 2.2.2 Signaaleigenschappen ........................................................................................................................... 32
2.2.3 Datastructuur ......................................................................................................................................... 32
3 Ontvangen van een gps-signaal ....................................................................................................................... 33
3.1 Inleiding ..................................................................................................................................................... 33
3.2 Analoge gedeelte ....................................................................................................................................... 33 3.2.1 De antenne ............................................................................................................................................. 33 3.2.2 Analoge front-end (MAX2769)............................................................................................................. 34
3.3 Acquisitie ................................................................................................................................................... 35
3.3.1 De zoektijd bepalen van één PRN-code ................................................................................................ 37 3.3.2 Serie-parallel Correlator (SPC) ............................................................................................................. 39
3.4 Tracking ..................................................................................................................................................... 40
3.5 Incoherente en coherente integratie (navigatieboodschap)....................................................................... 43
4 Implementatie originele gps-ontvanger .......................................................................................................... 44
4.1 Algemeen blokschema................................................................................................................................ 44
4.2 Acquisitie hardwarebouwblokken .............................................................................................................. 45 4.2.1 Hybrid correlator ................................................................................................................................... 45
4.2.2 Accumulator (16-bit) ............................................................................................................................. 49
4.2.3 Compare en Store .................................................................................................................................. 56
4.3 Tracking hardware .................................................................................................................................... 59
4.3.1 1-bit correlator en accumulator ............................................................................................................. 59 4.3.2 PLE-shifter ............................................................................................................................................ 62 4.3.3 Regelblok tracking ................................................................................................................................ 66
4.4 Gedeelde hardware ................................................................................................................................... 69 4.4.1 NCO (Numerically controlled oscillator) .............................................................................................. 69
4.4.2 Dopplercounter ...................................................................................................................................... 75
4.4.3 Adresdecoder......................................................................................................................................... 77
4.4.4 ROM-geheugen ..................................................................................................................................... 81
4.5 Meetresultaten gps-kanaal ........................................................................................................................ 83
4.5.1 Simulatie ............................................................................................................................................... 83 4.5.2 Meetresultaten ....................................................................................................................................... 84 4.5.3 Syntheseresultaat ................................................................................................................................... 85
4.6 Uitbreiding naar gps/Galileo ontvangerskanaal ....................................................................................... 86
4.6.1 Inleiding ................................................................................................................................................ 86 4.6.2 Opbouw gps/Galileo-ontvangerskanaal................................................................................................. 86 4.6.3 Acquisitie (FSM concept) ..................................................................................................................... 87 4.6.4 Trackingskanaal gps/Galileo ................................................................................................................. 88 4.6.5 Conclusie gps/galileo-ontvanger ........................................................................................................... 89
5 Implementatie gps-ontvanger met partiële herconfiguratie ......................................................................... 90
5.1 Inleiding ..................................................................................................................................................... 90
5.2 Werkingsprincipe en aanpak ..................................................................................................................... 91
5.3 Dataconverter ............................................................................................................................................ 92
5.4 Software ..................................................................................................................................................... 93
Besluit ......................................................................................................................................................................... 94
Literatuurlijst ............................................................................................................................................................ 95
Inhoud van cd-rom met bijlage ................................................................................................................................ 97
Lijst van tabellen
Tabel 1: Vergelijking van systemen (1) ....................................................................................................... 27
Tabel 2: Galileo Services ............................................................................................................................. 31
Tabel 3: Parameters van een gps-kanaal.................................................................................................... 37
Tabel 4: Device Utilization Summary Hybrid correlator 16-bit .................................................................. 48
Tabel 5: Device Utilization Summary van twee implementaties van de accumulator ............................... 53
Tabel 6: Vergelijking SSC-correlator en Hybrid-correlator ......................................................................... 55
Tabel 7: Device Utilization Summary Compare & Store blok ..................................................................... 58
Tabel 8: Device Utilization Summary 1-bit correlator en accumulator ...................................................... 61
Tabel 9: Device Utilization Summary PLE-shifter ....................................................................................... 65
Tabel 10: Device Utilization Summary regelblok tracking .......................................................................... 68
Tabel 11: Device Utilization Summary NCO ............................................................................................... 74
Tabel 12: Device Utilization Summary Dopplercounter ............................................................................. 76
Tabel 13: Device Utilization Summary adresdecoder ................................................................................ 80
Tabel 14: Device Utilization Summary ROM-geheugen ............................................................................. 82
Tabel 15: Device Utilization Summary van het gps-kanaal ........................................................................ 85
Lijst van figuren
Figuur 1: Decca Navigator Mk 12 (2) ......................................................................................................... 16
Figuur 2: Transit-o satelliet (3) ................................................................................................................... 17
Figuur 3: Positie op aarde (5) ..................................................................................................................... 18
Figuur 4: Positiebepaling met 4 satellieten in een 3D ruimte (5) .............................................................. 19
Figuur 5: The three GPS segments (p44) U-blox (5) ................................................................................... 19
Figuur 6: gps-satellieten in hun 6 baanvlakken rond de aarde - U-blox p.45 (5) ....................................... 20
Figuur 7: Controlesegment positionering (6) ............................................................................................. 21
Figuur 8: Experimental satellites (17) ......................................................................................................... 22
Figuur 9: Dekkingsgebied van het BeiDou-1 systeem (12) ......................................................................... 25
Figuur 10: datastructuur van een gps-signaal - U-blox (5) ......................................................................... 29
Figuur 11: gps-datastructuur - U-blox ........................................................................................................ 30
Figuur 12: Datastructuur Open Service boodschap ................................................................................... 32
Figuur 13: Choke ring antenne (16) ............................................................................................................ 34
Figuur 14: Dipool antenne (16) .................................................................................................................. 34
Figuur 15: Blokdiagram MAX2769 (23) ...................................................................................................... 34
Figuur 16: Inkomende data vergelijken met nagemaakte PRN-codes (14) ................................................ 35
Figuur 17: Tweedimensionaal zoekproces voor één satelliet (11) ............................................................. 36
Figuur 18: Blokschema Serial-Parallel Correlator (Hybridcorrelator) (18) ................................................. 39
Figuur 19: Carrier tracking en Code tracking voor gps (19) ....................................................................... 40
Figuur 20: Genormaliseerde autocorrelatie voor gps L1 A/C code (14) .................................................... 41
Figuur 21: Genormaliseerde autocorrelatie voor Galileo E1 code (14) ..................................................... 41
Figuur 22: Vijf correlators voor tracken Galilieo E1 signalen (14) .............................................................. 42
Figuur 23: Blokschema digitaal gps-kanaal ................................................................................................ 44
Figuur 24: Opbouw hybrid correlator (links) en entity hybrid correlator (rechts) ..................................... 45
Figuur 25: Vergelijken van PRN-register en data_in register ..................................................................... 46
Figuur 26: Testbench Hybrid correlator na één PRN-periode als PRN-codes overeenkomen ................... 47
Figuur 27: Testbench Hybrid correlator na één PRN-periode als PRN-codes niet overeenkomen ............ 47
Figuur 28: Accumulator structuur .............................................................................................................. 49
Figuur 29: Rekenvoorbeeld accumulatorresultaat ..................................................................................... 50
Figuur 30: 4:2-Compressor (20).................................................................................................................. 51
Figuur 31: Boomstructuur 16-accumulator ................................................................................................ 52
Figuur 32: Entiteit van de 16-bit Accumulator ........................................................................................... 53
Figuur 33: Simulatie accumulator .............................................................................................................. 54
Figuur 34: Principeschema en entiteit SSC-correlator Ben Willems, Raf Martino (11) ............................. 54
Figuur 35: Entiteit compare en store ......................................................................................................... 56
Figuur 36: Resultaten na 1 PRN-periode bij overlapping ........................................................................... 57
Figuur 37: Resultaten na 1 PRN-periode bij geen overlapping .................................................................. 57
Figuur 38: Entiteit van de 1-bit correlator en 1-bit accumulator ............................................................... 59
Figuur 39: 1-bit correlator samen met accumulator indien fase en PRN-code gekend zijn ...................... 60
Figuur 40: 1-bit correlator samen met accumulator indien PRN-code gekend is, maar met foute fase ... 60
Figuur 41: entity van de PLE-shifter ........................................................................................................... 62
Figuur 42: Stap 1: Het inlezen van de faseoffset (PLE-shifter) ................................................................... 63
Figuur 43: Stap 2: Het genereren van de Prompt-, late- en early-code (PLE-shifter) ................................ 64
Figuur 44: Testbench PLE-shifter het genereren van Prompt-, Late- en Early-code .................................. 64
Figuur 45: Entity van de tracking regelblok ................................................................................................ 66
Figuur 46: Testbench tracking regelblok voorbeeld 1 ................................................................................ 67
Figuur 47: Testbench tracking regelblok voorbeeld 2 ................................................................................ 67
Figuur 48: Testbench tracking regelblok voorbeeld 3 ................................................................................ 68
Figuur 49: Opbouw NCO ............................................................................................................................. 70
Figuur 50: Simulatie NCO ........................................................................................................................... 72
Figuur 51: NCO meting 4.092 MHz ............................................................................................................. 73
Figuur 52: NCO meting 16.368 MHz ........................................................................................................... 73
Figuur 53: Entiteit Dopplercounter ............................................................................................................ 75
Figuur 54: Frequentiestappen NCO_counter ............................................................................................. 75
Figuur 55: Simulatieresultaten van de Dopplercounter ............................................................................. 76
Figuur 56: De opbouw (links) en entiteit (rechts) van de adresdecoder ................................................... 77
Figuur 57: Het genereren van een adres voor het ROM-geheugen ........................................................... 78
Figuur 58: Testbench adresdecoder tijdens acquisitiefase ........................................................................ 79
Figuur 59: Testbench adresdecoder tijdens trackingfase .......................................................................... 79
Figuur 60: De entity(links) en opbouw(rechts) van het ROM-geheugen ................................................... 81
Figuur 61: Testbench van het ROM-geheugen ........................................................................................... 82
Figuur 62: Testbench volledig gps-kanaal .................................................................................................. 83
Figuur 63: Meetresultaten PRN 2 ............................................................................................................... 84
Figuur 64: een mogelijke opbouw voor een gps/Galileo-ontvangerskanaal (14) ...................................... 86
Figuur 65: De FSM-flowchart voor de acquisitieblok (14) .......................................................................... 87
Figuur 66: Mogelijke opbouw van een trackingskanaal voor gps L1 en Galileo E1 (13) ............................ 88
Figuur 67: Principe partiële herconfiguratie .............................................................................................. 91
Figuur 68: Entiteit dataconverter ............................................................................................................... 92
Figuur 69: Terminal programma ................................................................................................................ 93
Figuur 70: Inhoud van cd-rom met bijlage ................................................................................................. 97
Verklarende woordenlijst
ADC Analog-to-Digital Converter
ADV Advanced
ASIC Application Specific Integrated Circuit
BOC Binary Offset Carrier
BPSK Binary Phase Shift Keying
BRAM Block Random Access Memory
C/A Coarse/Acquisition
CDMA Code Division Multiple Access
CDMF Conventional Digital Matched Filter
CNSS Compass Navigation Satellite System
DCM Digital Clock Manager
DPR Dynamic Partial Reconfiguration
DSP Digital Signal Processing
DSSS Direct Sequence Spread Spectrum
EPL Early Prompt Late
ESA European Space Agency
FCW Frequency Control Word
FDMA Frequency-Division Multiple Access
FFT Fast Fourier Transformation
FIFO First In, First Out
FOC Full Operational Capability
FPGA Field Programmable Gate Array
FSM Finite State Machine
GCC Ground Control Centrum
GCLK Global Clock
GCS Ground Control Segment
GEO Geostationary Orbit
GLONASS Global Navigation Satellite System
GMS Ground Mission Segment
GNSS Global Navigation Satellite System
GPS Global Positioning System
HF High Frequency
IF Intermediate Frequency
IOB In-Output Buffer
LNA Low Noise Amplifier
LORAN Long Range Navigation
LUT Look Up Table
MCS Master Control Station
MEO Medium Earth Orbit
NAVSAT Navy Navigation Satellite System
NCO Numerically-Controlled Oscillator
PLE Prompt Late Early
PLL Phase-Locked Loop
PR Partial Reconfiguration
PRN Pseudo Random Noise
RAM Random-Access Memory
ROM Read-Only Memory
SLMB Submarine-Launched Ballistic Missiles
SPC Serial Parallel Correlator
SSC Serial Search Correlator
TT & C Télemetrie Tracking and Command
TTF Time To first
VHDL VHSIC Hardware Description Language
Abstract
Het departement “Referentiesystemen en Geodynamica” van de Koninklijke Sterrenwacht van
België houdt exacte referenties bij over de tijd, plaats en zwaartekracht. Om de metingen en
studies hieromtrent te verbeteren, en in de toekomst gebruik te kunnen maken van nieuwe
satellietconstellaties, is onderzoek naar flexibele GNSS-ontvangers van groot belang. Deze
masterproef vormt een belangrijke stap in toekomstig onderzoek en heeft voornamelijk drie
doelen.
Een eerste doel is een gps-ontvanger, die reeds in ontwikkeling was, herwerken. Een tweede doel
is de implementatie van een GNSS-ontvanger d.m.v. partiële herconfiguratie zo flexibel en
efficiënt mogelijk maken, om zodoende in een derde stadium met minimale herconfiguratie te
schakelen tussen bijvoorbeeld gelijkaardige signalen van gps en Galileo.
De ontwikkeling van de benodigde hardwarebouwstenen voor de flexibele GNSS-ontvanger
doen we voor een Xilinx Virtex-4 FPGA. De werking van die blokken verifiëren we met
software om vervolgens met de benodigde simulatieapparatuur en een gps-front-end
verscheidene fysieke proeven uit te voeren. De partiële bitstreams worden met Xilinx PlanAhead
aangemaakt en via een pc ingeladen indien de FPGA over UART een request uitvoert. Door die
flexibilisering heeft de Koninklijke Sterrenwacht een doelmatig testplatform dat een belangrijke
schakel zal zijn in toekomstig onderzoek.
Summary
The department “Reference systems and Geodynamics” of the Royal Observatory of Belgium
keeps exact references of time, place and gravity. To improve measurements and studies for this
issue and to allow testing of new satellite constellations, the research of a flexible GNSS-receiver
is of great importance. This thesis forms an important step for future research and has three main
goals.
The first goal is to redesign a gps-receiver that has been provided by previous master students. A
second goal is to implement a GNSS-receiver by means of partial reconfiguration and make it as
flexible and efficient as possible. The third and final goal is to switch between similar signals of
gps and Galileo with minimal hardware reconfiguration.
The development of the required hardware blocks for the flexible GNSS-receiver is done for a
Virtex-4 FPGA from Xilinx. The functionality of these blocks is verified by software whereafter
several different physical tests are preformed with simulation tools and a gps-front-end. The
partial bit streams are created with the Xilinx PlanAhead tool and are downloaded to the FPGA
on request. The request takes place by means of a serial connection or UART. Because of this
flexibility the Royal Observatory has an effective test platform which will be an important key in
future research.
Inleiding
Situering
Als laatstejaarsstudenten van de opleiding Industrieel Ingenieur Elektronica aan de Katholieke
Hogeschool Limburg kregen wij de mogelijkheid om een masterproef te verwezenlijken. Onze
keuze ging naar het onderwerp van de Koninklijke Sterrenwacht België, met als opdracht het
implementeren van een flexibele meerkanaals GNSS-ontvanger (Global Navigation Satellite
Systems) op FPGA (Field Progammable Gate Array).
De Koninklijke Sterrenwacht van België, gevestigd in Ukkel is een onderzoeksinstelling die
onderzoek verricht in verschillende thema‟s binnen het vakgebied van de fysica en dynamica.
Het departement waar wij mee samenwerken, met name “Referentiesystemen en Geodynamica”,
heeft de opdracht om exacte referenties bij te houden over de tijd, plaats en zwaartekracht. Die
gegevens worden vervolgens ingepast in internationaal aanvaarde globale referentiesystemen.
Het bijhouden van deze gegevens is zeer belangrijk. De Aarde is namelijk geen vast lichaam en
is samengesteld uit vaste, vloeibare en gasvormige delen. Deze onderdelen worden voortdurend
blootgesteld aan interne en externe krachten zoals de energiedissipatie, vanuit het binnenste van
de Aarde, en de aantrekkingskracht van de Zon en Maan. En juist hierdoor is het nodig om die
gegevens bij te houden, te meten en indien nodig de referentiegegevens aan te passen. Verder
worden de resultaten van de metingen ook gebruikt in studies met betrekking tot het gemiddelde
zeeniveau, aardbevingen, platentektoniek en precieze plaatsbepaling.
Om die metingen correct uit te voeren en naar de toekomst toe te verbeteren is onderzoek naar
flexibele GNSS-ontvangers van groot belang. Het onderzoeksinstituut gebruikt die ontvangers
als testplatform voor het meten van tijd en afstand. Hoe efficiënter de metingen, hoe beter en
doeltreffender de studies. Deze masterproef tracht in eerste instantie een gps-ontvanger, die reeds
in ontwikkeling was, te herwerken. Vervolgens gaan we d.m.v. partiële herconfiguratie de
implementatie van een GNNS-ontvanger zo flexibel en efficiënt mogelijk maken. Hierna willen
we in een derde stadium met minimale herconfiguratie schakelen tussen bijvoorbeeld
gelijkaardige signalen van gps en Galileo. Door die flexibilisering heeft de Koninklijke
Sterrenwacht een doelmatig testplatform dat een belangrijke schakel zal zijn in toekomstig
onderzoek.
Globale onderzoeksvraag
Bij oudere GNSS-ontvangers was men genoodzaakt om het ontwerp in een ASIC (Application-
specific integrated circuit) te implementeren. De reden was dat de dataverwerking en tracking
van een satelliet zeer rekenintensief is en ASIC in grote oplagen goedkoper was. Een FPGA
daarentegen was voor die berekeningen te traag. In de afgelopen jaren is echter hun snelheid
aanzienlijk toegenomen en de prijs afgenomen waardoor de verwerking met een FPGA kan
KHLim Departement IWT ‟11 – „12
14
gebeuren. Vooral voor onderzoeksgericht gebruik, dus in kleine oplagen, is een FPGA hierdoor
veel goedkoper.
De grote flexibiliteit van een FPGA is voor onze masterproef van groot belang. Een eerste reden
hiervoor is het herconfigureren naar een ander satellietsysteem. Hiermee kan de plaatsbepaling
nauwkeuriger gebeuren door het combineren van verschillende satellieten en hun gegevens. Ook
voor verschillende metingen, het verbinden met externe meetapparatuur en het eventueel
uitbreiden van onze proef in de toekomst is deze flexibilisering niet onbelangrijk.
Uiteraard moet worden nagegaan of de flexibilisering van een GNSS-systeem een aanzienlijke
bijdrage kan leveren in onderzoek naar referentiesystemen en geodynamica. Daarom zullen wij
trachten om in deze masterproef dergelijk systeem te ontwikkelen, implementeren en testen.
Doelstellingen
De concrete opdracht van deze masterproef is het ontwerpen van een flexibele GNSS-ontvanger
op FPGA. Hiervoor moeten een aantal bouwblokken worden ontwikkeld en geïmplementeerd in
VHDL. Om een overzicht te geven, gaan we in onderstaande alinea‟s dieper in op de
verschillende doelstellingen.
Een eerste taak is de literatuurstudie. Hier verdiepen we ons in de verschillende technologieën
die worden gebruikt in de GNSS-wereld waardoor we een beter overzicht krijgen van onze
opdracht. Aangezien de ontvanger flexibel moet zijn, wordt het nodige onderzoek gedaan naar de
verschillende satellietsystemen zoals: gps (VS), Galileo (Europa) en Glonass (Rusland).
Vervolgens bestuderen we het ontwerp van de gps-ontvanger die reeds in ontwikkeling was.
Hiermee kan een algemeen hardwareschema en eventueel uitgebreidere planning worden
gemaakt om de gps-ontvanger te herwerken en uiteindelijk een flexibele GNSS-ontvanger te
bekomen.
Met voorgaand algemeen hardwareschema kunnen we de opdracht opsplitsen in afzonderlijke
bouwblokken zoals: carrier NCO, code NCO, PRN-generator, correlator en shifter. Een tweede
taak is die blokken uitwerken waarbij we ze afzonderlijk ontwerpen, implementeren en
simuleren. Na het testen of de onderdelen correct werken, zal een volgend doel het vergrendelen
van een gps-signaal zijn. Indien de GNSS-ontvanger op een juiste manier een gps-signaal kan
vasthouden gaan we over naar flexibilisering.
In die fase is het belangrijk dat onderdelen zoals het ROM-geheugen en de adressdecoder
worden aangepast voor partiëleherconfiguratie. Als die herconfiguratie eenmaal werkt, kunnen
we verder uitbreiden naar een flexibele ontvanger. Uiteindelijk zal de FPGA afhankelijk van het
gekozen GNSS-type een nieuwe configuratie voor de FPGA binnenlezen. Zodoende kan de
FPGA data ontvangen en verwerken van het desbetreffende satellietsysteem.
Als laatste fase zal er een rapport gemaakt worden van de verschillende ontwerpen,
implementaties en simulatieresultaten van deze masterproef.
KHLim Departement IWT ‟11 – „12
15
Materiaal en methode
Voor het ontwikkelen van deze masterproef maken we gebruik van bepaalde software, hardware
en testapparatuur. Afhankelijk van de fase waarin het ontwerp zich bevind t zal de keuze gaan
naar andere materialen en methodes.
Voor de software maken we gebruik van de ISE design suite van Xilinx. Dit is een
ontwikkelprogramma met een aantal tools specifiek voor het implementeren, simuleren en
programmeren van een FPGA. Xilinx is al meer dan 20 jaar een marktleider in de ontwikkeling
van FPGA‟s zoals de Virtex en Spartan reeks. Met behulp van die design suite kunnen we
bepalen hoe groot de benodigde chipoppervlakte is. Zo kunnen we een geschikte FPGA kiezen
met de juiste prijs-kwaliteitverhouding. Voor het opslaan van de verschillende configuraties voor
de FPGA maken we gebruik van een extern flashgeheugen.
Na de simulaties in ISE gaan we over naar een hardware gerichte simulatie. Hier wordt de FPGA
voorzien van een GNSS-signaal. Het zou echter geen slimme zet zijn onmiddellijk te testen met
een live GNSS-signaal. Live satellietsignalen ondergaan namelijk voortdurend
frequentiewijzigingen door de beweging van de satellieten t.o.v. de ontvanger en de atmosfeer.
Daarom gaan we een vector signaalgenerator gebruiken (MG3700A) om zo een gecontroleerd
GNSS-signaal aan te maken. Indien vervolgens uit nodige tests is gebleken dat de ontvanger op
FPGA correct werkt, kan een live signaal worden aangelegd.
Het GNSS-signaal zal niet rechtstreeks met de FPGA worden verbonden. Hiervoor hebben we
nog een front-end en een antenne nodig. Zowel de front-end, antenne als vector signal generator
worden ons ter beschikking gesteld op de Koninklijke Sterrenwacht.
Voor de flexibilisering passen we het acquisitiegedeelte van de ontvanger aan. Dit houdt in dat
er twee ROM-geheugens met elk vier PRN-codes worden opgeslagen op de FPGA. Indien de
acquisitiefase één ROM-blok doorlopen heeft wordt er via RS232 een request naar de pc
gestuurd. De pc zal dan via een herwerkte Visual Basic terminal de ontvangen request
verwerken. Vervolgens stuurt de pc een partiëlebitstream naar de FPGA met daarin de volgende
ROM-blok. Door dusdanig te herconfigureren kan aanzienlijk plaats bespaard worden en
beschikt de FPGA altijd over de benodigde PRN-codes.
KHLim Departement IWT ‟11 – „12
16
1 GNSS-systemen
In de hedendaagse maatschappij zijn satellietnavigatiesystemen ook bekend als GNSS-systemen
(Global Navigation Satellite Sytem) niet meer weg te denken. We gebruiken ze namelijk
dagelijks voor het bepalen van onze positie, tijd en snelheid. In de loop der jaren zijn er
voortdurend veranderingen en nieuwe technieken bedacht om een efficiëntere en nauwkeurigere
plaatsbepaling te bekomen. In dit hoofdstuk zullen we daarom kort de geschiedenis van enkele
voorlopers overlopen en vervolgens de huidige systemen kort bespreken.
1.1 Geschiedenis
1.1.1 Decca, LORAN en Omega radio navigatie systemen
De vroege voorgangers van navigatiesystemen waren de Decca, LORAN en Omega radio
navigatie systemen. Deze gebruikten lange golf radiozenders i.p.v. satellieten. Die systemen
zonden een radiopuls uit van een gekende master locatie, gevolgd door herhalende pulsen van
een aantal slave stations. Door vervolgens de vertraging te meten tussen het ontvangen van de
masterpuls en het zenden van hun eigen slavepuls kon de afstand tot elk slavestation worden
bepaald. Voor een diepgaande uitleg over deze systemen verwijzen we naar bronnen [1] en [2].
Op onderstaande Figuur 1 is een Decca navigator mk12 weergegeven.
Figuur 1: Decca Navigator Mk 12 [2]
KHLim Departement IWT ‟11 – „12
17
1.1.2 Transit
Het eerste satelliet gebaseerde navigatiesysteem was Transit ook wel bekent als NAVSAT (Navy
Navigation Satellite System). Dit systeem werd in de vroege jaren 60‟ ontwikkeld door de
Amerikaans marine en was louter bedoeld voor militaire doeleinden. [3] Het maakte gebruik van
het dopplereffect om de positie te bepalen en had voor een wereldwijde dekking slechts vijf
satellieten nodig die elk een back-up satelliet hadden. Echter een groot nadeel was dat de positie
slechts eens in de paar uur kon worden bepaald. Sinds 1996 is dit systeem offline gehaald omdat
het overbodig was door het Global Positioning System.
Figuur 2: Transit-o satelliet (3)
1.2 Gps
1.2.1 Inleiding
In dit hoofdstuk bespreken we kort de geschiedenis en het basisprincipe van een gps-systeem
met zijn verschillende onderdelen, zowel op aarde als in de ruimte. Een uitgebreide uitleg over
de technische werking kan je terug vinden in hoofdstuk twee.
Het Global Positioning System is een ruimtegebaseerde navigatie- en positioneringsysteem dat in
1973 werd ontwikkeld door het departement van defensie van de Verenigde Staten. Het
voornaamste doel was om de grenzen van voorgaande systemen te verleggen. Dit werd gedaan
door het integreren van concepten uit voorgaande systemen en enkele design studies uit de jaren
60‟. [4]
KHLim Departement IWT ‟11 – „12
18
1.2.2 Geschiedenis
Het design van een gps-systeem is deels gebaseerd op een systeem gelijkaardig aan de reeds kort
besproken Decca en LORAN navigatie systemen. Toen de Sovjet-Unie de eerste satelliet,
Sputnik in 1957 lanceerde, beslisten 2 Amerikaanse fysici, William Guier en George
Weiffenbach, om de radio transmissies van de Sputnik te monitoren. Al snel realiseerden ze dat
ze dankzij het Dopplereffect de exacte positie van de satelliet in zijn baan rond de aarde konden
achterhalen. Een volgende stap was dat principe omgekeerd toepassen zodat men indien de
satelliet positie gekend was, de plaats op aarde kon bepalen. Dat leidde op zijn beurt tot de
ontwikkeling van het reeds besproken Transit systeem.
Gedurende de koude oorlog was er vraag naar een grotere nauwkeurigheid in positiebepaling.
Die nauwkeurigheid was vooral nodig om ervoor te zorgen dat onderzeeërs een precieze
plaatsbepaling konden doen voordat ze hun SLMB‟s (submarine-launched ballistic missile)
konden lanceren. De vraag naar nauwkeurigheid leidde aldus tot de ontwikkeling van het gps-
systeem. [4]
1.2.3 Basisconcept van een gps-systeem
Inleiding
Een gps-ontvanger berekent zijn positie door precieze timing van de signalen verzonden door de
gps-satelieten. De boodschap verzonden door een gps-satelliet bevat de tijd wanneer de
boodschap werd verzonden en de positie van de satelliet op dat moment.
Hiermee kan de ontvanger bepalen hoe lang die boodschap onderweg was en hoe ver de afstand
is tot die satelliet. Die afstanden worden samen met de positie van de satellieten gebruikt om een
positieberekening uit te voeren. Dat is mogelijk door het bepalen van een middelpunt door het
meten van afstanden gebruikmakend van geometrie van cirkels, ook wel gekend als triangulatie.
In driedimensionale geometrie geldt dat indien een punt op vier oppervlakken ligt, zoals
bolschillen, dat de middelpunten van die gebieden samen met de straal voldoende eijn om de
exacte plaats te berekenen van dat punt. In onderstaande figuur is dat concept weergegeven.
Figuur 3: Positie op aarde [5]
KHLim Departement IWT ‟11 – „12
19
In eerste instantie zou je denken dat de aarde als vierde bol kan dienen, zoals in voorgaande
figuur. Wiskundig klopt dit ook maar een struikelblok hierbij is de ontvanger zijn klok. Door de
grote waarde van de snelheid van het licht zal de verwachte afstand van ontvanger tot satelliet
zeer gevoelig zijn voor fouten. Dat probleem wordt verholpen door een vierde satelliet in gebruik
te nemen zoals weergegeven in figuur 4. [4] [5]
Figuur 4: Positiebepaling met 4 satellieten in een 3D ruimte [5]
Het huidige gps-systeem bestaat volgens [5] en [6] uit drie functionele delen. Namelijk het
ruimtesegment, het controlesegment en een gebruikerssegment. Er is een
eenrichtingscommunicatie mogelijk tussen ruimte- en gebruikerssegment zodat gebruikers hun
positie kunnen bepalen. Tussen het ruimte- en controlesegment is er een bi-directionele
communicatie nodig. Op onderstaande figuur 5 zijn deze segmenten ter verduidelijking
weergegeven.
Figuur 5: The three GPS segments (p44) U-blox [5]
KHLim Departement IWT ‟11 – „12
20
ruimtesegment
Het ruimtesegment bestaat uit 32 operationele satellieten die elk in een circulaire baan om de
aarde draaien in één van de zes voorziene baanvlakken. Elk baanvlak snijdt de evenaar om de
60° met een inclinatiehoek van 55° en bevat vier tot vijf satellieten. Die satellieten roteren op een
hoogte van 20 180 km boven de aarde. Iedere satelliet maakt gedurende een siderische dag (23
uren, 56 minuten en 4.09 seconden) twee volledige omwentelingen. Tot slot is de constellatie
(figuur 6) zodanig gekozen dat er overal op de aarde op ieder moment minstens vier satellieten
ontvangen worden.
Figuur 6: gps-satellieten in hun 6 baanvlakken rond de aarde - U-blox p.45 [5]
controlesegment
Het controlesegment bestaat uit een systeem van trackingstations verspreid over de hele wereld.
Deze stations zijn op te delen in een aantal types:
een hoofdcontrolestation of MCS;
een alternatief hoofdcontrolestation;
vier grondantennes;
zes monitorstations.
De hoofdontrolefaciliteit is gelegen op de luchtmachtbasis van Schreiver in Colorado. Hier
worden precieze orbit gegevens en space vehicle (SV) klok correcties berekend voor elke
satelliet. Enkele belangrijke taken van het controlesegment volgens [5] zijn dan:
observeren van de beweging van de satellieten en het verwerken van hun data;
de klok van de satellieten monitoren en hun gedrag voorspellen;
KHLim Departement IWT ‟11 – „12
21
onboard satelliettijd synchroniseren;
heruitzetten van precieze orbitgegevens van de satellieten;
heruitzetten van verdere informatie zoals klokfouten e.d..
In onderstaande figuur 7 is hun ligging weergegeven op kaart.
Figuur 7: Controlesegment positionering [6]
gebruikerssegment
Om gps te gebruiken heeft de gebruiker op aarde een antenne voor rechtsdraaiende circulaire
polarisatie nodig. Meestal gaat het hier om een draadantenne, zoals een helix of een gekruiste
dipool. In de goedkopere consumentenelektronica zien we vaak ook een gewone dipoolantenne.
Dat heeft als gevolg dat slechts de helft van het vermogen, ook effectief wordt opgevangen. In
hoofdstuk 3, Ontvangen van een gps-signaal, gaan we verder in op de manier waarop het
gebruikerssegment werkt. [7]
KHLim Departement IWT ‟11 – „12
22
1.3 Galileo
1.3.1 Inleiding
In dit hoofdstuk zullen we kort het ontstaan, het basisprincipe en welke onderdelen het Galileo-
systeem bevat zowel op aarde als in de ruimte bespreken. Een uitgebreide uitleg over de
technische werking kan je terug vinden in hoofdstuk 4.6.
Galileo is het Europese satellietnavigatiesysteem dat momenteel wordt ontwikkeld door de
Europese Unie en de Europeseruimte-organisatie(ESA). Het systeem biedt een zeer nauwkeurige
en gegarandeerde plaatsbepaling onder publieke controle. Hierdoor staat Galileo onafhankelijk
van GLONASS, gps of Compass. Die systemen kunnen namelijk tijdens een oorlog worden
uitgeschakeld. Galileo is wel compatibel met gps en GLONASS. [8]
1.3.2 Geschiedenis
In 1999 werd door een select team van ingenieurs een reeks concepten (afkomstig van Duitsland,
Frankrijk, Italië en Engeland) voor het Galileo satellietsysteem vergeleken en gereduceerd tot
één systeem. Een officieel akkoord hieromtrent werd gesloten op 26 Mei 2003. [8] Het in
werking stellen van het Galileo navigatiesysteem bestaat uit twee belangrijke fasen.
Een eerste fase is de in-orbit validatie. In die fase werden de eerste twee experimentele
satellieten (figuur 8) genaamd GIOVE-A en GIOVE-B gelanceerd in 2005 en 2008. Hun taak
was het reserveren van de radiofrequenties benodigd voor Galileo en het testen van de
belangrijkste technieken die achter dat navigatie-systeem zouden zitten. Op 21 oktober 2011
volgden de eerste twee van de vier operationele satellieten ontworpen om het Galileo concept te
valideren en dit zowel in de ruimte als op de aarde. In 2012 zullen nog twee satellieten volgen.
Wanneer de in-orbit validatie voltooid is, wordt er overgegaan naar de tweede fase van
inwerkingstelling. In onderstaande figuur is één van de experimentele satellieten weergegeven.
Figuur 8: Experimental satellites (17)
KHLim Departement IWT ‟11 – „12
23
In de tweede fase genaamd FOC (Full Operational Capability) zal het aantal satellieten
stelselmatig worden opgevoerd. Wanneer Galileo volledig operationeel is, zullen er in totaal 30
satellieten zijn waarvan 27 operationeel en drie reserve. Die zullen op hun beurt gepositioneerd
worden op de drie vlakken in Medium Earth Orbit (MEO) op een hoogte van 23 222 km boven
de aarde. De drie vlakken maken onderling een hoek van 56°. [9]
1.3.2 Basisconcept van een Galileo systeem
Elk van de 30 satellieten heeft standaard twee rubidium atoomklokken en twee passieve
waterstof atoomklokken. Die klokken zullen een nauwkeurig timing-signaal voorzien zodat de
ontvanger kan berekenen hoe lang het signaal nodig heeft om de ontvanger te bereiken. Die
informatie wordt dan gebruikt om een positiebepaling uit te voeren. Ook hier wordt net zoals bij
gps gebruik gemaakt van triangulatie.
Het Galileo-systeem wordt gecontroleerd en bijgestuurd door een aantal controlestations op
aarde. Die stations zijn opgedeeld in GCC mode (Grond Controle Centrums).
- Fucino (Italië) GCC host en bediening van de GMS (Ground Mission Segment);
- Oberphaffenhofen (Duitsland) staat in voor het GCS (Ground Control Segment).
Verder bestaat het grondsegment uit een netwerk van sensorstations die een dekking bieden voor
orbitography- en synchronisatiemetingen. Een netwerk van uplink stations zorgt voor de uplink
van de navigatie-gegevens. Tot slot zijn er nog twee TT & C-stations (Télemetrie, Tracking en
Command) die zorgen voor de controle van de constellatie. Dit alles wordt verbonden door een
globaal datanetwerk van gegevens.
KHLim Departement IWT ‟11 – „12
24
1.4 GLONASS
1.4.1 Inleiding
GLONASS of ook wel het Global Navigation Satellite System, is een radiogebaseerd
satellietnavigatiesysteem dat is opgezet door de Russische overheid. Het was een aanvulling op
en zorgde voor een alternatief voor het gps-systeem van de Verenigde Staten.
1.4.2 Geschiedenis
De ontwikkeling van GLONASS begon in de Sovjet-Unie in 1976. De eerste drie testsatellieten
werden gelanceerd van op een basis in Kazachstan op 12 oktober 1982. In de loop der jaren
werden verschillende satellieten toegevoegd tot de constellatie welke in 1995 compleet was.
Echter was door de economische crisis het systeem eind jaren ‟90 in verval geraakt. Dit ging
zelfs zo ver dat in 2002 nog slechts acht satellieten operationeel waren waardoor plaatsbepaling
niet meer mogelijk was.
Na het herstellen van de economie werd in 2005, onder het presidentschap van Vladimir Putin,
de restoratie van het GLONASS systeem een top prioriteit. Tegen 2010 werd dan ook terug een
volledige dekking van Rusland behaald. In Oktober 2011 was de volledige constellatie van 24
satellieten hersteld waardoor er terug een globale dekking was. [10]
1.4.3 Basisconcept van GLONASS
Technisch zijn er enkele gelijkenissen met het gps-systeem. Zo heeft GLONASS 24 satellieten
waarvan er momenteel 21 operationeel zijn en 3 reserve. In tegenstelling tot bij gps zijn er hier
drie banen voorzien waar de satellieten in circuleren. De satellietbanen bevinden zich op een
hoogte van 19 100 km met een inclinatie van 64.8° en hebben een periode van 11uur en 15
minuten.
KHLim Departement IWT ‟11 – „12
25
1.5 Beidou en Compass
1.5.1 Inleiding
Het Beidou-systeem is een Chinees satellietnavigatiesysteem. Voor informatie omtrent de
werking en opbouw van dit systeem hebben we referenties [5], [11] en [12] geraadpleegd.
Het Beidou-project bestond oorspronkelijk uit Beidoe-1 dat enkel voor een dekking van China en
haar aangrenzende regio‟s zorgde. Momenteel wordt er ook gewerkt aan Beidou-2. Dit tweede
systeem, ook wel Compass genoemd, moet zorgen voor een globale dekking. In de volgende
twee punten bespreken we kort beide systemen.
1.5.2 Basisconcept van Beidou-1
Tussen 2000 en 2007 bracht China vier geostationaire satellieten in werking, welke data
voorzien voor het lokaal Beidou-1 systeem.
In tegenstelling tot de circumpolaire satellieten van gps-, GLONASS- en Galileo-sytemen
opteert Beidou voor geostationaire satellieten. Dit heeft als gevolg dat er slechts een beperkte
dekking is die weergegeven is in onderstaande figuur 9.
Figuur 9: Dekkingsgebied van het BeiDou-1 systeem [12]
Als gevolg van deze geostationaire opbouw gebeurt de positiebepaling interactief tussen de
verschillende satellieten en ontvangers. In een eerste stap wordt een signaal verzonden van de
ontvanger naar de vier satellieten. Vervolgens zullen deze satellieten de exacte tijd van ontvangst
verzenden naar een grond station. Dit station zal op zijn beurt de hoogte, lengte- en breedtegraad
van de navigatie-ontvanger bepalen en die data naar de GEO-satellieten sturen. Ten slotte zenden
de satellieten de positie naar de navigatie ontvanger.
KHLim Departement IWT ‟11 – „12
26
1.5.3 Basisconcept Beidou-2 of Compass
In de nabije toekomst wil de Chinese volksrepubliek het Beidou-2 systeem of ook wel Compass,
CNSS (Compass Navigation Satellite System) in werking stellen. Dit systeem bestaat uit vijf
GEO en 30 MEO satellieten. De vijf GEO satellieten dienen om het Beidou-2 systeem
compatibel te houden met Beidou-1. De MEO satellieten worden over zes baanvlakken rondom
de aarde verdeeld om zo voor een globale dekking te zorgen.
Het Beidou-2 systeem dient niet als uitbreiding op Beidou-1 maar als alleenstaand systeem.
Indien het volledig in werking is gesteld, zal het voornamelijk uit twee services bestaan:
1. vrij gebruik: positie bepaling tot 10m nauwkeurig, snelheidsnauwkeurigheid van
0.2m/s en een tijdsnauwkeurigheid van 50ns;
2. geautoriseerd gebruik: vooral betrouwbaarder en nauwkeuriger dan vrij gebruik.
KHLim Departement IWT ‟11 – „12
27
1.6 Korte vergelijking van de systemen
In onderstaande tabel geven we een overzicht van de verschillende systemen en hun voornaamste
eigenschappen.
Tabel 1: Vergelijking van systemen [1]
Systeem gps GLONASS COMPAS Galileo
Origine VS Rusland China Europa
Codering CDMA FDMA/CDMA CDMA CDMA
Baan hoogte 20 180 km 19 130 km 21 150 km 23 220 km
Periode 11.97 uren 11.26 uren 12.63 uren 14.08 uren
Aantal satellieten Min. 24
31, waarvan 24
operationeel
1 in voorbereiding 2
in onderhoud
3 reserve en
1 in testfase
5 geostationare orbit
satellieten (GEO) en
30 medium earth orbit
satellieten (MEO)
2 test
satellieten in
orbit en 22
operationele.
Frequentie
1.57542 GHz (L1 signal)
1.2276 GHz (L2 signal)
1.17642 GHz (L5 signal)
Around 1.602 GHz (SP)
Around 1.246 GHz (SP)
1.561098 GHz (B1) 1.589742 GHz (B1-2)
1.20714 GHz (B2) 1.26852 GHz (B3)
1.164–1.215 GHz
(E5a and E5b) 1.260–
1.300 GHz (E6)
1.559–1.592 GHz
(E2-L1-E11)
Status Operationeel Operationeel, CDMA
in voorbereiding
10 satellieten
operationeel,
25 in planning
In
voorbereiding
PRN-codelengte 1023 chipbits 511 chipbits 4092 chipbits
Symbol rate (sps) 50 250
KHLim Departement IWT ‟11 – „12
28
2 Datastructuren
2.1 Gps
2.1.1 Inleiding
Zoals reeds gezien in hoofdstuk 1 is het doel van gps om de gebruiker te voorzien in positie,
snelheid en tijd. Ook werd reeds aangehaald dat de taak van de ontvanger het meten van afstand,
Dopplerfrequentie en demodulatie van de navigatiedata is. Voor het verder bespreken van de
technische eigenschappen van de gps-signalen en dataformaat maakten we gebruik van bronnen
[11] en [13].
2.1.2 Signaaleigenschappen
De navigatie data is een 50 bit/s datastream gemoduleerd op de gps-draaggolf. Deze bevat de
satellietklok en constellatieparameters die worden gebruikt voor de positiebepaling. Het formaat
van het gps-signaal is gekend als direct sequence spread spectrum (DSSS).
De satellieten zenden signalen uit op twee frequenties L1 en L2, respectievelijk 1575.42 MHz en
1227.60 MHz. Ondanks dat de satellieten dezelfde frequentie gebruiken hebben ze onderling
geen last van interferentie. Dat komt omdat elke satelliet een unieke pseudo-random noise (PRN)
bitsequentie heeft die de draaggolf moduleerd. Die techniek wordt ook wel code division
multiplexing (CDM) genoemd en is in feite een spreadspectrum techniek. De PRN-codes zijn in
de vakliteratuur gekend als C/A-code en P(Y)-code (coarse/aquisition en precisie code). Die
code‟s zijn de zogenoemde “Gold codes” en de kruiscorrelatie ertussen is vast en uniform .
Indien men signalen gaat moduleren met deze codes zal dat voor een spreiding zorgen van de
signalen en wordt de onderlinge kruiscorrelatie van verschillende satellietsignalen
geminimaliseerd.
Spread sprectrum
In een spreadspectrum systeem worden de data zo gemoduleerd op een carrier dat het verzonden
signaal een grotere bandbreedte heeft dan nodig voor het informatiegehalte van de data.
Daarvoor wordt een door de ontvanger op voorhand gekend deterministisch signaal gebruikt.
Vervolgens gaat de ontvanger, tijdens de demodulatie van de data, een kruiscorrelatie uitvoeren
op het ontvangen signaal met een kopie van het deterministisch signaal. Op die manier kunnen
de verzonden data terug worden achterhaald.
KHLim Departement IWT ‟11 – „12
29
gps maakt gebruik van binary phase shift keying direct sequence spread spectrum (BPSK
DSSS). In direct sequence spreadspectrum wordt het spreiden gedaan door het informatie
dragend signaal te vermenigvuldigen met een spreidingscode. Die code bestaat uit verschillende
symbolen per informatie symbooltijd en gaat onder de naam “chips”. Het aantal chips per
informatiedragend symbool noemt men spreidingsfactor (SF) en is gewoonlijk hetzelfde als de
spreidingscode lengte. BPSK is de eenvoudigste vorm van fase modulatie waar de carrier
onmiddellijk 180° in fase wordt verschoven op het moment van een bitverandering. Aangezien
de data en spreidingscode op een carrier werden gemoduleerd, moet het ontvangen signaal ook
terug worden omgezet d.m.v. mixen en filteren. Dat proces zorgt ervoor dat de binaire data intact
blijven en dusdanig BPSK-demodulatie technieken bruikbaar zijn.
In het algemeen is het terug omzetten van de code alleen mogelijk als de ontvanger een kopie
van de spreidingscode genereert die gesynchroniseerd is met de spreidingscode van het
ontvangen signaal. In onderstaande figuur is een voorbeeld gegeven van de datastructuur van een
gps-signaal.
Figuur 10: datastructuur van een gps-signaal - U-blox [5]
KHLim Departement IWT ‟11 – „12
30
2.1.3 Datastructuur
Het gps-dataformaat bestaat uit time-tagged data bits. Dat betekend dat ieder subframe is
gelabeld met de transmissietijd van wanneer ze verzonden werden door de satelliet.
Eén databitframe bestaat uit 1500 bits opgedeeld in vijf subframes met elk 300 bits. Ieder
dataframe wordt elke 30 seconden verzonden. Drie subframes van elk zes seconden bevatten de
constellatie en klokdata. De klokcorrecties van de satelliet worden in subframe één verzonden
en precieze datasets van satellietbanen voor de zendende satelliet volgen in subframes twee en
drie. Subframes vier en vijf worden gebruikt om verschillende pagina‟s systeemdata
(ionosferisch model) te verzenden. Een complete navigatieboodschap bestaat uit een set van 25
frames (125 subframes) en wordt verzonden over 12,5 minuten. Op onderstaande figuur is een
overzicht gegeven van de verschillende frames.
Figuur 11: gps-datastructuur - U-blox
KHLim Departement IWT ‟11 – „12
31
2.2 Galileo
2.2.1 Inleiding
Wanneer Galileo volledig operationeel is, zullen er vijf hoofdservices worden aangeboden. In
onderstaande tabel geven we een kort overzicht van die services. Ook wordt een korte
omschrijving en hun bijhorende frequentie gegeven. In deze thesis zullen we gebruik maken van
de Galileo Open Service signalen in de E1 band. Die signalen hebben namelijk dezelfde carrier
frequentie als de L1 gps-signalen. De lengte van de PRN-codes van Galileo E1 en gps L1
verschillen maar de chiprates zijn hetzelfde (1.023 Mcps).
Voor het opstellen van een overzicht van de Galileo datastructuur en services werd gebruik
gemaakt van bronnen [8], [14] en [15].
Tabel 2: Galileo Services
Services Frequenties Omschrijving Opmerkingen
Open service E5A, E5B,
E1B/E1C
Voorziet in positionering,
versnelling en
tijdsinformatie (vrije
toegang)
Tot 1 meter nauwkeurig
en gratis beschikbaar.
Safety of life E5B, E1B/E1C
Bedoeld voor
veiligheidskritische
gebruikers ongecodeerd en
heeft een authenticatie
methode om de zender te
verifiëren.
Gegarandeerde precisie.
Commerciële service E6, E5A, E5B,
E6
Professionele toepassingen
met betere gegevens, kan
worden gebruikt ter
ondersteuning van hogere
nauwkeurigheid.
Tot 1 centimeter
nauwkeurig.
Gegarandeerde werking
aangezien deze service
niet kosteloos zal zijn.
Publiek geregelde service E6,E1A Alleen voor overheid
erkende gebruikers.
Continu beschikbaar zelfs
als andere services weg
zouden vallen.
Search and rescue N/A
Kan noodsignalen
opvangen en feedback
geven, zodoende kan bv.
een bevestiging “hulp is
onderweg” worden
gegeven.
N/A
KHLim Departement IWT ‟11 – „12
32
2.2.2 Signaaleigenschappen
In gps werd BPSK DSSS modulatie gebruikt. Bij Galileo E1 OS signalen wordt een andere
modulatie techniek, genaamd Binary Offset Carrier (BOC), samen met DSSS gebruikt. De vorm
van de BOC modulatie in E1 is sinBOC(1,1). Bij die vorm wordt iedere bit geïnverteerd in het
midden van diens periode. Dit vormt bv. een lage bit om naar een lage en een hoge bit. De
codesignalen gemoduleerd met BOC en vervolgens gebruikt om de draaggolf te moduleren,
worden gevormd met behulp van Galileo PRN-codes en navigatiegegevens.
2.2.3 Datastructuur
De navigatiedata bevat al de parameters die het mogelijk maken voor de gebruiker om een
positiebepaling uit te voeren. Ze worden op iedere satelliet opgeslagen met een geldigheidsduur
en worden wereldwijd uitgezonden door alle Galileo satellieten.
De complete navigatieboodschappen worden verzonden als een sequentie van frames. Een frame
wordt net zoals bij gps opgebouwd uit verschillende subframes. Een subframe bestaat op zijn
beurt dan weer uit verschillende pagina‟s. Dergelijke pagina is de basiscomponent voor het
opbouwen van een navigatieboodschap. Door de navigatieboodschap op die manier op te
bouwen is het mogelijk om drie verschillende hoofdcategorieën van data te versturen, welke
worden herhaald aan een snel (voor dringende data, zoals integrity), medium (zoals data nodig
voor “warm start TTF”) en langzame “rates”(zoals data nodig voor “cold start” TTF). In
onderstaande figuur is de opbouw van dergelijke boodschap weergegeven. Voor een uitgebreid
overzicht over de frames, sub-frames en pagina‟s verwijzen we naar het officiële Signal In Space
Interface Control Document van ESA [15].
Figuur 12: Datastructuur Open Service boodschap
KHLim Departement IWT ‟11 – „12
33
3 Ontvangen van een gps-signaal
3.1 Inleiding
Het ontvangen van satellietsignalen van de verschillende satellietsystemen is een zeer uitgebreid
proces. Het is dan ook nodig dat proces op te splitsen in een aantal stappen. Een eerste stap is de
ADC-conversie van het binnenkomende signaal. Hierbij hebben we gekozen om verder te
werken met de analoge front-end van de vorige masterstudenten. Namelijk een evaluatiekit van
Maxim opgebouwd rond de MAX2769. Die kit zorgt ervoor dat het HF (1579,512 – 1575,42
MHz) ingangssignaal omgezet wordt naar een bruikbaar digitaal IF (4,092 MHz) signaal.
De tweede stap is de acquisitie van het digitale signaal. In die stap zal de ontvanger zoeken naar
een “zichtbare” satelliet. Het zoeken is een driedimensionaal proces in tijd, frequentie en PRN-
code. Als er een satelliet is gevonden gaan we over naar de volgende stap, tracking.
Tracking van een satelliet is nodig om de connectie tussen de ontvanger en de satelliet te
behouden. We doen dat met behulp van een regelproces genaamd Delay-Locked Loop. De vierde
en laatste stap is de “boodschap” uit het satellietsignaal halen m.b.v. het synchronisatiewoord.
In dit hoofdstuk gaan we dieper in op de werking van de acquisitie en tracking van een digitaal
gps-kanaal. Voor het verder bespreken van de technische eigenschappen en opbouw van een
satellietsignaal maakten we gebruik van bronnen [5] en [7].
3.2 Analoge gedeelte
Het analoge gedeelte bestaat uit de antenne en de MAX2769 analoge front-end. Zoals reeds
vermeld zullen deze twee bouwblokken verantwoordelijk zijn voor het ontvangen en
digitaliseren van de satellietsignalen. We gaan die blokken slechts kort aanhalen aangezien dit
een thesis op zich vormt.
3.2.1 De antenne
De linker figuur op volgende pagina stelt de GNSS-antenne voor. Het is belangrijk om een goede
antenne te hebben om het satellietsignaal te ontvangen, hier berust namelijk heel het
ontvangstgedeelte op. Daarom opteert men best voor een antenne met een rechtsdraaiende
circulaire polarisatie. Dat soort antennes kan men terugvinden onder de vorm van draadantennes,
helix-antennes, gekruiste dipoolantennes (figuur 14), enz.
Er bestaat ook een onderscheid tussen goedkopere ontvangers, bedoeld voor consumenten
elektronica, en de duurdere modellen. De duurdere ontvangers maken gebruik van een “choke-
KHLim Departement IWT ‟11 – „12
34
ring” (zie onderstaande figuur 13). Die antennes kunnen meerdere frequenties ontvangen en
hebben als eigenschap een goede weerstand tegen multipath ontvangst.
Daarnaast is er ook nog een verschil tussen actieve en passieve antennes. Een actieve antenne
heeft een LNA (Low Noise Amplifier) aan boord, welke het signaal direct versterkt. De passieve
heeft dit niet. [16]
3.2.2 Analoge front-end (MAX2769)
Achter de antenne komt de evaluatiekit van Maxim. De MAX2769 chip is speciaal ontworpen
om te gebruiken in satellietnavigatiesystemen zoals gps, Galileo en GLONASS. Alle belangrijke
onderdelen, zoals de ADC en de oscillator, zijn hier in ondergebracht. Het blokdiagram in
onderstaande figuur geeft meer duidelijkheid over de samenhang van die verschillende
onderdelen. Voor meer uitleg hierover verwijzen we naar de datasheet van Maxim.
Figuur 13: Choke ring antenne [16] Figuur 14: Dipool antenne [16]
Figuur 15: Blokdiagram MAX2769 [23]
KHLim Departement IWT ‟11 – „12
35
3.3 Acquisitie
Een tweede stap is de acquisitie van een satellietsignaal welke nodig is om een zichtbaar
satellietsignaal op te sporen. In feite is dat mechanisme niet meer dan een zoekproces dat op
zoek gaat naar de drie componenten die het binnenkomende GNSS-signaal bevat, namelijk de
GNSS-boodschap, de frequentie van de draaggolf (die het Dopplereffect ondergaat) en de PRN-
code (of m.a.w. de satelliet waarvan het signaal afkomstig is).
Bij gps en GALILEO gebruikt elke satelliet dezelfde frequentieband met een identieke
draaggolffrequentie om een signaal uit te zenden. Een manier om de verschillende signalen van
elkaar te onderscheiden is gebruikmaken van het codedomein. Dat is mogelijk omdat elk signaal
gemoduleerd is met een unieke PRN-code (C/A-code bij gps). Het doel van de ontvanger is die
PRN-code na te maken en te correleren met het binnenkomend signaal. De kruiscorrelatie van de
verschillende PRN-codes geeft een waarde die dicht bij nul ligt. De autocorrelatie daarentegen
geeft een hoge waarde.
In het correlatieproces wordt elke samplebit van de nagemaakte PRN-code vergeleken met de
binnenkomende samplebit van het signaal. Hoe meer van de samples overeenkomen, hoe hoger
het resultaat, dus een betere correlatie. Als de meeste samples overeenkomen, heeft de ontvanger
de satelliet gevonden. Het aantal samples dat overeen moet komen voordat er een match
gevonden is, wordt bepaald door een algoritme. In figuur 16 is te zien hoe een binnenkomend
signaal overeenkomt met een nagemaakte PRN-code. Het zoeken achter een satellietsignaal kan
één of meerdere PRN-codeperiodes in beslag nemen. Dat is afhankelijk van de signaalsterkte en
dus ook van de aanwezige ruis. Voor zwakkere signalen worden dan ook langere integratietijden
bekomen.
Figuur 16: Inkomende data vergelijken met nagemaakte PRN-codes [14]
In het algemeen is de fase van de binnenkomende PRN-code onbekend voor de ontvanger. Dat
wil zeggen dat alle mogelijke fasen van de code doorlopen moeten worden om zo te achterhalen
welke de juiste is. Daarnaast is er ook een bepaalde nauwkeurigheid vereist bij het correleren van
de verschillende chipbits1. Die nauwkeurigheid kan men verkrijgen m.b.v. oversampling. Verder
1 Chipbits is een andere benaming voor de PRN-bits. Bij GPS bestaat elke PRN-code uit 1023 chipbits, wat één
PRN-periode voorstelt.
KHLim Departement IWT ‟11 – „12
36
zijn er nog een aantal aspecten waar de ontvanger rekening mee moet houden. Een eerste is de
beginfase van de draaggolffrequentie. Omdat de oscillator in de ontvanger niet gelijkloopt met
de oscillator in de zender komen de fasen niet overeen. Een oplossing hiervoor is eerst het apart
correleren van de I- en Q-signalen en vervolgens het resultaat vormen uit die twee.
Een tweede aspect is de draaggolffrequentie. Hoewel die frequenties goed gekend zijn, is het niet
zeker dat de ontvangen frequentie overeen komt met de verzonden. Dat heeft te maken met het
Dopplereffect. Aangezien de satellieten bewegen t.o.v. de aarde en de ontvanger in veel gevallen
ook beweegt, kan de draaggolffrequentie met 10 kHz boven of onder de gekende frequentie
liggen. Voor een niet bewegende ontvanger is dat 5 kHz. Indien de Dopplerafwijking niet
berekend kan worden uit de ontvangerspositie, snelheid en satellietbaandata, moet de ontvanger
alle mogelijke Dopplerfrequenties doorlopen binnen het gekozen bereik. Het doorlopen van de
verschillende frequenties gebeurt m.b.v. “bin spacing”. Elke Dopplerbin moet ongeveer gelijk
zijn aan
, met T gelijk aan signaalintegratietijd.
Een laatste aspect is het zoeken naar de juiste PRN-code. De satellietconstellatie is zo
opgebouwd dat op elk moment minstens vier satellieten zichtbaar zijn overal op aarde. Omdat
elke satelliet een unieke PRN-code bezit, bestaat de mogelijkheid dat de ontvanger verschillende
PRN‟s moet doorlopen alvorens de juiste gevonden is. [14]
Onderstaande opsomming en afbeelding geven nog eens duidelijk alle belangrijke parameters
binnen het zoekproces naar één satelliet:
1. de verschillende fasen van de PRN-code;
2. de oversamplefactor van de chipbits;
3. de beginfase van de draaggolffrequentie;
4. de afwijking van de draaggolffrequentie door het Dopplereffect.
Figuur 17: Tweedimensionaal zoekproces voor één satelliet [11]
KHLim Departement IWT ‟11 – „12
37
De signaalacquisitie kunnen we op veel manieren aanpakken. Hiervoor zijn er verschillende
technieken beschikbaar, elk met hun voor- en nadelen. Een aantal van die technieken zijn serial
search acquisition, parallel frequency space search acquisition en parallel code phase search
acquisition. De eerste van de drie methodes is de meest eenvoudige en werd gebruikt door de
voorgaande masterstudenten. De laatste twee maken gebruik van FFT (Fast Fourier
Transformatie) en zijn een stuk complexer.
Omdat de serial search acquisition methode zeer tijdsintensief is, hebben we besloten om
gebruik te maken van een andere techniek. Namelijk een afgeleide vorm van de Conventional
Digital Matched Filter (CDMF) methode, de Serial-Parallel correlator. We gaan daarom ook
enkel die methode hier bespreken. Voor meer uitleg over de verschillende acquisitietechnieken
verwijzen we naar de paper “A Processing Engine for GPS Correlation”. [17]
3.3.1 De zoektijd bepalen van één PRN-code
Om een beeld te geven over de benodigde tijd om één satelliet te zoeken bij gps (C/A-code),
geven we hier een klein wiskundig voorbeeld. Hierin wordt er gebruik gemaakt van een serie-
parallelcorrelator met een register grootte van 16 bits. Een overzicht van de parameters is
weergeven in onderstaande tabel:
Tabel 3: Parameters van een gps-kanaal
Parameters Waarde
Oversampling factor 4
Gps C/A-code
PRN-codelengte (gps) 1023 chipbits
Chiprate 1,023 Mhz
PRN-periode 1 ms
Register grootte (correlator) 16 bit
Dopplereffect
Doppler shift 10 kHz
Doppler bin 500 Hz
1. Er zijn 1023 chipbits met een oversampling factor van 4:
2. De PRN-periode is gelijk aan 1 ms:
KHLim Departement IWT ‟11 – „12
38
3. De Serial-Parallel correlator heeft een register grootte van 16 bit, dit wil zeggen dat er 16
fasen van de PRN-code tegelijkertijd gecorreleerd worden (meer uitleg in volgende
paragraaf).
In het slechtste geval moet de correlator alle fasen afgaan:
4. Per fase moet de PRN-code volledig doorlopen worden:
5. Het signaal kan een Dopplershift ondergaan van 10 kHz, die kan zowel boven de IF als er
onder liggen. Concreet zal de draaggolffrequentie in een bandbreedte van 20 kHz rond de
IF liggen. We hebben gekozen om met stappen van 500 Hz de carrierfrequentie te
veranderen:
6. Per frequentiestap moeten alle fasen doorlopen worden:
We kunnen dus besluiten dat er 10,5 seconden nodig zijn om één satelliet te zoeken. Merk op dat
dit enkel geldig is in het slechtste geval. In realiteit kan het zoeken minder lang duren. Als we
dezelfde berekening zouden maken voor serial search acquisition bekomen we een resultaat dat
16 keer hoger ligt.
KHLim Departement IWT ‟11 – „12
39
3.3.2 Serie-parallel Correlator (SPC)
Seriële acquisitie is traag maar neemt weinig chipoppervlakte in beslag. Parallelle acquisitie
daarentegen is zeer snel maar neemt in verhouding veel meer oppervlakte in beslag. Een
afweging tussen de twee geeft de seriële-parallelle acquisitie. Het doel van die methode is een
redelijke snelheid en tegelijkertijd minder plaats innemen t.o.v. de parallelle methode. Een
bijkomend voordeel is het feit dat het toepasselijk is voor zowel gps als Galileo signalen. Stel dat
men parallelle acquisitie zou gebruiken voor verschillende lengtes van PRN-codes. Dan moet het
register even groot zijn als de langste PRN-code. Dit zou verspilling zijn van de oppervlakte
indien we gebruik maken van korte PRN-codes zoals bij gps. Bij seriële-parallelle acquisitie is
dit niet het geval omdat we maar een stuk van PRN-code gaan correleren en niet de hele PRN-
code.
Het idee is hetzelfde als bij parallelle acquisitie maar dan voor kleinere stukken van de PRN-
code. Maar om seriële-parallelle acquisitie mogelijk te maken is het nodig om de lengte X van
het schuifregister zo te kiezen dat het deelbaar is door alle PRN-codelengtes. Het onderstaande
blokschema laat een mogelijke opbouw zien voor een seriële-parrallelle correlator:
Figuur 18: Blokschema Serial-Parallel Correlator (Hybridcorrelator) [18]
Een uitgebreide uitleg over de werking met bijhorende simulatie en meetresultaten vindt u in
hoofdstuk 4.2.
X X X X X X X X...
/
X
Data in 1 2 3 4 5 6 7 ... X
1 2 3 4 5 6 7 ... X
X-bit schuifregister
Stukje PRN-code van X-bits afkomstig van ROM geheugen
Accumulator
∑
X-tap delay line
result
KHLim Departement IWT ‟11 – „12
40
3.4 Tracking
Eens een satellietsignaal is gevonden, is het belangrijk om het niet te verliezen. Dat is echter niet
zo evident want de frequentie van het signaal zal wijzigen in de tijd en het is ook mogelijk dat
het signaal geblokkeerd wordt voor een bepaalde periode. Tracking zal daarom trachten het
signaal te volgen eens de acquisitie is afgelopen. Dit gebeurt door het “locken” op de
draaggolffrequentie en fase. Hierbij zal de tracking de correlatie van de inkomende PRN-code en
de nagebootste PRN-code zo hoog mogelijk proberen te houden. Met tracking is het ook
mogelijk om de navigatiedata uit het signaal te halen. In onderstaande afbeelding is een
mogelijke opbouw weergegeven voor het tracking gedeelte bij gps:
Figuur 19: Carrier tracking en Code tracking voor gps [19]
Om het inkomende signaal te tracken moet het kanaal een zo goed mogelijke kopie maken van
dat signaal. Dat wil zeggen dat eerst de draaggolffrequentie uit het inkomende signaal verwijderd
moet worden en daarna wordt vergeleken met de lokale PRN-code. Voor gps L1 PRN-codes is
dit voldoende. Als we Galileo E1 PRN-codes willen volgen is het nodig om het inkomende
signaal extra te moduleren met een sinBOC(1,1) functie. De sinBOC(1,1) functie is een
subcarrier die gemoduleerd wordt op het signaal bij Galileo.
KHLim Departement IWT ‟11 – „12
41
De PRN-codes van gps L1 zijn ontworpen om een maximale correlatie te geven als de fasen
volledig overlappen. Als de fasen niet overlappen dan is de correlatie ongeveer gelijk aan „0‟. Bij
gps L1 signalen veranderen de correlatiewaarden lineair indien er een foutieve uitlijning van één
of meerde chipbits is. Dit is weergegeven in figuur 20. Galileo daarentegen heeft geen lineaire
correlatiewaarden. Door de sinBOC(1,1) functie kan het zijn dat de waarden voor maximale
correlatie en foutief uitgelijnde correlatie overeenkomen. We krijgen namelijk twee zijpieken
zoals zichtbaar in figuur 21. Opm.: een maximale correlatie wordt weergegeven door de pieken
van de driehoeken. [14]
Figuur 20: Genormaliseerde autocorrelatie voor gps L1 A/C code [14]
Figuur 21: Genormaliseerde autocorrelatie voor Galileo E1 code [14]
KHLim Departement IWT ‟11 – „12
42
Eén van de technieken die wordt gebruikt bij het tracken van GNSS signalen is de early-prompt-
late-techniek. In feite wordt bij die techniek de binnenkomende PRN-code drie keer nagebootst,
waarbij elk van die drie replicacodes onderling één sample in fase verschoven zijn. Elke
verschuiving heeft een naam zijnde: prompt-, late- en early-code. Met behulp van die
replicacodes is het mogelijk om de ontvanger de binnenkomende PRN-code te laten tracken.
Voor meer uitleg over de werking van PLE-tracking verwijzen we naar de thesis van Ben
Willems en Raf Martino. [11]
Bij PLE-tracking wordt getracht de piek van de driehoek te volgen. Voor gps L1 is dit mogelijk
met slechts drie correlators, maar voor Galileo hebben we er minstens vijf nodig (figuur 22).
Figuur 22: Vijf correlators voor tracken Galilieo E1 signalen [14]
Informatie over de draaggolf-fase en -frequentie wordt verkregen door het bekijken van de
correlatie resultaten van de I en Q kanalen. Het doel is om de frequentie en fase van de draaggolf
zo te wijzigen dat er een maximale correlatie is in één kanaal (bv. I) en minimale in het andere
kanaal. [14]
KHLim Departement IWT ‟11 – „12
43
3.5 Incoherente en coherente integratie (navigatieboodschap)
De PRN-codes worden gemoduleerd met een navigatieboodschap. Die boodschap heeft een
inverterend effect op de PRN-code als een bit veranderd. Hierdoor zijn er soms langere
acquisitietijden nodig om één PRN-code te zoeken. Als de PRN-code wordt geïntegreerd over
een bepaalde tijd, waarin een bitverandering optreed, is het mogelijk dat de correlatie tot dat punt
volledig wordt opgeheven door de correlatie na de bitverandering. Zelfs als de fase en de
frequentie van de draaggolf volledig juist waren geeft het resultaat weer dat er geen correlatie is.
Bij gps L1 is de datarate van de navigatieboodschap 50 Hz, daaruit volgt meteen dat er twintig
PRN-periodes van gps in één navigatiebit zitten. Want we weten dat één PRN-periode gelijk is
aan 1 ms. Het is ook voor de handliggend dat hoe korter de integratietijd, hoe minder kans op
een bitverandering tijdens de correlatie. Bij Galileo E1B signalen ligt de datarate vijf keer hoger.
Dat heeft als gevolg dat de navigatiedata kan veranderen om de 4 ms.
Bij coherente integratie gaan we ervan uit dat het teken van de correlatiewaarde omkeert bij een
bitverandering. Dat zorgt ervoor dat we meteen weten wat de limiet is van de langst nuttige
integratietijd voor de lengte van één bitverandering. Als we gebruik maken van coherente
integratie zal het ruisgemiddelde dicht bij nul liggen en de acquisitiepiek stijgen naargelang er
meer chipbits geïntegreerd worden. Als er dan een bitverandering optreed kan het resultaat
nutteloos zijn.
Incoherente integratie is een methode die het effect van een bitverandering probeert tegen te
gaan doormiddel van het combineren van volledige correlatieresultaten van kleinere stukken van
de PRN-code. Die stukken worden apart gecorreleerd volgens de coherente methode en bij
elkaar opgeteld om het totale resultaat te bekomen. Het optellen gebeurt met de absolute waarden
van de correlatieresultaten. Door gebruik te maken van die methode zal een bitverandering enkel
het resultaat van de correlatie waarin de verandering is opgetreden onbruikbaar maken. Hierdoor
zal het totale resultaat, voor lange integratietijden, het meeste bestaan uit goede samples en
enkele onbruikbare samples. Een nadeel van incoherente integratie is de stijging van de
ruisinvloed op het resultaat door het optellen van de deelresultaten. Dit heeft als gevolg dat we
speciale technieken moeten toepassen om de ruisinvloed tijdens acquisitie te verminderen. [14]
KHLim Departement IWT ‟11 – „12
44
4 Implementatie originele gps-ontvanger
4.1 Algemeen blokschema
In dit hoofdstuk gaan we dieper in op het ontwerp en de implementatie van de hardware die we
ontwikkeld hebben voor het opbouwen van het gps-ontvangstkanaal. Daarnaast bespreken we
ook de belangrijkste hardware bouwblokken en de verschillende keuzes die we gemaakt hebben
tijdens die ontwikkeling. De belangrijkste hardwarebouwblokken zijn:
de Numerically-Controlled Oscillator (NCO),
de Hybrid correlator,
de 16-bit Accumulator,
de adresdecoder,
het ROM-geheugen,
het EPL-schuifregister,
het regelblok voor acquisitie,
het regelblok voor tracking.
Het ontwerp van alle bouwblokken is terug te vinden op de cd-rom met bijlagen. Met behulp van
ISE Design Suite van Xilinx is het tevens mogelijk om de projectmap te openen, de
syntheseresultaten op te vragen en de testbenches uit te voeren.
Figuur 23: Blokschema digitaal gps-kanaal
Bovenstaand blokschema geeft weer uit welke hardwarebouwblokken één digitaal kanaal van
een gps-ontvanger bestaat. Met behulp van dergelijk kanaal is het mogelijk om één
satellietsignaal te ontvangen. Indien men meerdere satellieten wil ontvangen is het nodig om
meerdere van deze kanalen te gebruiken.
Hybrid
correlator IAccumulator
1-bit
correlator
late
1-bit
accumulator
1-bit
correlator
prompt
1-bit
accumulator
1-bit
correlator
late
1-bit
accumulator
Shifter
ROMAdres-
decoder
Hybridcorrelator I
ROM
Carrier NCO
90°
I
Q
...
MAX2769
GNSS-front-
end
Code NCO
Hybridcorrelator Q
Re
ge
lblo
k
Acq
uis
itie
en
Tra
ckin
g
Hardwareblokken
gebruikt bij Acquisitie
Hardwareblokken
gebruikt bij Tracking
Gezamelijke
hardwareblokken
Carrier
NCO
Regelblok
Antenne
FPGAAnaloog
gedeelte
KHLim Departement IWT ‟11 – „12
45
4.2 Acquisitie hardwarebouwblokken
Om een goed overzicht te behouden hebben we besloten om de samenhangende
hardwarebouwblokken te groeperen. We beginnen met het bespreken van de Hybrid correlator.
Daarna overlopen we de 16-bit Accumulator en ten slotte het regelblok voor acquisitie.
4.2.1 Hybrid correlator
Zoals we reeds besproken hebben in paragraaf 3.3 is er per ontvangstkanaal een correlator nodig.
Het is immers de correlator die de binnenkomende PRN-code vergelijkt met de PRN-code die
wordt nagebootst door de ontvanger, en zorgt voor signaalacquisitie en satellietidentificatie. In
de literatuur zijn heel wat verschillende implementatievormen en principes voor correlatoren
terug te vinden. Voor ons ontwerp beschouwen we enkel de variant van een conventional digital
matched filter (CDMF), de zogenaamde hybrid correlator. We hebben onze implementatie
vergeleken met dat van de voorgaande masterstudenten. Hieronder volgt de bespreking.
Hardware-architectuur
De hybrid correlator is in feite een combinatie van de parallelle en seriële SSC-correlator. Dat
geeft een iets complexer ontwerp dan de SSC-correlator die enkel een vermenigvuldiging moet
uitvoeren. Bovendien maken we gebruik van een ROM-geheugen die alle PRN-codes bevat in
plaats van een PRN-generator. In figuur 24 is de opbouw van onze hybrid correlator
weergegeven samen met de entiteit.
Figuur 24: Opbouw hybrid correlator (links) en entity hybrid correlator (rechts)
De hybrid correlator is voorzien van één schuifregister voor de inkomende satellietdata en één
register voor een stukje van de PRN-code. Beide registers hebben plaats voor 16 bits. We hebben
gekozen om gebruik te maken van 16-bit, omdat dit een goede trade-off is tussen
X X X X X X X X...
/
X
Data in
1 2 3 4 5 6 7 ... X
1 2 3 4 5 6 7 ... X
X-bit schuifregister
Stukje PRN-code van X-bits afkomstig van ROM geheugen
Accumulator
∑
X-tap delay line
Reset
Clk
Enable
Clk_flank_4092
Data_in
PRN_in (15:0)
Hybrid_result(15:0)
KHLim Departement IWT ‟11 – „12
46
implementatieruimte en acquisitiesnelheid. Bovendien moet de PRN-codelengte geheel deelbaar
zijn door de registergrootte, wat ook het geval is. Daarnaast zijn er nog een aantal
vermenigvuldigers die de inkomende PRN-code vergelijken met de PRN-code uit het ROM-
geheugen.
Het schuifregister klokt de satellietdata van links naar rechts binnen op het ritme van de 4,092
MHz klok. Om alles synchroon te houden met de systeemklok gebruiken we de 4,092 MHz,
afkomstig van de Code-NCO, als klok enable.
Het zoeken naar een bepaalde satelliet werkt als volgt: Als we beginnen met zoeken is de
faseverschuiving en de PRN-code van de inkomende data nog niet gekend. Het PRN-register
wordt daarom standaard gevuld met de eerste 16 chipbits van de PRN-code. Iedere klokflank van
de 4,092 MHz klok zal de satellietdata worden opgeschoven. Dit schuiven zorgt ervoor dat er
elke klokflank een andere fase wordt vergeleken met het PRN-register. Zie onderstaande figuur
voor meer duidelijkheid:
Figuur 25: Vergelijken van PRN-register en data_in register
Omdat we gekozen hebben om het register 16 bits breed te maken, zullen er 16 fasen tegelijk
gecorreleerd worden gedurende één PRN-periode. Indien het resultaat van de integratie
(accumulator) niet hoog genoeg is voor elke fase, starten we volgende PRN-periode met de
volgende 16 bits uit het ROM-geheugen (dus de volgende 16 fasen). Dit blijven we herhalen tot
alle mogelijke fasen zijn doorlopen of het resultaat van de integratie voldoende hoog is. Het
integreren van de correlatieresultaten wordt uitgevoerd door de 16-bit accumulator. Meer uitleg
hierover in het volgende onderdeel accumulator.
1 PRN-periode
BeginEind
Beginsituatie
data_in
Satellietdata (data_in)
Beginsituatie
PRN-register
Data PRN-register
0123456789101112131415
...
Eerste Databit
(satellietdata)
Databit PRN-
register
1ste klokflank
2de klokflank
3de klokflank
4de klokflank
KHLim Departement IWT ‟11 – „12
47
Simulatie en meetresultaten
Na de implementatie hebben we het ontwerp getest m.b.v. een testbench in VHDL. In deze
testbench gebruiken we een PRN-codegenerator voor het simuleren van de binnenkomende code.
Vermits de codegenerator alle 37 C/A PRN-codes kan genereren, hebben we een aantal
verschillende combinaties van PRN-codes aangelegd aan de ingang van de Hybrid correlator.
Een eerste combinatie die we getest hebben is het ideale geval. Namelijk als beide PRN-codes
overeen komen zonder ruis aan de ingang. Aangezien het ROM-geheugen begint op PRN 1
hebben we de codegenerator ook laten starten op PRN 1. Hieruit volgt natuurlijk een maximale
correlatiewaarde bij een bepaalde fase. Het verloop van de testbench is afgebeeld in figuur 26.
Een tweede combinatie benaderd een meer voorkomend geval, namelijk als de twee PRN-codes
niet overeenkomen. De correlatiewaarde die hieruit volgt is zeer laag. Die combinatie is te zien
in figuur 27. Opm.: Aangezien de Hybrid correlator enkel de vergelijking uitvoert tussen de twee
PRN-codes, hebben we ook de 16-bit accumulator, die in volgend punt wordt besproken, reeds
aangesloten om de correlatiewaarden te berekenen.
Figuur 26: Testbench Hybrid correlator na één PRN-periode als PRN-codes overeenkomen
De groen gemarkeerde waardes komen overeen met de correlatieresultaten van 16 fasen na één
PRN-periode. Omdat de PRN-code van de ingang overeenkomt met de nagebootste PRN-code
krijgen we een zeer hoog correlatieresultaat. Elke waarde stelt een andere fase voor. Hieruit
kunnen we besluiten dat er bij een bepaalde fase een correlatiepiek optreedt van 4084 (max.
4092). Ook op onderstaande figuur geven de groen gemarkeerde waardes de correlatieresultaten.
We zien dat het resultaat zeer laag blijft, er is dus geen correlatiepiek.
Figuur 27: Testbench Hybrid correlator na één PRN-periode als PRN-codes niet overeenkomen
KHLim Departement IWT ‟11 – „12
48
Keuzes en vergelijking
Om de acquisitietijd in te korten en toch een voldoende kleine implementatiegrootte te bekomen,
hebben we gekozen om gebruik te maken van een 16-bit hybridecorrelator. Hierdoor zal de
acquistietijd 16 keer sneller verlopen dan bij de SSC-correlator. Het toepassen van de 16-bit
hybridecorrelator heeft naast de snelle acquistietijd ook een aantal nadelen. We krijgen namelijk
een veel complexer ontwerp wat tevens zorgt voor meer chipoppervlak. Voor de
hybridecorrelator komt dit neer op ongeveer een factor 16 groter dan de SSC-correlator. De
implementatiegrootte is weergegeven in onderstaande tabel.
Tabel 4: Device Utilization Summary Hybrid correlator 16-bit
Device Utilization Summary
Logic Utilization Gebruikt 16-bit
correlator
Beschikbaar Utilization 16-bit
correlator
Number of Slice Flip Flops 16 21,504 1%
Number of 4 input LUTs 16 21,504 1%
Number of occupied Slices 6 10,752 1%
Number of bonded IOBs 36 448 8%
Average Fanout of Non-Clock Nets 2.11
KHLim Departement IWT ‟11 – „12
49
4.2.2 Accumulator (16-bit)
Om de resultaten van de hybridecorrelator te verwerken, gaan we een accumulatorblok
uitwerken. Die staat in voor het berekenen van het aantal hoge en het aantal lage bits. Het
bepalen welke bits hoog of laag zijn kan worden ontworpen volgens twee strategieën. Enerzijds
met een “eenvoudige” for-lus in VHDL-code en anderzijds met een hardware ontwerp van
bouwblokken in VHDL (Wallace-Tree). In dit hoofdstuk zullen we beide aanhalen en bepalen
welke manier van implementeren het efficiëntst is. Zo kunnen we een optimaal ontwerp
bekomen, voor zowel werking als oppervlakte inname. In onderstaande figuur is ter
verduidelijking een blokschema van de 16-bit accumulator weergegeven.
Tree
+
...
X 2 +
-16
Input
Output
13
16
Figuur 28: Accumulator structuur
Aangezien de boomstructuur enkel een resultaat uitgeeft met hoeveel van de ingangsbits hoog
zijn, moeten we dit resultaat omvormen. Er moet immers -1 worden gedaan voor een ingang die
laag is. Een kort rekenvoorbeeld volgt op volgende pagina.
Iedere fase heeft zijn eigen plaats in het register en voor iedere 16 bits die opnieuw worden
vergeleken, worden de resultaten van elke fase bij de overeenstemmende fase opgeteld. Zo
kunnen we twee uiterste resultaten krijgen van - en + 4092. Om die reden gaan we als uitgang
een 13-bit woord uitsturen waarvan één bit een tekenbit is.
KHLim Departement IWT ‟11 – „12
50
Rekenvoorbeeld
Inputbits van de accumulator: 0000 1111 0001 1111
De boomstructuur geeft dan: a = 001001
Als input = 1 +1
Als input = 0 -1
Dit doen we door:
2a bekomen door a één bit op te schuiven naar links en een nul erbij te zetten: 0010010
-16 bekomen we door het two‟s compliment te nemen van 16.
Op die manier kunnen we -16 optellen bij 2a om zo het eindresultaat te bekomen. Dat gebeurt in
hardware zoals weergegeven in onderstaande figuur:
1 1 0 0 0 0+
6 5 4 3 2 1 0
HA
1
Carry Som+ 1
AND 1
+
4 XNOR 5
NOT 4
Tekenbits
Figuur 29: Rekenvoorbeeld accumulatorresultaat
Op die manier bekomen we voor ons voorbeeld een eindresultaat van twee.
KHLim Departement IWT ‟11 – „12
51
Accumulator met For loop
Hier wordt een eenvoudige for lus gebruikt om, over het bereik van de inputdata, het aantal
inputpins die hoog zijn te tellen.
count := (others => '0'); for i in data_in'RANGE loop count := count + data_in(i); end loop;
Accumulator met 4:2-compressor
Voor de accumulator met een boomstructuur zijn er 4:2-compressoren nodig. Deze vormen als
het ware vier ingangen om naar drie uitgangen namelijk een carry, som en carry-out. De interne
structuur van dergelijke compressor (Figuur 30) bestaat uit zes multiplexoren die samen voor
drie poortvertragingen zorgen.
Figuur 30: 4:2-Compressor (20)
Vervolgens wordt een Wallace-tree opgebouwd met zeven compressors. Op de eerste boom
worden de 16 databits aangelegd en als carrier-in wordt telkens een „0‟ voorzien. Hierna kan de
totale accumulator worden opgesteld met vijf bomen. In een Wallace-Tree rimpelt de Carry out
door naar de volgende boom. In de figuur op volgende pagina is de totale boomstructuur
weergegeven van de accumulator.
KHLim Departement IWT ‟11 – „12
52
Figuur 31: Boomstructuur 16-accumulator
C SC S
C S
C0 S0
C S
C SC SC S
C S
C SC S
C1 S1
C S
C S
C S
C SC SC S
C2 S2
C S
C S
C SC SC SC SC SC SC SC S
C S C S C S C S
C3 S3C4 S4
DATA
0 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0
0 00 0
„0‟
„0‟
„0‟
„0‟ S4 S3 S2 S1 S0
C4 C3 C2 C1 C0 '0'+
“OPEN”
“OPEN”
“OPEN”
Co CiCo Ci
Co Ci
Co Ci
Co Ci
Co CiCo CiCo Ci
Co Ci
Co Ci
Co Ci
Co CiCo CiCo CiCo Ci
Co Ci
Co CiCo CiCo Ci
Co Ci
Co Ci
Co Ci Co Ci Co Ci Co Ci Co Ci Co Ci Co Ci Co Ci
Co CiCo Ci
Co Ci
Co CiCo Ci
Co Ci
KHLim Departement IWT ‟11 – „12
53
Keuze en vergelijking lus- en boomstructuur
In onderstaande figuur en tabel is een overzicht gegeven van de entiteit en de implementatiegrote
van beide ontwerpen gedurende de fysieke testen. Uit de tabel is af te leiden dat de
boomstructuur met 4:2-compressors minder chipoppervlak in beslag neemt. Daarom is de keuze
van ons ontwerp gegaan naar de boomstructuur.
16-bit accumulator
reset
rst_intern
clk
data_ready
data_in (15:0)
data_out (12:0)
Figuur 32: Entiteit van de 16-bit Accumulator
Tabel 5: Device Utilization Summary van twee implementaties van de accumulator
Device Utilization Summary
Logic Utilization Gebruik (For)
Gebruikt (Boom)
Beschikbaar
Number of Slice Flip Flops 54 54 21,504
Number of 4 input LUTs 88 82 21,504
Number of occupied Slices 55 52 10,752
Number of Slices containing only related logic 55 52
Number of Slices containing unrelated logic 0 0
Total Number of 4 input LUTs 88 82 21,504
Number used as logic 75 69
Number used as Shift registers 13 13
Number of bonded IOBs 34 34 448
Average Fanout of Non-Clock Nets 2.68 2.59
KHLim Departement IWT ‟11 – „12
54
Simulatie
In onderstaande figuur zijn de simulatieresultaten weergegeven uit de acquisitiefase op het einde
van een PRN-periode. In de afbeelding is de input data_n te zien die op zijn beurt door de
boomstructuur wordt omgevormd naar accu_count_out. Het deelresultaat ook wel subtract_out
wordt opgeteld met de input_data. Vervolgens zijn na een data_ready puls geldige data
beschikbaar op de data_out. De geldige data zijn tevens in het groen aangeduid.
Figuur 33: Simulatie accumulator
Vergelijking voorgaand en nieuw ontwerp
In voorgaand ontwerp van Ben Willems en Raf Martino [11] werd gebruik gemaakt van een
eenvoudige en kleine correlator. Deze vermenigvuldigt simpelweg het binnenkomende signaal
met de PRN-code die intern werd gegenereerd. Vervolgens werd het resultaat geïntegreerd over
één periode van de C/A-code. Hierbij werden als hardware componenten een vermenigvuldiger,
een opteller en een accumulatorregister gebruikt. In volgende figuur ziet u hun principeschema
en de entiteit van de SSC-correlator.
Figuur 34: Principeschema en entiteit SSC-correlator Ben Willems, Raf Martino [11]
KHLim Departement IWT ‟11 – „12
55
In onderstaande tabel maken we een vergelijking van de SSC-correlator met de vernieuwde
Hybrid-correlator. Hier valt meteen op te merken dat het vernieuwd ontwerp 16 bits tegelijk
afhandelt t.o.v. de bit per bit methode van het voorgaand ontwerp. Dit zorgt ervoor dat ons
ontwerp 16 keer sneller is maar hun ontwerp aanzienlijk kleiner is.
Tabel 6: Vergelijking SSC-correlator en Hybrid-correlator
Device Utilization Summary
Logic Utilization Voorgaand ontwerp
(2010-2011)
Vernieuwd ontwerp
(2011-2012)
Beschikbaar Verhouding snelheid tussen
beide (1:16)
Number of Slice Flip Flops 14 69 21,504
Number of 4 input LUTs 16 114 21,504
Number of occupied Slices 10 75 10,752
Total Number of 4 input LUTs 16 114 21,504
Number used as logic - 101
Number used as Shift registers - 13
Number of bonded IOBs 19 35 448
Average Fanout of Non-Clock Nets 2.96 2.82
KHLim Departement IWT ‟11 – „12
56
4.2.3 Compare en Store
Om alle resultaten van de acquisitiefase bij te houden maken we gebruik van een compare en
store hardwareblok. Die staat in voor het bijhouden van de tellerwaardes van de PRN-, adres-,
fase- en Dopplercounter voor het hoogst bekomen accumulatorresultaat. Indien het aangelegde
accumulatorresultaat hoger is dan het opgeslagen resultaat zal die worden overschreven en wordt
het interne load signaal hoog gemaakt. Vervolgens kunnen de tellerwaardes met een vertraging
van vier klokpulsen worden binnengelezen. Die vertraging is nodig omdat de correcte
tellerwaardes die bij het huidige accumulatorresultaat horen niet eerder beschikbaar zijn.
Indien de read_enable input hoog is en de accumulator_data boven een treshold van 70% van
4092 komt, wordt het intern signaal acquisitie_ready_intern hoog gemaakt. Vervolgens zal dat
resultaat op de uitgangspen acquisitie_ready worden gezet zodat het kanaal over kan gaan naar
tracking.
Figuur 35: Entiteit compare en store
Clk
reset_acq
rst
read_enable
clk_flank_
4092_ready
PRN_offset(5:0)
adres_offset(7:0)
fase_offset(3:0)
accumulator_data(12:0)
Doppler_in(6:0)
Acquisitie_ready
highest_
PRN_offset(5:0)
highest_
adres_offset(7:0)
highest_
fase_offset(3:0)
highest_
doppler(6:0)
highest_
accumulator_
data(12:0)
ent_CompareAndStore
KHLim Departement IWT ‟11 – „12
57
Simulatie
In onderstaande figuren zijn de simulatieresultaten van de compare en store blok weergegeven.
In een eerste figuur ziet u de resultaten na één PRN-periode van een overlapping op de juiste
fase. In de tweede figuur ziet u de resultaten indien de twee PRN-codes niet overlappen. Er is
duidelijk te zien dat bij een goede overlapping een hoog resultaat wordt opgeslagen. Ook valt
meteen op dat er een vertraging is tussen het tijdstip van vergelijking en het veranderen van de
stored_accumulator_data.
Figuur 36: Resultaten na 1 PRN-periode bij overlapping
Figuur 37: Resultaten na 1 PRN-periode bij geen overlapping
KHLim Departement IWT ‟11 – „12
58
In onderstaande tabel zijn de syntheseresultaten van de compare en store blok weergegeven.
Tabel 7: Device Utilization Summary Compare & Store blok
Device Utilization Summary
Logic Utilization Gebruikt Beschikbaar
Number of Slice Flip Flops 45 21,504
Number of 4 input LUTs 101 21,504
Number of occupied Slices 69 10,752
Number of Slices containing only related logic 69
Number of Slices containing unrelated logic 0
Total Number of 4 input LUTs 102 21,504
Number used as logic 101
Number used as a route-thru 1
Number of bonded IOBs 69 448
Average Fanout of Non-Clock Nets 2.94
KHLim Departement IWT ‟11 – „12
59
4.3 Tracking hardware
De hardwarebouwblokken die we gebruiken bij tracking hebben we ook gegroepeerd. Hier
beginnen we met het overlopen van de 1-bit correlator samen met de 1-bit accumulator
(integrator). Daarna bespreken we de PLE-shifter en ten slotte de tracking regelblok.
4.3.1 1-bit correlator en accumulator
Tijdens de trackingfase is het de bedoeling om de correlatiepiek te blijven volgen. Dat wordt
gedaan door drie 1-bit correlators samen met de 1-bit accumulators elke ½ chipbit onderling te
verschuiven. Ze berekenen om de PRN-periode een nieuwe correlatiewaarde en aan de hand van
die waarde wordt er bijgestuurd indien nodig. [11]
Werking
De 1-bit correlator en accumulator zijn in feite hetzelfde als de SSC-correlator. Het verschil zit
echter in de toepassing van de twee. De SSC-correlator wordt gebruikt in de acquisitie om te
zoeken welke PRN-code bij welke fase de hoogste correlatiepiek geeft. De 1-bit correlator en
accumulator worden gebruikt om de correlatiepiek te volgen eens die gevonden is in acquisitie.
In onderstaande figuren is de entiteit hiervan weergegeven:
Figuur 38: Entiteit van de 1-bit correlator en 1-bit accumulator
De correlator zal de inkomende PRN-code bit per bit vergelijken met de nagebootste PRN-code
afkomstig van de PLE-shifter. Als de twee bits overeenkomen dan zal het resultaat “1” zijn
anders “0”. Vervolgens zal de accumulator het resultaat van de correlator bekijken en het aantal
“1-en” en “0-en” tellen gedurende één PRN-periode. Na afloop van de periode wordt intern het
Data_sample_in
PRN_sample_in
result
1-bit correlator
1-bit accumulator
Corr_result
Clk
reset
reset_intern
reset_accumulator
Clk_flank_4092
Acc_result(12:0)
KHLim Departement IWT ‟11 – „12
60
verschil berekend tussen de twee sommen en dit is dan het correlatieresultaat. Het is mogelijk dat
het berekend resultaat maximaal positief of maximaal negatief wordt. In beide gevallen spreken
we van een correlatiepiek.
De tracking regelblok zal de resultaten van de verschillende accumulators voor het I- en Q-
kanaal binnenlezen en vergelijken. Na de vergelijking zal er indien nodig bijgeregeld worden.
Meer uitleg hierover in het stukje over de tracking regelblok.
Simulatie en meetresultaten
Om het geheel te testen hebben we een testbench geschreven in VHDL. De testbench maakt
gebruik van een PRN-codegenerator die het inkomende signaal zal simuleren en het ROM-
geheugen met bijhorend aanstuurlogica. We geven ook hier weer twee voorkomende gevallen.
Een eerste is als de fase en de PRN-code gekend zijn (als we aan tracking doen) en een tweede
geval is als we niet meer op de juiste fase zitten maar de PRN-code is nog juist. Beide gevallen
maken gebruik van een ruisvrij signaal dat in de realiteit niet voorkomt. Hierdoor zal het
correlatieresultaat een zeer hoge waarde hebben.
Figuur 39: 1-bit correlator samen met accumulator indien fase en PRN-code gekend zijn
Bovenstaande figuur laat het correlatieresultaat zien na één PRN-periode. Hieruit is af te leiden
dat de early-code het hoogste resultaat heeft en nog net boven de grens van 70% PRN-lengte
(2865) zit. Het is nu aan de hoofd FSM om een enhance te geven zodat de prompt-code de fase
van de early-code overneemt.
Figuur 40: 1-bit correlator samen met accumulator indien PRN-code gekend is, maar met foute fase
KHLim Departement IWT ‟11 – „12
61
In een tweede geval, geïllustreerd in voorgaande afbeelding is het correlatieresultaat van de
early-code ook het hoogste, maar helaas is het resultaat niet hoger dan 70% van PRN-lengte.
Hierdoor zal de hoofd FSM terug overschakelen naar acquisitie en proberen te zoeken naar een
nieuwe correlatiepiek.
Keuzes en vergelijking
We hebben gekozen om gebruik te maken van de SSC-correlator principe voor het tracking
gedeelte. Het is immers de meest gebruikte manier van tracken bij gps-ontvangers. Hiermee
wijken we dus niet af van de keuzes gemaakt door de voorgaande masterstudenten.
Door het zorgvuldig analyseren van de VHDL-code van de vorige masterproef, was het mogelijk
om verbeteringen aan te brengen in het ontwerp. We hebben dan ook een aantal dingen anders
aangepakt en herschreven voor de SSC-correlator. Het resultaat op het gebied van
implementatiegrootte is weergegeven in onderstaande tabel.
Tabel 8: Device Utilization Summary 1-bit correlator en accumulator
Device Utilization Summary
Logic Utilization Gebruikt (Nieuwe ontwerp)
Gebruikt (Voorgaande
masterstudenten)
Beschikbaar Utilization (Nieuwe ontwerp)
Number of Slice Flip Flops 13 14 21,504 1%
Number of 4 input LUTs 15 16 21,504 1%
Number of occupied Slices 8 10 10,752 1%
Number of bonded IOBs 20 19 448 4%
Average Fanout of Non-Clock Nets 2.62 2.68
KHLim Departement IWT ‟11 – „12
62
4.3.2 PLE-shifter
De PLE-shifter of Prompt, Late, Early-shifter is verantwoordelijk voor het genereren van de drie
replica PRN-codes die onderling ½ chipbit zijn verschoven. De drie PRN-codes zijn
noodzakelijk voor de trackingfase. Het zijn immers de correlatieresultaten van die codes die het
mogelijk maken om een inkomende PRN-code te volgen.
Werking
De prompt-code wordt gerbuikt als referentie voor het tracken en demoduleren. De early- en
late-code lopen respectievelijk voor en na op deze prompt-code. De entiteit van het PLE-
schuifregister is weergeven in onderstaande figuur. Hieruit is af te leiden dat het niet meer gaat
over een simpel schuifregister. Dat komt omdat we 16-bit van de PRN-code binnenkrijgen
afkomstig van het ROM-geheugen i.p.v. 1-bit.
Figuur 41: entity van de PLE-shifter
clk
reset
clk_flank_4092
enable_acq_track
prn_in(15:0)
fase_offset(3:0)
read_offset
PRN_cycle_complete
delay_prn
enhance_prn
prn_early
prn_prompt
prn_late
read_early
read_late
ent_PLE_shifter
KHLim Departement IWT ‟11 – „12
63
Bij overschakeling van acquisitie naar tracking zal de PLE-shifter in werking te treden. Dat
gebeurt in een aantal stappen. Een eerste stap is het instellen van de juiste fase samen met het
bijhorende stukje PRN-code (16-bit van het ROM-geheugen). Dit is weergegeven in
onderstaande figuur.
Figuur 42: Stap 1: Het inlezen van de faseoffset (PLE-shifter)
Een tweede stap is het genereren van de prompt-, late- en early-code. Elke klokflank van de
4,092 MHz zal de interne faseoffset verminderd worden met één en dus ook een nieuwe bit
genereren voor prompt, late en early. Als de interne faseoffset bijna gelijk is aan „0‟ dan wordt
het volgend stukje PRN-code aangevraagd en de interne faseoffset weer veranderd. Dat blijven
we herhalen tot de volledige PRN-code is doorlopen. Zie figuur 42 op volgende pagina voor
meer duidelijkheid. Een laatste stap is het reageren op mogelijke wijzigingen van de hoofd FSM.
Die zal namelijk bijsturen als de PLE-tracking niet meer juist zit. Hiervoor worden de delay_prn
en enhance_prn ingangen voor gebruikt.
Stap 1:Fase_offset = 7
Fase_offset > 8?
idle
If read_offset = „1‟ and enable_acq_track = „0‟
Read_early
Read_prn
Verander
fase_offset_intern
Nee
0151631
0151631
Read_late
Read_prn
Verander
fase_offset_intern
Ja
De volgende 16-bit na
1 klok pulsDe eerste 16-bit
Fase_offset_intern = fase_offset + 16
De eerste 16-bit
Fase_offset_intern = fase_offsetDe vorige 16-bit na
1 klok puls
KHLim Departement IWT ‟11 – „12
64
Figuur 43: Stap 2: Het genereren van de Prompt-, late- en early-code (PLE-shifter)
Simulatie en meetresultaten
Om het geheel te testen hebben we een testbench geschreven in VHDL. De testbench maakt
gebruik van een PRN-codegenerator die het inkomende signaal zal simuleren en het ROM-
geheugen met bijhorend aanstuurlogica. Een belangrijk aspect van de PLE-shifter is de timing
voor het inlezen van de PRN-code van het ROM-geheugen en het aanpassen van de interne
faseoffset. Bij de kleinste afwijking zal het correlatieresultaat niet meer voldoende hoog zijn en
zal de tracking mislukken. In onderstaande afbeelding is te zien wanneer de interne faseoffset
wordt gewijzigd en het nieuwe stukje PRN-code wordt binnengelezen of m.a.w. stap 2 van
bovenstaande figuur.
Figuur 44: Testbench PLE-shifter het genereren van Prompt-, Late- en Early-code
Stap 2:
Fase_offset
_intern > 2?
Fase_offset
_intern -1
Read_early
Read_prn
Verander
fase_offset_intern
Nee 0151631
De volgende 16-bit na
1 klok puls
Fase_offset_intern + 16
If read_offset = „0‟ and enable_acq_track = „0‟
Ja
-> Fase_offset_intern = 18
18
PRN_reg(31:15) <= PRN_reg(15:0)
-> Prompt-code
-> early-code
-> late-code
KHLim Departement IWT ‟11 – „12
65
Bij het naderen van het uiteinde van prn_reg(31:0), door de prn_reg_fase_offset, wordt het
volgende stukje van de PRN-code aangevraagd met het signaal read_early_prn. Dat aanvragen
gebeurt wanneer de fase_offset gelijk is aan drie of twee. De volgende klokflank van de
hoofdklok zal de adresdecoder op de aanvraag reageren en een volgend stukje PRN-code ter
beschikking stellen. Op diezelfde klokflank heeft de PLE-shifter zijn intern prn_reg herschikt en
de faseoffset aangepast (zie rode markering). Als het nieuwe stukje PRN-code klaarstaat zal het
binnengeklokt worden in de voorziene ruimte in het prn_reg.
De prn_reg_fase_offset duidt de prompt-code aan in het prn_reg. Voor de early- en late-code
wordt repectievelijk “fase_offset – 1” en “fase_offset + 1” genomen. Iedere klokflank van de
4,092 MHz klok zal de PLE-shifter de fase_offset verminderen met één.
Keuzes en vergelijking
Zoals we reeds vermeld hebben, werken we met een ROM-geheugen waarin alle PRN-codes zijn
opgeslagen. Hierdoor krijgen we een veel complexer ontwerp voor de PLE-shifter wat een
nadeel is voor de implementatieruimte. Bij de voorgaande masterstudenten was dat niet het geval
omdat ze gebruik maakten van een PRN-generator om de PRN-codes te genereren. Als we beide
implementatie gaan vergelijken, in onderstaande tabel, zien we onmiddellijk dat onze PLE-
shifter meer ruimte in beslag neemt.
Tabel 9: Device Utilization Summary PLE-shifter
Device Utilization Summary
Logic Utilization Gebruikt (Nieuwe ontwerp)
Gebruikt (Voorgaande
masterstudenten)
Beschikbaar Utilization (Nieuwe ontwerp)
Number of Slice Flip Flops 48 4 21,504 1%
Number of 4 input LUTs 185 5 21,504 1%
Number of occupied Slices 99 4 10,752 1%
Number of bonded IOBs 33 9 448 7%
Average Fanout of Non-Clock Nets 3.60 1.95
KHLim Departement IWT ‟11 – „12
66
4.3.3 Regelblok tracking
Het regelblok voor tracking of m.a.w. de trackingcomparator heeft als doel de
correlatieresultaten van de prompt-, late- en early-code onderling te vergelijken en een signaal te
genereren dat aangeeft welke de hoogste is. Daarnaast zal de comparator controleren of één van
de correlatieresultaten boven de opgelegde treshold ligt (70% van PRN-lengte).
Werking
De vergelijking tussen de verschillende codes gebeurt op het einde van een PRN-periode op het
signaal corr_ready. Na het vergelijken laat de trackingregelblok weten aan de hoofd FSM welke
de hoogste was. Dat gebeurt met het signaal hoogste_corr. We onderscheiden hierbij vier
mogelijkheden, namelijk:
1. corr_early is het hoogste hoogste_corr = “01”,
2. corr_prompt is het hoogste hoogste_corr = “00”,
3. corr_late is het hoogste hoogste_corr = “10”,
4. geen vergelijking hoogste_corr = “11”.
Zoals hierboven vermeld werd, zal de trackingregelblok ook controleren of de
correlatieresultaten voldoende hoog zijn. Indien dat niet het geval is krijgt de hoofd FSM een
tracking_lost signaal gelijk aan één. De entiteit van de trackingregelblok is weergegeven in
onderstaande figuur.
Figuur 45: Entity van de tracking regelblok
reset
Clk
reset_intern
corr_ready
corr_early(12:0)
corr_prompt(12:0)
corr_late(12:0)
hoogste_corr(1:0)
lost_tracking
Tracking regelblok
KHLim Departement IWT ‟11 – „12
67
Simulatie en meetresultaten
Om de trackingregelblok te testen hebben we ook hier een testbench geschreven in VHDL. De
testbench maakt gebruik van alle hardwareblokken in het gps-kanaal. Om de werking te
verduidelijken geven we hier drie voorbeelden. Een eerste voorbeeld laat de resultaten zien van
wanneer de late-code het hoogste is en boven de treshold ligt. Het tweede van wanneer de
prompt-code het hoogste is en boven de treshold ligt. Een laatste voorbeeld geeft wat er gebeurt
indien het resultaat niet meer voldoende hoog is, dus niet meer boven de treshold ligt.
Figuur 46: Testbench tracking regelblok voorbeeld 1
We zien dat op het corr_ready signaal wordt vergeleken. De twee onderste signalen zijn de
uitgangen van ons tracking regelblokje en laten zien dat één van de correlatieresultaten hoog
genoeg is. Dat wordt gedaan door lost_tracking laag te houden. Het andere signaal,
hoogste_corr_track, genereert de klokflank erna de code “10” wat overeenkomt met de late-code
die het hoogste was. We blijven dus in tracking.
Figuur 47: Testbench tracking regelblok voorbeeld 2
In bovenstaande figuur ziet u het voorbeeld waarbij de prompt-code het hoogste is. Het
hoogste_corr_track signaal geeft de code “00” uit aan de hoofd FSM en het lost_tracking signaal
blijft laag. We blijven ook hier in tracking.
KHLim Departement IWT ‟11 – „12
68
Figuur 48: Testbench tracking regelblok voorbeeld 3
Ten slotte is er voorbeeld drie waar het correlatieresultaat van de early-code het hoogste is maar
niet voldoende hoog is om de tracking te onderhouden. Het lost_tracking signaal wordt hoog
gemaakt en de hoofd FSM begint terug met acquisitie.
Keuzes en vergelijking
We hebben gekozen om de tracking regelblok in hardware te implementeren i.p.v. software. Dat
heeft als voordeel dat we niet gebonden zijn aan een FPGA met een interne processor of
Microblaze welke veel chipoppervlakte inneemt. Ook hier hebben we de syntheseresultaten in
een tabel gezet om weer te geven hoeveel ruimte er nodig is in onze FPGA.
Tabel 10: Device Utilization Summary regelblok tracking
Device Utilization Summary
Logic Utilization Gebruikt (Nieuwe ontwerp)
Beschikbaar Utilization (Nieuwe ontwerp)
Number of Slice Flip Flops 53 21,504 1%
Number of 4 input LUTs 30 21,504 1%
Number of occupied Slices 30 10,752 1%
Number of bonded IOBs 46 448 10%
Average Fanout of Non-Clock Nets 1.91
KHLim Departement IWT ‟11 – „12
69
4.4 Gedeelde hardware
De gedeelde hardware bestaat uit een aantal hardware blokken die zowel bij acquisitie als bij
tracking van toepassing zijn. Het is mogelijk dat ze een andere werking hebben gedurende beide
fasen van het gps-kanaal. Een aantal van die blokken zijn:
de code-NCO en carrier-NCO,
de Dopplercounter,
de adresdecoder,
het ROM-geheugen.
4.4.1 NCO (Numerically controlled oscillator)
Inleiding
Op het FPGA-evalueerbord van Xilinx (ML401) is een klokfrequentie voorzien van 100 MHz.
Die wordt met een prescaler gehalveerd tot 50 MHz. Echter gebruiken de ontvangstkanalen een
frequentie van 4.092 MHz. Om de kanalen van die frequentie te voorzien maken we gebruikt van
een numerisch gecontrolleerde oscillator. Het gebruik van een frequentie van 4.092 MHz heeft
twee redenen.
Een eerste reden is omdat de front-end de binnenkomende draaggolf van ca. 1,5GHz omlaag
brengt naar een intermediatefrequentie van 4,092MHz. Dit is nodig omdat de frequentie van die
draaggolf veel te hoog is voor een rechtstreekse verwerking. Door de verlaging zal de ontvanger
niet rond de draaggolffrequentie maar rond de intermediatefrequentie op zoek moeten gaan naar
de Dopplerverschuiving. Het spectrum van 20kHz waarin de ontvanger moet zoeken loopt nu
dus van 4,092 MHz – 10 kHz = 4,082 MHz tot 4,092 MHz + 10 kHz = 4,102 MHz.
Een tweede reden is dat we de chips afkomstig van de PRN-code elk een aantal keer willen
samplen. De chiprate van de gebruikte C/A-code bedraagt 1,023 MHz. Indien we 4 keer zouden
samplen komen we aan een frequentie van 4,092MHz daarom de keuze van 4 keer. Door elke
chip vier keer te samplen is er slechts één frequentieomvormer per kanaal nodig (Willems en
Martino, 2011) [11].
KHLim Departement IWT ‟11 – „12
70
De werking
De door ons gebruikte NCO maakt gebruik van een faseaccumulator. Die accumulator bestaat uit
een n-bit grote adder en een register opgesteld zoals in onderstaande afbeelding.
Z-1
∑
Clock
Controle woordFase-Accumulator
N N M
Figuur 49: Opbouw NCO
Iedere klokcyclus zorgt voor een nieuwe N-bit waarde op de uitgang die bestaat uit de vorige
waarde opgeteld met het controle woord. Dit controle woord is constant en bepaalt welke
frequentie we verkrijgen. De optelling zal voor een overflow zorgen wanneer de berekende
waarde groter is dan de grootte van het register. De uitgangsfrequentie kan berekend worden
met volgende formule:
Hierin is FCW het frequentiecontrolewoord en N de breedte van het accumulatorregister
waarmee geteld wordt. Fin en Fout zijn respectievelijk input- en outputfrequentie. Door die
formule om te vormen kunnen we het controlewoord als volgt berekenen:
Door de grootte van het register te vergroten (N) kunnen we een hogere resolutie verkrijgen.
Hierdoor bekom je een nauwkeuriger resultaat.
KHLim Departement IWT ‟11 – „12
71
Berekening
Ons Xilinx ontwikkelbordje werkt met een klokfrequentie van 50 MHz. Daarom moet de 4,092
MHz klokfrequentie worden afgeleid van 50 MHz. Om een voldoende hoge nauwkeurigheid te
bekomen, kiezen we voor N = 32. Dat zorgt voor een frequentiestap van:
Voorgaande thesis gebruikte echter:
Vervolgens kan met de gekozen registerbreedte (N = 32) het FCW berekend worden.
Door de afronding zal de werkelijke outputfrequentie als volgt zijn:
Dat is enkel de IF, maar de ontvanger moet in een range van 10kHz boven en onder de
intermediatefrequentie op zoek gaan naar de Dopplerverschuiving die aanwezig is op het
binnenkomend signaal. Dat moet, zoals reeds eerder besproken, gebeuren in stappen van 500 Hz,
waardoor er dus 41 frequentiestappen nodig zijn om heel de range te doorlopen.
Onze voorgangers (Willems en Martino, 2011) toonden aan dat een aansturing via een FSM met
LUT nauwkeuriger was dan een FSM met een teller (met een telregister van 23 bits breed).
Echter bleek ook dat met een LUT de benodigde chipoppervlak aanzienlijk groter werd.
Daarom gebruiken wij een register met een breedte van 32bit. Op die manier verhogen we de
nauwkeurigheid en bekomen we, zoals verder aangetoond, een aanzienlijk kleiner chipoppervlak
dan met een look up table. Zodanig bekomen we een goede verhouding tussen chipoppervlakte
en nauwkeurigheid. Hiervoor gebruiken we een aansturing via een FSM met een teller. Zoals in
vorig punt berekend werd, is de stapgrootte van een register met breedte 32 bit = 0,0116 Hz.
KHLim Departement IWT ‟11 – „12
72
Indien we op zoek gaan naar de Dopplerverschuiving moet er in stappen van 500 Hz gezocht
worden. Om dat te doen berekenen we het juiste FCW dat we bij het accumulatorregister moeten
op- of aftellen om die stapgrootte te bekomen.
Door de reeds berekende constante stap bij de initiële FCW op- of af te tellen kunnen we de
overige 40 FCW‟s bekomen.
De maximale theoretische frequentieafwijking bedraagt dan 0.0819 Hz. Opm.: De berekening
van de max. frequentieafwijking vindt u terug in bijgevoegde Excel worksheet van Raf Martino
en Ben Willems.
Meetresultaten
In onderstaande figuur ziet u een afbeelding uit de simulatie van de NCO. Hier is duidelijk te
zien dat het m16_368 signaal varieert. Dat komt omdat de gemiddelde frequentie voldoet aan de
NCO berekening. Ook wordt het somregister, terugkoppeling en aangelegd controlewoord
weergegeven.
Figuur 50: Simulatie NCO
Op de volgende pagina zijn twee afbeeldingen weergegeven van de hardwaremetingen die
werden uitgevoerd met een Anritsu spectrum analyzer. Hier is telkens duidelijk een piek te zien
op de gewenste frequentie.
KHLim Departement IWT ‟11 – „12
73
Figuur 51: NCO meting 4.092 MHz
Figuur 52: NCO meting 16.368 MHz
KHLim Departement IWT ‟11 – „12
74
In onderstaande tabel worden de syntheseresultaten van de NCO weergegeven. We hebben eerst
de 32-bit ontwerpen van voorgaande masterstudenten vergeleken met het vernieuwd ontwerp.
Hieruit merken we op dat het nieuwe ontwerp met teller structuur voor de aangeduide (rood)
punten kleiner is dan zowel voorgaand teller als LUT structuur. Verder hebben we ons
uiteindelijk 32-bit ontwerp vergeleken met hun uiteindelijk gebruikte 23-bit LUT. Hier bleek ook
dat de vernieuwde implementatie kleiner is.
Tabel 11: Device Utilization Summary NCO
Device Utilization Summary
Logic Utilization Gebruikt in nieuw ontwerp met Teller (32-bit) (2011-2012)
Voorgaand ontwerp met Teller (32-bit) (2010-2011)
Beschikbaar
rood = kleinste
Number of Slice Flip Flops 35 35 21,504
Number of 4 input LUTs 24 76 21,504
Number of occupied Slices 18 38 10,752
Total Number of 4 input LUTs 36 76 21,504
Number of bonded IOBs 8 34 448
Average Fanout of Non-Clock Nets 1.94 3.60
Device Utilization Summary
Logic Utilization Gebruikt in nieuw ontwerp met Teller (32-bit) (2011-2012)
Voorgaand ontwerp met LUT
(32-bit) (2010-2011)
Gebruikt in voorgaand ontwerp LUT (23-bit) (2010-
2011)
Number of Slice Flip Flops 35 7 7
Number of 4 input LUTs 24 147 85
Number of occupied Slices 18 76 43
Total Number of 4 input LUTs 36 147 85
Number of bonded IOBs 8 34 25
Average Fanout of Non-Clock Nets 1.94 4.37 4.44
KHLim Departement IWT ‟11 – „12
75
4.4.2 Dopplercounter
Inleiding
Zoals reeds besproken in het hoofdstuk acquisitie moet de ontvanger alle mogelijke
Dopplerfrequenties doorlopen binnen het gekozen bereik. Hiervoor zal de NCO-counter van
groot belang zijn. Die teller zal namelijk de verschillende frequentiestappen genereren die
overeenkomen met de Dopplershift. Als alle stappen zijn doorlopen dan wordt het PRN_Count
signaal hoog gemaakt en wordt er over gegaan naar de volgende PRN.
Figuur 53: Entiteit Dopplercounter
Werking
De dopplercounter zal indien de ontvanger in acquisitiemode zit en het count_enable signaal
hoog is op iedere klokflank tellen. Voor het tellen gebruiken we een integer i die een bereik heeft
van 0 tot 20. Door vervolgens iedere klokflank te wisselen tussen dopp_counter + i en
dopp_counter – i doorlopen we de alle 41 frequentiestappen. Dat zorgt voor een bijkomend
voordeel dat het zoeken van dicht bij de intermediatefrequentie tot de verst verwijderde gaat. Ter
verduidelijking is in onderstaande figuur het doorlopen van de stappen weergegeven.
i=0 1 2 ...12...
Toggle (+ / -) i
2020
41 Stappen
Figuur 54: Frequentiestappen NCO_counter
Clk
rst
count_enable
enable_track_acq
dopp_in(6:0)
PRN_count
ent_Doppler_counter
dopp_out(6:0)
freqOutCos
freqOutSin
KHLim Departement IWT ‟11 – „12
76
Vervolgens zal het FCW worden berekend en intern een carrier_NCO een nieuwe sin_4_092 en
cos_4_092 genereren. Indien de ontvanger in acquisitie is zal de berekening worden gedaan met
de dopp_counter teller en indien deze in tracking is zal dopp_in hiervoor worden gebruikt. Zodat
de NCO_counter vanaf een bepaalde Dopplershift kan starten in tracking.
Simulatie en synthese
In onderstaande afbeelding zijn de simulatieresultaten weergegeven van de Dopplercounter. Hier
is duidelijk te zien dat voor iedere Dopplershift een ander FCW wordt berekend (fControl). Ook
ziet u dat de sin en cos 90° verschoven worden uitgestuurd.
Figuur 55: Simulatieresultaten van de Dopplercounter
Tot slot vind u in tabel 12 de synthese resultaten van de Dopplercounter.
Tabel 12: Device Utilization Summary Dopplercounter
Device Utilization Summary
Logic Utilization Gebruikt Beschikbaar
Number of Slice Flip Flops 48 21,504
Number of 4 input LUTs 63 21,504
Number of occupied Slices 36 10,752
Total Number of 4 input LUTs 66 21,504
Number used as logic 63
Number used as route-thru 3
Number of bonded IOBs 21 448
Average Fanout of Non-Clock Nets 2.03
KHLim Departement IWT ‟11 – „12
77
4.4.3 Adresdecoder
We werken met een ROM-geheugen waarin alle PRN-codes zijn opgeslagen. Daarom is het
nodig dat we de juiste aanstuurlogica voorzien. De adresdecoder speelt een belangrijke rol in de
aanstuurlogica en is verantwoordelijk voor het genereren van het juiste adres op het juiste tijdstip
tijdens acquisitie en tracking. Dat adres duidt op een 16-bit stukje PRN-code in het ROM-
geheugen.
Werking
De adresdecoder bestaat uit twee delen: enerzijds de PRN-decoder, anderzijds de adrescounter.
De PRN-decoder vormt de gewenste PRN-code om naar een geldige beginoffset binnen het
ROM-geheugen. De adrescounter genereert de adrespointer die elk stukje van 16-bit binnen één
PRN-code aanduidt. De entiteit samen met een blokschema is geïllustreerd in onderstaande
afbeelding.
Figuur 56: De opbouw (links) en entiteit (rechts) van de adresdecoder
reset
Clk
clk_flank_4092
counter_select
counter_reset
read_early
read_late
prn_code(5:0)
adres_offset(7:0)
Adres(13:0)
Adresdecoder
PRN-decoder
Adrescounter
+Adres(13:0)
prn_code(5:0)
Counter_select
Counter_reset
Read_early
Re
ad
_la
te
Clk
Clk
_fla
nk_
40
92
Adres_offset(7:0)
KHLim Departement IWT ‟11 – „12
78
De PRN-decoder kan men vergelijken met een LUT waarvan de ingang overeenstemt met een
bepaald beginadres binnen het ROM-geheugen. Zo zal bv. PRN1 op beginadres “0” zitten en
PRN4 op beginadres “768”. Zie onderstaande figuur voor meer duidelijkheid:
Figuur 57: Het genereren van een adres voor het ROM-geheugen
De adrescounter werkt op twee verschillende manieren. Bij acquisitie zal de adrescounter een
adresoffset aanmaken om de 16 klokflanken van de 4,092 MHz klok. Daarbij begint hij op
adresoffset “0” en eindigt hij op “255”:
De laatste vier bits van het laatste adres in het ROM-geheugen zijn niet van belang en worden
ook weggelaten of gevuld met nullen. Zo bekomen we toch de 4092 bits van één PRN-periode
met een oversampling van vier bij gps L1.
Als het systeem overschakelt naar tracking dan werkt de adrescounter op een ander principe. Die
zal namelijk reageren op de aanvraag van de PLE-shifter die op bepaalde tijdstippen een nieuw
stukje PRN-code nodig heeft. Dat aanvragen gebeurt m.b.v. de ingangen read_early en read_late.
Het uiteindelijke adres wordt samengesteld uit een adresoffset, PRN-beginoffset en de waarde
van de adrescounter.
...
0
9472
ROM-geheugen
768
PRN4 768
Adrescounter 128
Adresoffset 0
Adres 896
896
160
16-bit PRN-stukje
PRN1
PRN2
KHLim Departement IWT ‟11 – „12
79
Simulatie en meetresultaten
Om de adresdecoder te testen hebben we een testbench geschreven in VHDL. Hierbij hebben we
de twee verschillende werkmodussen getest m.b.v. het volledige gps-kanaal. De testbench in
figuur 58 omschrijft de werking tijdens de acquisitiefase en figuur 59 tijdens de trackingfase.
Beide afbeeldingen zijn genomen bij een faseoffset gelijk aan nul en bij PRN1.
Figuur 58: Testbench adresdecoder tijdens acquisitiefase
Tijdens de acquisitiefase zal de adrescounter elke 16 klokflanken van het clk_flank_4092_intern
signaal de interne ROM-pointer verhogen met één. Het uiteindelijke adres is gelijk aan de som
van de adresoffset = “0”, de ROM-beginoffset = “0” (PRN1) en de interne ROM-pointer.
Figuur 59: Testbench adresdecoder tijdens trackingfase
Tijdens de trackingfase zal de adrescounter tellen op het ritme van de read_early en read_late
ingangen. Het bekomen adres is ook hier gelijk aan de som van de adresoffset, ROM-beginoffset
en de interne ROM-pointer.
KHLim Departement IWT ‟11 – „12
80
Keuzes en vergelijking
De keuze om gebruik te maken van een adresdecoder voor het aansturen van het ROM-geheugen
was voor de handliggend. Zo is het immers mogelijk om het genereren van het adres samen te
houden voor zowel acquisitie als tracking. Bovendien kunnen we makkelijk fouten met het adres
opsporen en verbeteren.
Daarnaast hebben we twee verschillende implementaties bekeken voor de PRN-decoder. De
eerste werkt met een look-up tabel waar alle 37 PRN-codes overeenkomen met een bepaald
beginadres. De tweede implementatie is m.b.v. een wiskundige formule die het adres berekent
aan de hand van de input. Het is vanzelfsprekend dat de wiskunde aanpak een positievere
invloed zal hebben op de implementatieruimte. Aangezien de look-up table 37 adressen moet
bijhouden in zijn geheugen. De vereiste implementatieruimte van beide adresdecoders is
weergegeven in onderstaande tabel.
Tabel 13: Device Utilization Summary adresdecoder
Device Utilization Summary
Logic Utilization Gebruikt (Nieuwe ontwerp)
Gebruikt (Wiskundige
formule)
Beschikbaar Utilization (Nieuwe ontwerp)
Number of Slice Flip Flops 22 21 21,504 1%
Number of 4 input LUTs 113 99 21,504 1%
Number of occupied Slices 66 55 10,752 1%
Number of bonded IOBs 35 35 448 7%
Average Fanout of Non-Clock Nets 3.15 2.87
KHLim Departement IWT ‟11 – „12
81
4.4.4 ROM-geheugen
Het ROM-geheugen bevat alle 37 PRN-codes van het gps-satellietsysteem. Elke PRN-code is
uniek en stelt een satelliet voor zoals reeds eerder besproken. Het doel van het ROM-geheugen is
het gps-kanaal voorzien van het juiste stukje PRN-code op het gewenste tijdstip. Dat zowel
tijdens acquistie als tracking.
Werking
Uit de bespreking van de hybridecorrelator is gebleken dat een 16-bit correlatie de beste trade-
off is tussen implementatieruimte en acquistiesnelheid. Ook werd reeds in de adresdecoder
aangehaald dat we gebruik maken van een ROM-geheugen met een breedte van 16-bit. Verder
weten we dat elke PRN-code 4092 bits (1023 bits * 4 oversampling) lang is. Daardoor krijgen
we een diepte van 9472 plaatsen van elk 16-bit breed. In onderstaande figuur is de entiteit samen
met de opbouw van het ROM-geheugen weergegeven.
Figuur 60: De entity(links) en opbouw(rechts) van het ROM-geheugen
Het adres bestaat uit 14-bit waarvan de 10 LSB dienen voor de adressering binnen de RAM-
blokken en de 4 MSB kiezen tussen de gewenste output. Elke RAM-blok heeft plaats voor vier
volledige PRN-codes. Aangezien we 37 PRN-codes hebben komen we uit op 10 RAM-blokken.
Address(13:0)
Clk
Data(15:0)
ROM_module
RAM_16RAM_16
RAM_16RAM_16
RAM_1616
Clk
Adres(13:0) Adres(9:0)
Adres(13:10)
Data(15:0)
KHLim Departement IWT ‟11 – „12
82
Simulatie en meetresultaten
Ook het ROM-geheugen hebben we onderworpen aan een testbench in VHDL. Hierbij
controleren we of de juiste data aanwezig zijn aan de output bij een bepaald adres. In figuur 61
hebben we daarom een adres aangelegd en gekeken naar het resultaat.
Figuur 61: Testbench van het ROM-geheugen
In de simulatie is duidelijk te zien dat bij het aanleggen van een bepaald adres, de data na één
klokflank aanwezig zijn.
Keuzes en vergelijking
We hebben gekozen om met een ROM-geheugen te werken dat alle PRN-codes bevat van gps L1
i.p.v. een generator. Hiermee willen we meer toekomstgericht werken omdat GALILEO E1 alle
PRN-codes in ROM-geheugen heeft zitten. Het is dus mogelijk om een uniform
ontvangerskanaal te maken voor gps en GALILEO waarbij alle PRN-codes zijn opgeslagen in
ROM-geheugen. Daarnaast is het ook mogelijk om met “dual ported ROM” te werken. Hiermee
kan één ROM-geheugen gebruikt worden door twee kanalen.
Om een beeld te geven over de benodigde chipoppervlakte hebben we het syntheseresultaat
weergeven in tabel 14.
Tabel 14: Device Utilization Summary ROM-geheugen
Device Utilization Summary
Logic Utilization Gebruikt Beschikbaar Utilization
Number of Slice Flip Flops 0 21,504 0%
Number of 4 input LUTs 128 21,504 1%
Number of occupied Slices 64 10,752 1%
Number of bonded IOBs 31 448 6%
Number of FIFO16/RAMB16s 16 72 22%
Average Fanout of Non-Clock Nets 2.00
KHLim Departement IWT ‟11 – „12
83
Opm.: Het genereren van de PRN-codes is gebeurd met de PRN-generator. Daarna hebben we
m.b.v. de testbench alle PRN-codes opgeslagen in tekstbestanden en omgevormd met Excel om
het juiste BRAM formaat te bekomen.
4.5 Meetresultaten gps-kanaal
Als we alle bouwblokken samennemen, bekomen we één gps-kanaal. Dit kanaal is in staat om
baseband gps-signaal te zoeken en te volgen. Het gps-kanaal heeft twee werkingsprincipes zijnde
acquistie en tracking. Om te beslissen wanneer er moet geschakeld worden tussen beide hebben
we een FSM toegevoegd. Die zal aan de hand van een aantal ingangen het kanaal regelen. Zo
bekomen we een volledig onafhankelijk gps-kanaal dat in staat is om één gps-satelliet te volgen.
4.5.1 Simulatie
Ook hier hebben we een testbench geschreven in VHDL om het geheel te testen. Die is
weergegeven in onderstaande afbeelding.
Figuur 62: Testbench volledig gps-kanaal
KHLim Departement IWT ‟11 – „12
84
De testbench laat duidelijk de overschakeling tussen acquisitie en tracking zien. Als we kijken
naar de eerste vijf signalen zien we dat rond tijdstip 2, 0005 ms een correlatiepiek optreed. Dat
wordt weergegeven door het signaal “highest_accumulator_data”. We krijgen een piek van 4072
(er komen 4072 chips overeen van de 4092) bij een faseoffset van vijf, een Dopplershift van nul
en een adresoffset van nul. Indien de correlatiepiek groter is dan de ingestelde grens wordt het
“acquisitie_ready” signaal hoog gemaakt. Vervolgens wacht het kanaal tot de volledige PRN-
periode is afgelopen om over te schakelen naar tracking.
Het overschakelen naar tracken brengt een aantal instellingen met zich mee. Een eerste is het
klaar zetten van de adressen en PRN-codes. Zo kan de tracking starten vanaf het juiste stukje
PRN-code. Vervolgens wordt de registerpointer van PLE-shifter ingesteld en de bijhorende
registers gevuld. Dat gebeurt met de faseoffset uit de acquisitiefase die meteen ook de prompt-
code aanwijst in het register. Tenslotte moeten de 1-bit correlators nog leeggemaakt worden,
zodat we van nul kunnen starten.
Het is van uiterst belang dat het overschakelen van acquisitie naar tracking gebeurt voor de
eerstvolgende chipbit passeert. Indien dat niet het geval zou zijn, zitten we onmiddellijk mis met
de tracking. Dat zal resulteren in een lage correlatiewaarde en een einde van de trackingfase.
4.5.2 Meetresultaten
Om de implementatie te testen en controleren op een juiste werking hebben we een Visual Basic
terminal programma herschreven dat ons hierbij helpt. Met het programma is het mogelijk om
een momentopname te nemen van de correlatieresultaten van de prompt, late en early
accumulators. Daarnaast kunnen we de beste acquisitieresultaten opvragen. De opbouw van het
Visual Basic programma samen met een aantal meetresultaten is geïllustreerd in onderstaande
afbeelding.
Figuur 63: Meetresultaten PRN 2
KHLim Departement IWT ‟11 – „12
85
4.5.3 Syntheseresultaat
In tabel 15 is de implementatiegrootte van één gps-kanaal te zien. Het kanaal maakt enkel
gebruik van de I-component. Indien de Q-component meegerekend wordt, zal de ingenomen
ruimte nog toenemen.
We kunnen dus afleiden dat één kanaal ongeveer 40% van heel de FPGA inneemt. Om
positiebepaling mogelijk te maken, zijn er minstens vier kanalen nodig. We gaan dus moeten
overschakelen naar een grotere FPGA voor verdere uitbreidingen.
Tabel 15: Device Utilization Summary van het gps-kanaal
Device Utilization Summary
Logic Utilization Gebruikt Beschikbaar Utilization
Number of Slice Flip Flops 820 21,504 3%
Number of 4 input LUTs 7668 21,504 35%
Number of occupied Slices 3990 10,752 37%
Number of bonded IOBs 10 448 2%
Number of FIFO16/RAMB16s 16 72 22%
Number of GCLKs 5 32 15%
Number of DCM_ADVs 1 8 12%
Number of DSP48s 1 48 2%
KHLim Departement IWT ‟11 – „12
86
4.6 Uitbreiding naar gps/Galileo ontvangerskanaal
Het uiteindelijk doel van onze thesis was het flexibel overschakelen tussen satellietsystemen
zoals gps en Galileo. Echter zijn we door tijdsgebrek niet meer aan dit onderdeel beland. Daarom
gaan we in deze paragraaf één van de mogelijke concepten bespreken om dergelijke ontvanger
op te bouwen.
4.6.1 Inleiding
Het opbouwen van een ontvanger die kan schakelen tussen gps L1 en Galileo E1 gebeurt in een
aantal fasen. Een eerste fase is het analyseren van de gps-ontvanger en Galileo-ontvanger. Zo is
het mogelijk om de gelijkenissen en verschillen op te merken. Een tweede fase is het kiezen van
de geschikte acquisitiemethode. Aangezien wij opteren voor de kleinste implementatiegrootte
zullen er een aantal methodes in aanmerking komen en andere niet. Een derde fase is het
opbouwen van de trackingskanalen voor zowel gps als Galileo. Hier kunnen we namelijk een
aantal dingen combineren zoals verder zal blijken. Tenslotte is er nog het implementeren van de
architectuur in VHDL. Dit laatste komt niet meer aan bod in onze thesis.
4.6.2 Opbouw gps/Galileo-ontvangerskanaal
Door het bestuderen van de mogelijke architecturen zijn we tot de conclusie gekomen dat de
opbouw geïllustreerd in figuur 64 een goede aanpak is voor een gps/Galileo-ontvangerskanaal.
Hierbij zijn we vertrokken van een thesis over gecombineerde gps- en Galileo-ontangers. Een
groot verschil met de acquisitie bij gps is het feit dat we hier vertrekken van een standalone
acquisitieblok en identieke trackingskanalen. De acquisitieblok zal na het vinden van een
satelliet één van de trackingskanalen aanduiden om de satelliet te volgen.
Figuur 64: een mogelijke opbouw voor een gps/Galileo-ontvangerskanaal [14]
FSM Acquistie
Tracking kanaal gps/Galileo
Tracking kanaal gps/Galileo
Tracking kanaal gps/Galileo
Tracking kanaal gps/Galileo
FPGA
Baseband
signaal
KHLim Departement IWT ‟11 – „12
87
4.6.3 Acquisitie (FSM concept)
Acquisitie wordt ook hier uitgevoerd met een seriële-parallelle aanpak. Het doel is een optimale
combinatie tussen snelheid en implementatieruimte bekomen en zoals we al hadden aangetoond
is dat mogelijk met serial-parallel correlator.
De afzonderlijke acquisitieblok is in staat om één satelliet tegelijkertijd te zoeken. Het komt er
dan op neer dat hij een voldoende acquisitiesnelheid moet hebben om zodanig de zoektijden te
beperken. Daarnaast moet er rekening gehouden worden met de verschillende PRN-codelengtes
van zowel gps L1 als Galileo E1-B. Die zijn namelijk voor gps korter dan voor Galileo zoals
vermeld in hoofdstuk 2. Als we willen voldoen aan beide eisen is een seriële-parallelle correlator
die 1023 fasen tegelijk correleert de beste keuze.
Omdat de acquisitiefase uit verschillende stappen bestaat is het aangeraden hier een FSM te
gebruiken. De FSM kan gestructureerd alle stappen coördineren voor een vlot verloop. Figuur 65
laat zien hoe de FSM tewerk gaat in de vorm van een flowchart. [14]
Figuur 65: De FSM-flowchart voor de acquisitieblok [14]
Reset_state Idle_state
Read input
data (1023
bits)
Move data in
correlation
reg. I and Q
Correlate
registers with
PRN-code
PRN not found
Match the code
generator phase
to detected
phase
Change
Dopplershift
Change PRN-
codePRN found
1*
2*
3* 4*
5* 6*
7* 8*9*
{
1* start = ‘1’
2* read_complete = ‘1'
3* data moved
4* correlation value < threshold
And more input data needed
5* correlation value < threshold
And all input data has been correlated
6* correlation value > threshold
7* Not all Dopplershifts correlated
8* All Dopplershifts correlated
9* Phases matched
KHLim Departement IWT ‟11 – „12
88
4.6.4 Trackingskanaal gps/Galileo
Een trackingskanaal dat zowel gps L1 als Galileo E1 moet ontvangen kan gebruik maken van de
very-early en very-late trackingtechniek (zie paragraaf 3.4). Het voordeel van die techniek is dat
het kanaal zowel signalen van gps als Galileo kan volgen. Hierdoor is het dus mogelijk om
identieke trackingskanalen te maken voor beide. De onderstaande afbeelding geeft een mogelijke
opbouw weer van zo een kanaal.
Figuur 66: Mogelijke opbouw van een trackingskanaal voor gps L1 en Galileo E1 [13]
De verschillen met het trackingskanaal voor gps zijn de sinBOC(1,1) code generator en de extra
very-early en very-late correlators. De extra correlators staan in voor het volgen van de side
peaks in de correlatiefunctie van Galileo. Indien de prompt-correlator de juiste correlatiepiek aan
het volgen is, dan zal de waarde hiervan groter zijn dan de waardes van de very-early en very-
late correlators. De sinBOC(1,1) code generator zal in ons ontwerp vervangen worden door een
ROM-geheugen met alle PRN-codes. [13]
KHLim Departement IWT ‟11 – „12
89
4.6.5 Conclusie gps/galileo-ontvanger
Indien we gebruik maken van een aparte acquisitieblok en identieke trackingskanalen is het
mogelijk om een veel kleiner ontwerp te bekomen. Aangezien er geen hardware voor acquisitie
moet voorzien worden in elk kanaal. Bij de trackingskanalen is het interessant om de ROM-
geheugens dual-ported te maken. Zo kunnen twee kanalen gebruik maken van hetzelfde
geheugen.
KHLim Departement IWT ‟11 – „12
90
5 Implementatie gps-ontvanger met partiële herconfiguratie
5.1 Inleiding
Met partiële herconfiguratie (PR) is het mogelijk om een op voorhand afgebakend gedeelte
(partiële zone) van de FPGA te herconfigureren. Zo kan bv. een bouwblok dat een bepaalde
functie uitvoert worden vervangen door een ander blok m.b.v. een partiële bitstream.
Dat herconfigureren heeft tal van voordelen:
1. Herconfigureren is veel sneller aangezien niet de hele FPGA opnieuw moet worden
geprogrammeerd maar slechts een bepaalde zone;
2. Plaatsbesparing aangezien de partiële blokken een bepaalde zone delen op de FPGA;
3. Mogelijkheid tot nieuwe technieken in design beveiliging;
4. Verbeteren van FPGA-fouttolerantie.
In PR kan men onderscheid maken tussen twee groepen, namelijk dynamische partiële
herconfiguratie (DPR) en statische partiële herconfiguratie. DPR, ook wel gekend als actieve
partiële herconfiguratie, laat toe om een gedeelde van de FPGA aan te passen terwijl de rest van
de logica in werking blijft. In statische PR is de FPGA niet actief gedurende het
herconfiguratieprocess. Met andere woorden, zolang de partiële data in de FPGA worden
gestuurd, wordt de rest van de FPGA gestopt en terug gestart zodra de configuratie compleet is.
Voor onze thesis maken we gebruik van dynamische partiële herconfiguratie. Dat laat toe om
tijdens acquisitie of tracking bepaalde blokken van het kanaal te herconfigureren. Als proof of
concept hebben we ervoor gekozen om ons ROM-geheugen op te splitsen in twee PR-blokken.
Wat dit precies inhoudt en de werking ervan leggen we in volgend punt uit. Voor het bespreken
van de partiële herconfiguratie maakten we gebruik van bronnen [20] en [21].
KHLim Departement IWT ‟11 – „12
91
5.2 Werkingsprincipe en aanpak
Zoals reeds aangehaald hebben we als proof of concept ervoor gekozen om ons ROM-geheugen
op te splitsen in twee PR-blokken. Dat doen we omdat we tijdens acquisitie het kanaal bv. eerst
ROM-blok één laten gebruiken en vervolgens ROM-blok twee. Op die manier kan tijdens het
gebruik van het eerste blok het tweede worden geherconfigureerd. Zodoende zal het kanaal
tijdens acquisitie altijd de nodige PRN-codes ter beschikking hebben. Voor de implementatie
hiervan zijn er een aantal belangrijke stappen die we moeten doorlopen.
Een eerste stap is de twee PR-blokken als black box modules instantiëren. Dat wordt gedaan
door de component te instantiëren zonder dat er een benodigde VHDL-file aan wordt verbonden.
Hierdoor kan in een tweede stap de ontwikkeltool PlanAhead de lege modules zien en is het
mogelijk om een bepaalde component, in ons geval ROM-blok, toe te wijzen aan een gekozen
black box. Op die manier kan dan een partiële bitstream worden gegenereerd die enkel de black
boxes zal herschrijven. Voor onze implementatie zal er per partiële bitstream slechts één black
box per keer worden herschreven.
Een derde stap is ervoor zorgen dat de FPGA een request uitgeeft met welke ROM-blok hij
nodig zal hebben. Dat wordt mogelijk gemaakt door de adresdecoder, dataconverter, UART en
een PC. Hoe deze derde stap precies in zijn werk gaat zullen we in volgend punt bespreken. In
onderstaande figuur geven we een overzicht van de besproken manier van werken.
FPGA
Statische regio
Herconfigureerbare blokken
Blackbox modules
config1
config2
config3
config1
config2
config3
Partiële bitstream
Standaard bitstream
Dataconverter UART
Request bitstream & dataout
Figuur 67: Principe partiële herconfiguratie
KHLim Departement IWT ‟11 – „12
92
5.3 Dataconverter
De dataconverter staat in voor het omzetten van kanaalinformatie naar een bistream. Die
bitstream wordt vervolgens over UART verstuurd naar een PC. De dataconverter kan drie
soorten streams aanmaken.
1. informatie over de acquisitiefase;
2. informatie over de trackingfase;
3. een requeststream met ROM-info.
Door de informatie uit te sturen over UART is het mogelijk om metingen op een correcte en
tevens gemakkelijke manier uit te voeren. Ook kan op die manier de werking van het kanaal
worden gemonitord. De requeststream bevat de namen van de ROM-geheugens die momenteel
in de FPGA zitten en de naam van het ROM-geheugen dat moet worden geprogrammeerd. In
onderstaande afbeelding is de entiteit van de dataconverter weergegeven.
dataconverter
rst
clk
highest_PRN_offset(5:0)
highest_ADRESS_offset(7:0)
highest_FASE_offset(3:0)
highest_accumulator_data_out(12:0)
lost_tracking_i
accu_early_I(12:0)
accu_prompt_I(12:0)
accu_late_I(12:0)
highest_dopp_out(6:0)
uart_rx_req
uart_rx_data(7:0)
uart_tx_req
uart_tx_data(7:0)
req_next_rom
reset_acq
next_rom(3:0)
rom_slot_1(3:0)
rom_slot_2(3:0)
Figuur 68: Entiteit dataconverter
KHLim Departement IWT ‟11 – „12
93
5.4 Software
Voor de software hebben we gebruik gemaakt van een bestaand Visual Basic
terminalprogramma [22]. Vervolgens hebben we de terminal herschreven zodat die voldeed aan
onze eisen om informatie correct weer te geven. Zodoende was het mogelijk om de resultaten
van zowel acquisitie- als trackingfase uit te lezen. In onderstaande figuur is een screenshot van
het huidige terminalprogramma weergegeven.
In dit ontwerp zijn twee send-knoppen voorzien. Eén om acquisitie- en één om
trackinginformatie aan te vragen. Ook is er een knop voorzien om de FPGA te resetten. Indien
op die knop geklikt wordt, zal met een Shell script impact worden opgeroepen en wordt de
standaard bitstream in de FPGA geladen. Het laden van de partiële bitstreams gebeurt
automatisch en ook door impact op te roepen.
Figuur 69: Terminal programma
KHLim Departement IWT ‟11 – „12
94
Besluit
Een eerste fase in het maken van deze masterproef was een gps-ontvanger, die reeds in
ontwikkeling was, herwerken. Aangezien onze kennis omtrent GNSS-systemen beperkt was,
maakten we een uitgebreide literatuurstudie waardoor we een beter overzicht kregen van de
opdracht.
Na die studie kozen we voor een seriële-parallelle acquisitie met een hybride-correlator.
Hierdoor was het mogelijk om de acquisitietijd in te korten en toch een acceptabele
implementatiegrootte te bekomen. Voor het genereren van de PRN- replicacodes opteerden we
voor een ROM-geheugen i.p.v. een generator. Hierdoor zijn we voorbereid op verdere
uitbreiding naar Galileo E1 waarbij alle PRN-codes in geheugen zitten. Bovendien is het dan
mogelijk om het geheugen te delen met meerdere kanalen en zodanig plaats te besparen.
Vervolgens moest de tracking van het kanaal volledig herwerkt worden door de gekozen seriële-
parallelle structuur. Verder werd het gps-kanaal volledig in hardware gemaakt, zo zijn we niet
afhankelijk van een externe of interne processor om alles te sturen. Voor de fysieke testen van
het kanaal deden we beroep op een baseband gps-signaal.
Een tweede fase was de implementatie van een GNSS-ontvanger d.m.v. partiële herconfiguratie
zo flexibel en efficiënt mogelijk maken. Hiervoor maakten we gebruik van een RS232
communicatie tussen FPGA en PC. Zo kon tijdens acquisitie de FPGA een request doen naar een
bepaalde bistream. De kritische delen van de implementatie hebben we opgelost m.b.v.
simulaties in ISim van Xilinx.
Een derde en tevens laatste fase was om met minimale herconfiguratie te schakelen tussen
bijvoorbeeld gelijkaardige signalen van gps en Galileo. Echter konden we door tijdsgebrek de
Galileo-ontvanger niet meer implementeren in hardware. Daarom hebben we een mogelijk
concept voor dergelijke module besproken, welke kan dienen als een goede startpositie voor een
toekomstig project.
Het afleggen van deze masterproef heeft ons meer inzicht gegeven in het ontwerpen en
implementeren van VHDL-structuren. Hierbij denken we aan het probleemoplossend denken
tijdens het maken van een bepaalde bouwblok en het hoe en waarom achter elke beslissing. Ook
was plaatsefficiënt ontwerpen een belangrijke factor in de ontwikkeling van onze opdracht.
Samenvattend kunnen we zeggen dat we met tevredenheid terugblikken op dit leerrijk en
interessant onderzoek.
KHLim Departement IWT ‟11 – „12
95
Literatuurlijst
[1] (2012, Oct.) http://en.wikipedia.org/wiki/Satellite_navigation.
[2] (2011, Sep.) http://en.wikipedia.org/wiki/Decca_Navigator_System.
[3] (2012, Apr.) http://en.wikipedia.org/wiki/Transit_(satellite).
[4] (2011, Sep.) http://en.wikipedia.org/wiki/Global_Positioning_System.
[5] U-blox. U-blox. [Online]. http://www.u-
blox.com/images/stories/Resources/gps_compendiumgps-x-
[6] (2012, Mar.) http://www.colorado.edu/geography/gcraft/notes/gps/gps_f.html.
[7] dr. ir. W. Aerts, Telecommunicatie 1.
[8] (2012, Feb.) http://en.wikipedia.org/wiki/Galileo_(satellite_navigation).
[9] (2012, May) http://www.esa.int/esaNA/galileo.html.
[10] (2012, Mar.) http://en.wikipedia.org/wiki/GLONASS.
[11] Raf Martino en Ben Willems, Implementatie van hardwarebouwblokken voor een
meerkanaals GPS-ontvanger met positiebepaling op FPGA. Katholieke hogeschool
Limburg, 2010-2011.
[12] (2011, Sep.) http://en.wikipedia.org/wiki/Beidou_navigation_system.
[13] Simo Lehto, Architecture Exploration for Enhanced GPS and GALILEO Tracking. Finland:
Tampere university of technology, 2005.
[14] LASSI NIEMINEN, Implementation of GNSS baseband hardware. TAMPERE
UNIVERSITY OF TECHNOLOGY, 2007.
[15] ESA, "Signal In Space Interface Control Document," 2010.
[16] Kjell Moreels, Eindwerk., 2011.
[17] Tughrul Arslan, Ahmed T. Erdogan Ahmed O. El-Rayis, A Processing Engine for GPS
Correlation. The University of Edinburgh, School of Engineering, Edinburgh EH9 3JL, UK.
[18] Sascha M Spangenberg and Gordon J R Povey, "Code acquisition for LEO satellite mobile
communication using a serial-parallel correlator with FFT for Doppler estimation".
KHLim Departement IWT ‟11 – „12
96
[19] Bao-Yen, James Tsui, Fundamentals of Global Positioning System Receivers, A Software
Approach 2nd edition. Wiley-Interscience, 2005.
[20] Wu Feng-yan Wang Lie, Dynamic partial reconfiguration in FPGAs. Guangxi University
Nanning, China: Dept. of Computer Science & Electronic Information, 2009.
[21] "Partial Reconfiguration User Guide UG702," 2010.
[22] Graham Mitchell. http://digital-diy.com/forum/viewtopic.php?p=1415.
[23] Maxim, Datasheet: MAX2769., 2011.
[24] European Space Agency, "Galileo IOV factsheet," 20.03.2012.
[25] European Space Agency, "Galileo FOC factsheet," 21.03.2012.
[26] (2011, Nov.) http://en.wikipedia.org/wiki/Numerically_controlled_oscillator.
KHLim Departement IWT ‟11 – „12
97
Inhoud van cd-rom met bijlage
Op onderstaande figuur is de mappenstructuur van de cd-rom met bijlagen weergegeven.
Figuur 70: Inhoud van cd-rom met bijlage