Bachelorthesis
Een verkennend onderzoek naar de implementatie van een radarsysteem op het USRP1 met GNU Radio
Auteurs: X. Liu (1393324) R.Y. Peters (1361511)
ii
Bachelorthesis
Een verkennend onderzoek naar de implementatie van een radarsysteem op het USRP1 met GNU Radio
11 juni 2010
Auteurs: X. Liu (1393324) R.Y. Peters (1361511) Afdeling: Micro-elektronica & Computer Engineering, Netwerken en Systemen
Technische Begeleiders: Prof. dr. ir. A.J. van der Veen Dr. ir. G.J.T. Leus Begeleider Schriftelijk Rapporteren: Drs. K.E.M. van Oyen
ii
Voorwoord Deze thesis is geschreven voor het afstudeerproject voor de bachelor Elektrotechniek aan de TU Delft. Het onderzoeksonderwerp is ’Een goedkoop radarsysteem’, in ons geval toegepast als veiligheidssysteem in een personenauto. Dit veiligheidssysteem moet er voor zorgen dat auto’s een veilige afstand tot hun voorganger bewaren op de openbare weg. De reden dat het een goedkoop radarsysteem is, is vanwege de implementatie met het Universal Software Radio Peripheral (USRP). Het afstudeerproject is uitgevoerd door een groep van vijf personen, verdeeld over twee onderdelen: 1. de radartheorie 2. de software-implementatie De software-implementatie is het onderwerp van deze thesis. De softwareimplementatie op het USRP-platform is bovendien niet alleen van belang als onderdeel van een radarsysteem. Deze thesis kan ook gelezen worden als een introductie op het USRP-platform in het algemeen. We willen de volgende personen graag bedanken voor hun suggesties, behulpzaamheid en bereidwilligheid om ons verder te helpen Alle-Jan van der Veen, Geert Leus, Karen van Oyen, Antony Lo, Martin Schumacher en P. Hakkaart, Antoon Frehe en Alexander de Graaf. Delft, Juni 2010 Xiwen Liu & Ravi Peters
iv
Samenvatting In tegenstelling tot conventionele radar -en radiosystemen kan de toepassing van een Software Defined Radio (SDR) grotendeels bepaald worden in software. Een SDR bestaat uit een RF-frontend, een paar ADC/DAC’s, een FPGA en een host computer. In de hostcomputer en de FPGA kan de functie van een SDR volledig worden geherdefini¨eerd, zonder dat daar een aanpassing in de hardware voor nodig is. Het USRP1 is een specifieke implementatie van het hardware gedeelte van een SDR. Het USRP wordt aangesloten op een dochterbord dat de bepaald op welke frequenties gewerkt kan worden. In combinatie met GNU Radio voor het software deel van de SDR vormt dit een aantrekkelijk onderzoeksplatform om de mogelijkheden van SDR voor radar -en radiosystemen mee te verkennen. GNU Radio is een uitgebreid softwarepakket waarmee alle opties van het USRP benut kunnen worden. Met behulp van relatief makkelijk te doorgronden pythonscripts is het mogelijk om SDR’s te bouwen. Met GNU Radio Companion kan bovendien zelfs zonder enige code te schrijven gebruik worden gemaakt van de meeste mogelijkheden van GNU Radio. In dit onderzoek werd een enkele USRP1 in combinatie met een RFX2400 dochterbord gebruikt om de basis te leggen voor een eenvoudig radarsysteem. Het hardware-ontwerp van het USRP1 legt hierbij een aantal beperkingen op aan de implementatiemogelijkheden. Het voornaamste probleem is de gebrekkige isolatie tussen de verzender en de ontvanger. Daarnaast schiet de bandbreedte van de USB-interface te kort. Uiteindelijk is wel de basis gelegd voor een Frequency Modulated Continuous Wave (FMCW) radar. Op een enkele USRP werkt dit systeem echter niet goed, vanwege de eerdergenoemde isolatie problemen. Het gebruik van meerdere USRP’s kan de isolatieproblemen oplossen. Het probleem van de beperkte interface-bandbreedte kan worden verholpen door het gebruik van het USRP2, een verbeterde versie van het USRP1.
vi
Inhoudsopgave Voorwoord
iii
Samenvatting
v
1 Inleiding
1
2 Wat is een SDR? 2.1 Zwakheden van een conventioneel radiosysteem . . . . . . . . 2.2 De ideale SDR . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Een realiseerbare SDR . . . . . . . . . . . . . . . . . . . . . .
3 3 3 5
3 De hardware: Het USRP 3.1 De keuze voor het USRP1 . . 3.2 De werking van het USRP1 . 3.2.1 De ADC en de DAC . 3.2.2 Dochterborden . . . . 3.2.3 De FPGA . . . . . . . 3.2.4 De USB 2.0 Controller 4 De 4.1 4.2 4.3 4.4 4.5 4.6 4.7
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
7 7 8 8 10 11 14
software: GNU Radio Een totaaloverzicht van GNU Radio De signaalblokken . . . . . . . . . . Het stromingsdiagram . . . . . . . . GNU Radio Companion . . . . . . . Hulpprogramma’s . . . . . . . . . . . Interface met Matlab . . . . . . . . . Alternatieven voor GNU Radio . . . 4.7.1 Alternatief 1: Simulink-USRP 4.7.2 Alternatief 2: UHD . . . . . . 4.7.3 Alternatief 3: OSSIE . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
17 17 19 19 21 21 22 22 22 23 23
. . . . . .
. . . . . .
. . . . . .
5 Een radar met het USRP1 25 5.1 Algemene beperkingen . . . . . . . . . . . . . . . . . . . . . . 25 5.2 Puls radar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
viii
Inhoudsopgave 5.3 5.4
FMCW radar . . . . . . . . . . . . . . . . . . . . . . . . . . . Mogelijke oplossingen . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Een radar met het USRP2 . . . . . . . . . . . . . . . .
6 Testresultaten 6.1 Gebruikte hardware . . . . . . . . . . . 6.2 Verificatie van het ontvangen en zenden 6.2.1 Ontvangen . . . . . . . . . . . . 6.2.2 Zenden . . . . . . . . . . . . . . 6.3 Een eenvoudig radarsysteem . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
26 26 27 29 29 29 29 30 31
7 Conclusie
33
Literatuurlijst
33
Bijlagen
37
A Programma van Eisen
37
B Installatie GNU Radio 39 B.1 Ubuntu 10.04 . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 B.2 SuSE 11.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 C Scripts C.1 write float C.2 chirp.m . C.3 send.py . C.4 receive.py
binary.m . . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
41 41 42 43 44
Lijst van figuren 2.1 2.2
Blokdiagram van een ideale SDR . . . . . . . . . . . . . . . . Blokdiagram van implementeerbare SDR . . . . . . . . . . . .
4 5
3.1 3.2 3.3
Schematisch overzicht van het USRP1 . . . . . . . . . . . . . Schematisch overzicht PGA en ADC . . . . . . . . . . . . . . Schematische weergave van de relatie tussen de DUC en de DAC’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . De belangrijkste componenten op het USRP1 . . . . . . . . . Schematisch overzicht van het USRP . . . . . . . . . . . . . . Signaalpad ontvanger in de FPGA . . . . . . . . . . . . . . . De werking van de DDC . . . . . . . . . . . . . . . . . . . . . Signaalpad verzender . . . . . . . . . . . . . . . . . . . . . . . Totaaloverzicht van de signaalpaden van de verzender en de ontvanger . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9 9
3.4 3.5 3.6 3.7 3.8 3.9
10 11 12 12 13 14 15
4.1 4.2 4.3
De verschillende abstractielagen in GNU Radio . . . . . . . . Een schematische weergave van voorbeeld 4.1 . . . . . . . . . GNU Radio Companion (GRC) . . . . . . . . . . . . . . . . .
18 20 21
6.1 6.2 6.3 6.4
Het ontvangen van WiFi met het USRP1 . . . Spectrum van het uitgezonden signaal om WiFi Het downloaden van een bestand via WiFi . . . Spectrum van het uitgezonden chirp signaal . .
30 31 31 32
. . . . mee te . . . . . . . .
. . . . storen . . . . . . . .
x
Lijst van figuren
Hoofdstuk 1
Inleiding Op het gebied van radiosystemen vindt een verschuiving naar de Software Defined Radio (SDR) plaats. Conventionele radiosystemen worden namelijk in hardware ge¨ımplementeerd. Het nadeel hiervan is dat de golfvorm vastligt, die een dergelijk systeem uitzendt. En met de golfvorm wordt ook het aantal toepassingen van een radiosysteem beperkt. Een SDR heeft dit probleem niet, omdat de golfvorm in de software wordt bepaald. Dit betekent dat de golfvorm eenvoudig kan worden aangepast. Deze redenatie gaat ook op voor radarsystemen. Het is in theorie zelfs mogelijk met ´e´en SDR zowel radar- als radiotoepassingen te implementeren. Dit cre¨eert de mogelijkheid bestaande radarsystemen in de automobielindustrie uit te breiden met een radio-component. In plaats van alleen het detecteren van een botsing kan een dergelijk systeem dan ook een waarschuwingssignaal afgeven voor de achterliggende voertuigen. Dit verkleint de kans op bijvoorbeeld kettingbotsingen aanzienlijk. Een populaire en betaalbare SDR is het open source Universal Software Radio Peripheral (USRP). Het USRP-platform zal daarom gebruikt worden als uitgangspunt voor deze thesis. De doelstelling is te ontdekken hoe het USRP-platform gebruikt moet worden om een radarsysteem te implementeren. De hoofdvraag van deze thesis is: Hoe werkt het USRP-platform en hoe kan het gebruikt worden om een radarsysteem te maken? Deze vraag zal beantwoord worden op basis van literatuuronderzoek en simulatie. De structuur van deze thesis is als volgt. Hoofdstuk 2 vormt een introductie op de SDR. Hoofdstuk 3 gaat in op de werking van het USRP-platform en de motivatie tot de keuze van het USRP1 bord. Hoofdstuk 4 gaat in op de werking en het gebruik van GNU Radio, het belangrijkste software alternatief voor de USRP1. Dit wordt gevolgd door een opsomming van de beperkingen die het USRP-platform oplegt bij de implementatie van een radarsysteem. De testresultaten staan in hoofdstuk 6. Tot slot kunnen de conclusies en adviezen in hoofdstuk 7 gevonden worden.
2
Inleiding
Hoofdstuk 2
Wat is een SDR? Dit hoofdstuk vormt een introductie op het concept Software Defined Radio (SDR). Een goed begrip van dit concept is noodzakelijk om het volgende hoofdstuk te kunnen begrijpen. Hoofdstuk 3 zal namelijk ingaan op de werking van het USRP, een implementatie van de SDR. Paragraaf 2.1 benoemt de nadelen die kleven aan een traditioneel radiosysteem. Op basis daarvan wordt in 2.2 beargumenteerd waarom een SDR beter is, en wat een SDR in het ideale geval voorstelt. Paragraaf 2.2 met een technisch implementeerbare SDR.
2.1
Zwakheden van een conventioneel radiosysteem
In de recente tijd veranderen de eisen van een radiosysteem snel. Het conventionele radiosysteem voldoet niet meer aan nieuwe eisen van flexibilieit. Dit komt doordat de modulatie en de demodulatie van het signaal vastligt in hardware. Aanpassingen aan het systeem zijn hierdoor moeilijk te realiseren. Voor een aanpassing in een hardwarematig ge¨ımplementeerde radio moet namelijk het complete systeem opnieuw gefabriceerd worden. Het proces van herontwerpen is relatief duur en tijdrovend. Daarom is er veel belangstelling voor de Software Defined Radio.
2.2
De ideale SDR
Een Software Defined Radio (SDR) is een radiosysteem dat de modulatie en demodulatie van het radiosignaal kan uitvoeren in software. Vergeleken met het conventionele radiosysteem biedt de SDR een meer flexibele, voorspelbare, herhaalbare en toegankelijke oplossing. In het software domein is het makkelijk de verschillende componenten in het systeem te veranderen. [1] Een SDR is opgebouwd uit vier basiscomponenten: de antenne, analogto-digital converter (ADC), digital-to-analog converter (DAC) en een host
4
Wat is een SDR?
computer die de software kan implementeren. Figuur 2.1 geeft het blokdiagram voor de ideale SDR weer.
Figuur 2.1: Blokdiagram van een ideale SDR. In de ontvanger wordt het opgevangen signaal gedigitaliseert en direct naa de host computer gestuurt. De verzender werkt precies andersom [2].
Hieronder zullen de ideale componenten van een SDR genoemd worden, samen met de praktische bezwaren. Ideale componenten bestaan nu eenmaal niet. Antenne Een antenne zet een radiofrequent (RF) veld om in een wisselstroom of omgekeerd. De ideale antennes in het schema kunnen op alle frequenties werken. Bestaande antennes werken slechts op een bepaalde frequentieband ADC en DAC Een Analog-to-Digital Converter (ADC) of analoog-digitaalomzetter zet een analoog signaal om in een digitaal signaal. De functie van de digital-toanalog converter (DAC) is het tegenovergestelde van de de ADC. Deze converteert juist een digitaal signaal naar een analoog signaal. In de ideale SDR worden de ADC en de DAC zo dicht mogelijk bij de antennes geplaatst. Dit vermindert signaalverlies. In het ideale geval is de sample frequentie fs 1 van de ADC of DAC twee keer zo hoog als de carrier frequentie B van het radio signaal (fs > 2B) [3]. In de praktijk ligt de verwerkingssnelheid te laag om aan dit criterium te voldoen. Bij hoge frequenties gaat ook de resolutie omlaag. 1
De samplefrequentie fs is het aantal samples per seconde
Een realiseerbare SDR
5
Host computer De host computer voert de signaalbewerking ui op het verzonden en ontvangen signaal. De ideale computer heeft voldoende verwerkingskracht om realtime signaalbewerking te doen. In werkelijkheid zijn de hedendaagse computers nog niet snel genoeg om signalen met een hoge bandbreedte realtime te verwerken.
2.3
Een realiseerbare SDR
De ideale SDR uit figuur 2.1 blijkt in realiteit niet te implementeren. Daarom worden er een aantal componenten toegevoegd. Dat zijn de Field-Programmable Gate arrays (FPGA) en de RF Front-Ends. Deze twee componenten verhogen de systeemprestatie. Zie figuur 2.2.
Figuur 2.2: Blokdiagram van implementeerbare SDR. Ten opzichte van figuur 2.1 zijn hier de FPGA en de RF Frontend toegevoegd [2].
RF Front-End De functie van de RF Front-End is om het ontvangen signaal van zijn carrier frequentie naar een veel lagere Intermediate Frequency (IF) om te zetten in de ontvanger, en in de verzender het signaal van IF naar de gewenste carrier frequentie om te zetten.
6
Wat is een SDR?
FPGA Door het gebruik van een IF, kunnen er een DAC en een ADC met een lagere sample frequentie gekozen worden, die voldoende snel en nauwkeurig zijn. Hoewel het gebruik van een lagere sample frequentie op de DAC en ADC de rekenlast van computer vermindert, is de de hoeveelheid data nog steeds groot. Voor het verkleinen van de rekenlast, zit de FPGA tussen DAC/ADC en de computer. Deze kan de relatief hoge sample frequentie van de data uit de Front-End omzetten in een lage sample frequentie waar de computer minder problemen mee heeft.
Hoofdstuk 3
De hardware: Het USRP In hoofdstuk 2 wordt uiteengezet wat een SDR precies is. Dit hoofdstuk gaat in op een specifieke implementatie van een SDR, namelijk het USRP. In paragraaf 3.1 zal de keuze voor het USRP1 worden gemotiveerd. Vervolgens wordt in paragraaf 3.2 dieper ingegaan op de werking van het USRP1. Hoofdstuk 3 gaat dieper in op de meest gebruikte software voor het USRP1: GNU Radio.
3.1
De keuze voor het USRP1
Er bestaan twee varianten van het USRP. Te weten het USRP1 en het USRP2. De eerstgenoemde is het eerste USRP dat door Ettus Research1 gemaakt werd. Het USRP2 kan als de volgende generatie USRP gezien worden. Beide borden worden nog geproduceerd en verkocht. In tabel ?? staan de belangrijkste technische kenmerken van de borden opgesomd. Tabel 3.1: Overzicht functionaliteit USRP borden [4] [5]
Model FPGA Interface Dochterborden ADC DAC Prijs
USRP1 Altera Cyclone EP1C12 USB 2.0 (480Mbit/s) 8MHz 2 x TX, 2 x RX 64MS/s, 12 bit 128MS/s, 14 bit $700,-
USRP2 Xillinx Spartan 3 2000 Gigabit Ethernet (1Gbit/s) 25MHz 1 x TX, 1 x RX 100MS/s, 14 bit 400MS/s, 16 bit $1400,-
De USRP2 is qua hardware duidelijk verbeterd ten opzichte van zijn voorganger. Ten eerste is de FPGA sneller en groter. Dit vergroot de mogelijkheden om snelle signaalbewerking direct op het USRP2 bord te doen. Ten 1
Ettus Research, opgericht door M. Ettus is het bedrijf achter de ontwikkeling van het USRP
8
De hardware: Het USRP
tweede heeft het USRP2 een veel snellere interface met de host computer. Door het gebruik van gigabit ethernet wordt het mogelijk om de USRP2 vanaf verschillende (tegelijk) computers te benaderen. Ook kan het USRP2 via ethernet aan een of meerdere andere USRP2’s gekoppeld worden. Als derde belangrijk punt beschikt de USRP2 over snellere en nauwkeurigere ADC’s en DAC’s. Dit zijn vrij cruciale componenten in een SDR zoals het USRP. Het wordt hiermee mogelijk om snellere en nauwkeurigere sample reeksen te nemen. Tot slot heeft het USRP2 een aantal extra functies zoals een SD-kaart slot, om firmware mee te flashen, en een Pulse Per Sample poort. Met dit laatste zou het makkelijker moeten worden om applicaties die afhankelijk zijn van zeer precieze timing uit te voeren. Ten opzichte van het URSP1 verliest het USRP2 de mogelijkheid om maximaal vier dochterborden ge¨ınstalleerd te hebben. En de prijs is aanzienlijk hoger. Naast de technische specificaties en de prijs moet ook gekeken worden naar de beschikbare literatuur. Voor het USRP1 bord is relatief veel literatuur beschikbaar. Dit heeft te maken met het feit dat het USRP1 bord al sinds 2004 beschikbaar was, terwijl het USRP2 pas in 2008 is ge¨ıntroduceerd. Daardoor is ook de softwareondersteuning van het USRP1 bord beter (gedocumenteerd). Gezien de vrij korte periode die voor dit project beschikbaar was, is het punt over beschikbare literatuur en stabiele software van doorslaggevend belang geweest. Bovendien was er op het moment van kiezen nog niet duidelijk of de extra rekencapaciteit van het USRP2 nodig was. Daarom is er gekozen voor het USRP1 bord.
3.2
De werking van het USRP1
Het USRP-bord digitaliseert het ontvangen radiosignaal, zodat de data via een USB 2.0 verbinding naar een host computer kunnen worden verstuurd. Op de host computer wordt vervolgens de de functie van het USRP bepaald. Figuur 3.1 geeft de software, het USRP en een dochterbord weer, analoog aan figuur 2.1. De RF Front-Ends zijn de dochterborden. Een typische setup van het USRP1 bestaat uit een moederbord en een of meerdere dochterborden. Het moederbord bestaat uit vier ADC’s, vier DAC’s, een Field Programmable Gate Array (FPGA) en een programmeerbare USB 2.0-controller. In de komende paragrafen zullen achtereenvolgens de verschillende componenten van het USRP worden toegelicht.
3.2.1
De ADC en de DAC
In het USRP-bord zijn de ADC’s en DAC’s gecombineerd in ´e´en chip, de AD9862. Per paar zend -en ontvang dochterbordsleuven is er een AD9862.
De werking van het USRP1
9
Figuur 3.1: Schematisch overzicht van het USRP1 [2]
Elke AD9862 heeft twee 12-bit 64 MS/s ADC’s en twee 14-bit 128 MS/s DAC’s. Signaalpad ontvanger: Programmable Gain Amplifier (PGA) en ADC De ADC heeft als functie het digitaliseren van de analoge signalen. De sample frequentie van het USRP1 bord bedraagt 64 MS/s. In theorie kan het daarmee een band zo breed als 32 MHz digitaliseren (fs > 2B). Signalen met een bandbreedte van meer dan 32 MHz hebben signaalverlies tot gevolg door het optreden van aliasing. Daarom is een hogere sample frequentie bevorderlijk voor de signaalruis-verhouding van het gedigitaliseerde signaal. Een Programmable Gain Amplifier (PGA) wordt voor de ADC geplaatst om
Figuur 3.2: Schematisch overzicht PGA en ADC [2]
het analoge signaal vooraf te versterken (zie figuur 3.2). Dit dient voor het vergroten van het dynamisch bereik van het input signaal, wat voor minder kwantisatiefouten in de ADC leidt. De belangrijkste specificaties van de PGA en de ADC in het USRP1 zijn:
10
De hardware: Het USRP
PGA • dynamische bereik tot 20 dB ADC • piek-tot-piek 2 V • ingangsimpedantie 50 ohm, differenti¨ele ingang • vermogen 40 mW, of 16 dBm • sample frequentie fs = 64MS/s De DAC converteert een digitaal signaal naar een analoog signaal. Er zijn vier DAC’s op het USRP1 bord. De sample frequentie van de DAC is 128M samples per seconde, dus volgens het Nyquist theorama is 64 MHz de maximale bandbreedte van het signaal. Maar doordat het filter in de DAC niet ideaal is, ligt de praktisch nuttige frequentie lager. Derhalve is het frequentie-bereik van de DAC in werkelijkheid beperkt van DC tot ongeveer 50 MHz. Er is ook een PGA na de DAC te gebruiken, die verhoogt de gain maximaal met 20 dB. De PGA’s zijn programmeerbaar op zowel de RX als de TX paden. Signaalpad verzender: digital up converter (DUC) en DAC De sample frequentie van het te verzenden signaal wordt door de DUC omhoog gebracht, van basisband naar de IF. De DUC heeft twee ingangen (I en Q) en twee uitgangen (I en Q). Deze uitgangen worden ieder op een eigen DAC aangesloten. Figuur 3.3 geeft dit schematisch weer.
Figuur 3.3: Schematische weergave van de relatie tussen de DUC en de DAC’s
3.2.2
Dochterborden
Er zijn vier sleuven op het USRP1 aanwezig, waar maximaal 2 RX dochterborden (RXA en RXB) en 2 TX dochterbord (TXA en TXB) in kunnen worden geplugd. Zie figuur 3.4. De functie van het dochterbord is vergelijkbaar met het RF Front-End: het ontvangen signaal wordt naar IF gemoduleerd of het verzonden signaal naar gewenste carrier frequentie. Een dochterbord verzendt of ontvangt een signaal, bestaande uit een Quadrature en een In-phase component, deze worden apart naar de ADC/DAC’s gestuurd. Er zijn drie soorten dochterborden:
De werking van het USRP1
11
• ontvangers: ontvangen een fysiek signaal • verzenders: verzenden een analoog signaal • transceivers: deze borden kunnen zowel zenden als ontvangen Voor dit project is gebruikgemaakt van het RFX2400 dochterbord. Voor meer informatie over de dochterborden en de motivatie tot de keuze van dit dochterbord wordt doorverwezen naar [6].
AD9862, ieder met 2 ADC’s en 2 DAC’s
Altera Cyclone FPGA
Sleuven voor dochterborden
USB 2.0 Controller
USB 2.0 poort
DC voeding
Figuur 3.4: De belangrijkste componenten op het USRP1
3.2.3
De FPGA
De FPGA is de kern van het USRP; alle ADCs en DACs worden aangesloten op de FPGA, waar een belangrijk deel van de signaalbewerking plaatsvindt. Vervolgens wordt de FPGA via een USB-verbinding aangesloten op de host computer. Figuur 3.5 toont een overzicht van de verschillende componenten op het USRP bord. De twee functies van de FPGA in de standaard GNU Radio configuratie is om digital down conversion (DDC) in interpolatie uit te voeren, dit gebeurt met behulp van een cascaded integrator-comb (CIC). Het signaalpad van de ontvanger Via de ADC ontvangt de FPGA het signaal van het dochterbord (figuur 3.6). Dit is een gesampled signaal van 12-bits. De DDC, die geheel ge¨ımplementeerd wordt in de FPGA, converteert dit signaal van de IF naar basisband. Het
12
De hardware: Het USRP
Figuur 3.5: Schematisch overzicht van het USRP [7]
basisband-signaal is voldoende beperkt in bandbreedte, zodat het verwerkt kan worden door de host computer.
Figuur 3.6: Signaalpad ontvanger in de FPGA [7]
Elke DDC heeft twee ingangen (I en Q) en twee uitgangen (I’ en Q’), zie figuur 3.6. Via een multiplexer kunnen de uitgangen van een instelbaar aantal ADC’s worden doorgeschakeld naar de DDC’s. De multiplexer is in GNU Radio met de pythonmethode usrp.set mux() in te stellen. Bij het schakelen dient er wel op gelet te worden dat de sample frequenties van de dochterborden gelijk zijn.
De werking van het USRP1
13
De data uit de DDC’s is 32 bits lang, 16 bit I’ en 16 bit Q’, en wordt via de USB 2.0 controller naar de host computer gestuurd.
Figuur 3.7: De werking van de DDC [8]
In figuur 3.7 is de werking van de DDC weergegeven. Een CORDIC2 wordt samen met vermenigvuldigers gebruikt om de het signaal van IF naar basisband te mixen. Vervolgens wordt het signaal gedecimeerd met een factor N, resulterend in een bandbreedte fs /N . De decimatie factor N kan in GNU Radio met de pythonmethode usrp.set decim rate() worden ingesteld. Hierbij kunnen waardes tussen 4 en 256 worden gebruikt. De minimaal in te stellen decimatie factor wordt bepaald door het aantal actieve signaalpaden en de bandbreedte van de USB 2.0 verbinding. Het signaalpad van de verzender In tegenstelling tot het signaalpad van de ontvanger, is het signaalpad van de verzender grotendeels buiten de FPGA ge¨ımplementeerd. Behalve een interpolatie met behulp van een CIC filter, vindt het omhoog mixen plaats in de AD9862. De CIC filters zijn de meest efic¨ıente filters om te gebruiken voor interpolatie en down conversion. In het verzendpad van de FPGA van het USRP wordt een CIC filter gebruikt om de sample frequentie van het signaal dat via de USB 2.0 verbinding binnenkomt naar 128MS/s te krijgen. De CIC heeft ook twee ingangen (I en Q) en twee uitgangen (I’ en Q’). In figuur 3.8 wordt dit schematisch weergegeven. Via een demultiplexer wordt het signaal naar de AD9862 gestuurd. De CIC wordt ook in het signaalpad van de ontvanger gebruikt in de DDC. 2
CORDIC: COordinate Rotation DIgital Computer, een algoritme dat vaak in FPGA’s wordt gebruikt om trigonometrische functies mee te maken
14
De hardware: Het USRP
Figuur 3.8: Signaalpad verzender [8]
3.2.4
De USB 2.0 Controller
Het USRP1 kan uitsluitend via USB 2.0 met de host computer verbonden worden. De USB interface heeft praktisch een maximale bandbreedte van 32 MB/s. Een sample uit de DDC is 32 bits lang (16 bits I en 16 bits Q). 32 bits is gelijk aan 4 bytes, dus er de maximale bandbreedte die de USB verbinding aan kan is 8 MS/s. Deze bandbreedte moet bovendien verdeelt worden over alle actieve kanalen. Hoe meer actieve kanalen, hoe hoger de decimatie moet zijn. In figuur 3.9 staan de signaalpaden van de verzender en de ontvanger in een schema samengevat.
De werking van het USRP1
15
Figuur 3.9: Totaaloverzicht van de signaalpaden van de verzender en de ontvanger. Het signaal wordt via de antenne ontvangen, daarna wordt de carrier frequentie van het signaal naar het IF domein omgezet. Vervolgens gaat het signaal naar de ADC/DAC chip. Hierna wordt het digitale signaal door de FPGA verwerkt, geschakeld en tenslotte verzonden naar de host computer via USB2.0. Het signaalpad van de verzender is hetzelfde, alleen dan andersom. [8]
16
De hardware: Het USRP
Hoofdstuk 4
De software: GNU Radio In de hoofstukken 2 en 3 werden achtereenvolgens het concept SDR en de implementatie van de SDR op het USRP behandeld. Dit hoofdstuk gaat in op het meest gebruikte softwarepakket voor het USRP: GNU Radio. De basisprincipes en de belangrijkste bouwstenen van GNU Radio zullen worden besproken, alsmede hoe GNU Radio te gebruiken is in combinatie met Matlab als analyseprogramma. In het volgende hoofdstuk wordt ingegaan op de beperkingen van het USRP1 bij de implementatie van een radarsysteem. Het GNU Radio project werd gestart in het jaar 2001. Het initiatief en de sponsoring kwamen van filantroop John Gilmore [9]. Sinds de oprichting van het project is Eric Blossom de belangrijkste ontwikkelaar geweest. Het doel van het project is om het makkelijker te maken om het elektromagnetisch spectrum te ’hacken’. Met andere woorden om dit spectrum beter te kunnen begrijpen en slimme manieren te vinden om er gebruik van te maken. GNU Radio is open source en wordt uitgegeven onder de General Public License (GPL). Dit houdt in dat het een ieder vrij staat de broncode te bestuderen en er aanpassingen in te maken, op voorwaarde dat het distribueren van de aangepaste code ook onder de GPL plaatsvindt. Dit maakt GNU Radio aantrekkelijk voor educatieve- en onderzoeksprojecten. De installatie van GNU Radio op een linux-pc wordt in bijlage B besproken.
4.1
Een totaaloverzicht van GNU Radio
In het ontwerp van GNU Radio zijn verschillende abstractielagen te onderscheiden. Zie figuur 4.1. Het software deel wordt uitgevoerd op een normale computer (host computer), die via USB wordt aangesloten op een RF frontend zoals het USRP [10] [11]. Bovenaan in figuur 4.1 staat het stromingsdiagram. In het stromingsdiagram worden signaalblokken met elkaar verbonden. Deze signaalblokken
18
De software: GNU Radio
voeren de daadwerkelijke signaalbewerking uit op de signalen die via USB binnenkomen of uitgestuurd worden. In GNU Radio worden twee verschillende programmeertalen gebruikt. Dit zijn Python en C++. Het signaaldiagram wordt in python geprogrammeerd. Hierdoor wordt het makkelijk om signaaldiagrammen te maken. Python is namelijk een toegankelijke en gemakkelijk te leren taal. De signaalblokken moeten vooral heel snel zijn. Daarom is er voor de signaalblokken voor C++ gekozen. C++ is een stuk sneller in het uitvoeren van code dan Python. Het is echter wel een vrij complexe programmeertaal. Om de C++ signaalblokken in het Python stromingsdiagram te kunnen gebruiken wordt SWIG (Simplified Wrapper and Interface Generator) gebruikt. SWIG maakt het mogelijk om C++ functies aan te roepen vanuit onder andere Python.
Software
Hardware
{ {
Stromingsdiagram (Python)
SWIG
Signaalblokken (C++)
USB
RF Frontend (USRP)
Figuur 4.1: De verschillende abstractielagen in GNU Radio in relatie tot de gebruikte hardware
Het is met GNU Radio relatief eenvoudig om een Graphical User Interface (GUI) te maken. Dit is onder andere mogelijk met wxWidgets, een crossplatform GUI bibiliotheek. In GNU Radio zitten een aantal bouwstenen voor GUI’s inbegrepen zoals een realtime oscilloscoop en een FFT scherm. GNU Radio maakt gebruikt van een standaard configuratie voor de FPGA. Deze is in Verilog1 ontwikkeld en bevat onder andere decimators en interpolators, in hoofdstuk 3 wordt hier op ingegaan. Het is mogelijk om de standaard configuratie aan te passen en zo een deel van het radio- of radarsysteem in de relatief snelle FPGA te implementeren. 1
Verilog is een Hardware Description Language (HDL) vergelijkbaar met VHDL.
De signaalblokken
4.2
19
De signaalblokken
Een signaalblok in GNU Radio is een C++ module die kan worden gebruikt in een signaaldiagram. Het heeft altijd ´e´en of meerdere in- en uitgangen. Er zijn drie typen signaalblokken: 1. Signal source. Dit is een signaalbron, zoals een constante waarde, een sinus-functie of een golfvorm uit een bestand. Een USRP met een ontvangende antenne kan ook als als signaalbron gebruikt worden. 2. Signal processing. Een signaalblok met tenminste ´e´en input en ´e´en output. Dit zijn de blokken waarin operaties op een of meerdere inputs uitgevoerd. Dit kan bijvoorbeeld een opteller, vermenigvuldiger of een filter zijn. 3. Signal sink. Dit is een blok waar het signaaldiagram in eindigt. Het signaal wordt opgeslagen, weergegeven of uitgevoerd naar een USRP met een zendende antenne. GNU Radio bevat meer dan 100 signaal blokken [12]. Het is daarnaast mogelijk om zelf een signaalblok te maken, mocht een bepaalde functionaliteit nog niet zijn ge¨ımplementeerd.
4.3
Het stromingsdiagram
De ruggengraat van iedere SDR op basis van GNU Radio is een stromingsdiagram. Met behulp van Python worden verschillende signaalblokken met elkaar verbonden om een stromingsdiagram te vormen. De keuze van de signaalblokken en de manier waarop ze worden verbonden bepalen de functie van de SDR. Om te illustreren hoe een signaaldiagram eruit ziet in Python zal nu het ’Hello world’ van GNU Radio besproken worden. Voorbeeld 4.1 laat zien hoe GNU Radio gebruikt kan worden om de beltoon uit de VS te simuleren gebruikmakend van de pc speakers. Hierbij wordt veronderstelt dat de lezer de basisbeginselen van Python kent [13]. Voorbeeld 4.1: Een eenvoudig signaaldiagram in GNU Radio. Dit voorbeeld genereert de twee tonen waaruit de beltoon van de VS bestaat. 1 2 3 4 5 6 7 8
from g n u r a d i o import g r from g n u r a d i o import a u d i o c l a s s my top block ( gr . top block ) : def init ( self ) : gr . top block . init ( self ) s a m p l e r a t e = 32000
20 9 10 11
ampl = 0 . 1 s r c 0 = g r . s i g s o u r c e f ( s a m p l e r a t e , g r . GR SIN WAVE , 3 5 0 , ampl ) s r c 1 = g r . s i g s o u r c e f ( s a m p l e r a t e , g r . GR SIN WAVE , 4 4 0 , ampl ) dst = audio . sink ( sample rate , ”” ) s e l f . c o n n e c t ( s r c 0 , ( dst , 0 ) ) s e l f . c o n n e c t ( s r c 1 , ( dst , 1 ) )
12 13 14 15 16 17 18 19 20 21
De software: GNU Radio
if
name == ’ m a i n ’ : try : m y t o p b l o c k ( ) . run ( ) except KeyboardInterrupt : pass
Op de eerste regel wordt de gr module ge¨ımporteerd. Deze module vormt de basis voor alle signaalblokken. De volgende regel importeert de audio module, noodzakelijk om in dit voorbeeld de uitvoer op de pc speaker te krijgen. Regels 4 tot en met 16 declareren een class my top block. Hier wordt feitelijk een signaaldiagram met de naam my top block gemaakt. Op regels 11 en 12 worden twee signal sources aangemaakt. Dit zijn sinussen van respectievelijk 350 en 440 Hz: src0 en src1 . Vervolgens wordt op regel 13 een signal sink dst aangemaakt: de pc speaker. Tot slot worden de drie aangemaakte signaalblokken op regels 14 en 15 met elkaar verbonden. Hiervoor wordt de connect methode van gr.top block gebruikt. De twee signaalblokken die de sinus generen ( src0 en src1 ) worden beurtelings op de twee inputs van de speaker (dst) aangesloten. Het stromingsdiagram wordt bij het starten van het pythonscript ge¨ınitieerd door het aanroepen van my top block().run() op regel 19. In figuur 4.2 wordt een schematische weergave van het stromingsdiagram getoond.
src0 Signal Source 330 Hz sinus
src1 Signal Source 440 Hz sinus
con nect (s
n con
ec
rc0, (d
st, 0 ))
1)) dst, c0, ( t (sr
dst Signal Sink PC speaker
Figuur 4.2: Een schematische weergave van voorbeeld 4.1. De signaal blokken worden in Python verbonden met behulp van de methode connect.
GNU Radio Companion
4.4
21
GNU Radio Companion
In de vorige paragraaf is ingegaan op hoe een GNU Radio applicatie gemaakt kan worden door Python code te schrijven. Het is ook mogelijk om dit op een grafische manier te doen GNU Radio Companion (GRC). Zie figuur 4.3 voor een schermafdruk. In dit programma kan een stromingsdiagram worden opgebouwd door de verschillende signaal blokken uit een menu naar een werkblad te slepen. De blokken worden verbonden door de in -en uitgangen op de signaalblokken aan te klikken. Elk blok heeft een aantal in te stellen parameters.
Figuur 4.3: GNU Radio Companion (GRC). In het linker deel zijn het signaaldiagram en de log te zien. Aan de rechterkant staat een overzicht van de te gebruiken signaalblokken.
Het nadeel aan het gebruik van GRC is dat de gebruiker beperkt wordt in het aantal instellingsmogelijkheden in vergelijking met een direct pythonscript.
4.5
Hulpprogramma’s
GNU Radio bevat een aantal hulpprogramma’s. Dit zijn kant en klare Python scripts die meteen gebruikt kunnen worden om een aantal basistaken met de USRP uit te voeren. • usrp oscope.py – Dit is een digitale oscilloscoop van het binnenkomende signaal op een in te stellen antenne en draaggolf-frequentie. • usrp fft.py – Dit is een FFT van het binnenkomende signaal op een in te stellen antenne en draaggolf-frequentie.
22
De software: GNU Radio • usrp siggen.py – Hiermee wordt een sinus van een in te stellen frequentie op de draaggolf gemoduleerd en uitgezonden op een antenne.
Deze programma’s kunnen ook naast elkaar gedraaid worden, zolang ze maar niet op dezelfde antenne werken.
4.6
Interface met Matlab
Met GNU Radio worden ook een aantal m-scripts meegeleverd. Deze maken het mogelijk om vanuit Matlab te lezen en te schrijven naar een binair formaat, waarmee GNU Radio gesampelde signalen opslaat. Dit kan van groot nut zijn bij het analyseren en generen van signalen. Het generen van een dergelijk binair bestand gebeurt in GNU Radio met het signaalblok gr. file sink () , het lezen gebeurt met gr. file source () . In Matlab kunnen vectoren uit de binaire float-data gecre¨erd worden door het aanroepen van read float binary () . Het wegschrijven van een vector naar het binaire formaat gebeurt met write float binary () Oorspronkelijk zijn de m-scripts voor Octave gemaakt, een open source en grotendeels compatible tegenhanger van het commerci¨ele Matlab [14]. Doordat er kleine verschillen zitten in de script-syntax van beide pakketten, werken niet alle m-scripts van GNU Radio direct in Matlab. Het omzetten van de syntax is echter gemakkelijk. In bijlage C.1 is een aangepaste versie van read float binary () .
4.7
Alternatieven voor GNU Radio
In de literatuur wordt vrijwel uitsluitend gebruikgemaakt van GNU Radio in combinatie met het USRP. Dit is niet zo vreemd, aangezien het USRP oorspronkelijk een initiatief van het GNU Radio project was. Bovendien is GNU Radio een heel compleet pakket, waarmee alle mogelijkheden van het USRP benut kunnen worden. Het is echter ook mogelijk het USRP te gebruiken in combinatie met andere softwarepakketen. Hier volgt een overzicht.
4.7.1
Alternatief 1: Simulink-USRP
Simulink-USRP is een Simulink driver voor het USRP1. Ontwikkeld door deUniversit¨ at Karlsruhe (TH). Deze driver maakt het mogelijk om het USRP1 te integreren met een Simulink/Matlab omgeving. Voor de communicatie met het USRP wordt overigen wel een gedeelte van GNU Radio gebruikt. Officieel wordt alleen windows ondersteund.
Alternatieven voor GNU Radio
4.7.2
23
Alternatief 2: UHD
De Universal Hardware Driver (UHD) is een project van de makers van het USRP, Ettus Research. Het doel is om een cross-platform stuurprogramma en een Application Programming Interface (API) voor huidige en toekomstige producten van Ettus aan te bieden. De UHD kan geheel los van GNU Radio gebruikt worden. Bovendien zal er een dual-license aangeboden worden, die het mogelijk maakt software voor Ettus producten te ontwikkelen die niet onder de GPL licensie valt. Dit is met GNU Radio wel het geval. Momenteel verkeert dit project nog in een experimentele status en alleen het USRP2 wordt ondersteund.
4.7.3
Alternatief 3: OSSIE
Dit is een opensource implementatie van de SCA (Software Communications Architecture). De SCA definieert een open framework dat specificeert hoe hardware -en softwarecomponenten in een Software Defined Radio (SDR) in harmonie samenwerken. Hierdoor wordt de compatibiliteit tussen verschillende SDR systemen en waveforms vergroot. Dit framework wordt gebruikt voor radio communicatie in het Amerikaanse leger. OSSIE ondersteunt momenteel uitsluitend linux. Naast het USRP worden ook andere SDR systemen ondersteunt. Ook OSSIE gebruikt een deel van het GNU Radio project om de interface met het USRP te realiseren.
24
De software: GNU Radio
Hoofdstuk 5
Een radar met het USRP1 In de voorgaande hoofdstukken is uitgelegd wat een SDR is en hoe dit is ge¨ımplementeerd in het USRP1 en GNU Radio. In dit hoofdstuk zal besproken worden welke beperkingen het USRP-platform oplegt bij het maken van een radarsysteem, uitgaande van de gestelde eisen in het Programma van Eisen (bijlage A). In het volgende hoofdstuk worden een implementatie van een eenvoudig radarsysteem in GNU Radio met het USRP1 gegeven worden.
5.1
Algemene beperkingen
Zoals in hoofdstuk 2 gezegd werd zijn er bij het gebruik van het USRP1 een aantal beperkingen: Bandbreedte De ADC beperkt de maximale bandbreedte van het ontvangen signaal tot 32MHz. Het gebruikte RFX2400 dochterbord in dit onderzoek beschikt bovendien over een bandbreedte van niet meer dan 20MHz [2]. Interface De USB2.0 interface met de host computer vormt een volgende bottleneck. Dit brengt de maximale bandbreedte terug tot 8MHz, deze bandbreedte moet bovendien verdeeld worden over het aantal actieve zenders en ontvangers. Isolatie Bij het gebruik van ´e´en USRP voor tegelijkertijd zenden en ontvangen heeft men te maken met een isolatie van slechts 20dB tussen de zender en ontvanger [15]. Schakeltijd Hiermee wordt de snelheid bedoelt waarmee een antenne van verzenden naar ontvangen overgeschakeld kan worden. Uit het radar mono.py programma dat meegeleverd wordt met GNU Radio kan afgeleid worden dat de schakeltijd 76 kloktikken bedraagt. De kloksnelheid van
26
Een radar met het USRP1 het USRP1 bedraagt 64MHz. Dit komt neer op een schakeltijd ts van 4,86ms.
FPGA De FPGA kan gebruikt worden om een deel van het radarsysteem in te implementeren. Het grote voordeel is dat men in de FPGA toegang het signaal direct na de ADC’s kan gebruiken. Dit is 32MHz breed in plaats van de 8MHz via USB. De Altera FPGA van het USRP1 biedt echter slechts beperkte ruimte voor een eigen ontwerp.
5.2
Puls radar
Met puls radar wordt hier een radarsysteem bedoeld waarbij de antenne beurtelings zendt en ontvangt. Eerst wordt er een puls uitgezonden, vervolgens wordt er gewacht op een echo. Met behulp van Rmin = ts c kan worden bepaald dat de minimaal te detecteren afstand 150m zal bedragen. Dit is in strijd met de de eis van minimaal 5m uit het Programma van Eisen (bijlage A).
5.3
FMCW radar
Bij Frequency Modulated Continuous Wave (FMCW) radar wordt continu uitgezonden en ontvangen. Dit betekent ten eerste dat er nadeel ondervonden wordt van de matige isolatie als er gebruik wordt gemaakt van een enkele USRP [15]. Wanneer de radar op de hostcomputer wordt ge¨ımplementeerd moet er rekening gehouden worden met de bandbreedte van de USB-verbinding, deze moet bovendien nog gedeeld worden tussen het verzonden en het ontvangen signaal. Dit betekent 4MHz bandbreedte voor beide signalen. De minimale afstand Rmin die gedetecteerd kan worden met een FMCW radar wordt volgens [6] gegeven door: c Rmin = (5.1) 2f∆ Hierin is c de lichtsnelheid en f∆ is de maximale frequentie in de chirp1 . Wordt er een chirp genomen met een maximale frequentie van 2MHz dan is er een sample frequentie van 4MHz nodig, wat precies door de USB-verbinding past. Als f∆ gelijk wordt gesteld aan een bandbreedte van 2MHz, resulteert dit in een Rmin van 75m. Dit is niet acceptabel voor de beoogde toepassing.
5.4
Mogelijke oplossingen
Het eerder genoemde radar mono.py implementeerd een monostatische radar. Dit radarsysteem maakt gebruik van een eigen FPGA configuratie. Het 1
Een chirp is een golfvorm die bestaat uit een sinus met een lineair oplopende frequentie. De chirp wordt vaak gebruikt bij FMCW radar
Mogelijke oplossingen
27
systeem werkt met ´e´en antenne waarbij steeds geschakeld wordt tussen het verzenden van een chirp, en het ontvangen van reflecties. Vanwege de vertraging van het schakelen geld de minimale afstand van 150m. Er is voor schakelen gekozen vanwege de isolatieproblemen die er anders zijn, wanneer simultaan op dezelfde frequentie verzonden en ontvangen wordt. Door het gebruik van een eigen FPGA configuratie wordt de beperkte bandbreedte van de USB-verbinding omzeilt. In de FPGA kan bijvoorbeeld de chirp gegenereerd worden. Dit vergroot niet alleen de f∆ , maar elimineert ook de USB-bandbreedte die anders nodig zou zijn voor het verzenden. Een andere oplossing voor het isolatieprobleem is het gebruik van meerdere USRP’s, zoals ook gedaan wordt in [15].
5.4.1
Een radar met het USRP2
Wanneer de specificaties van het USRP2 beschouwd worden, kan geconcludeerd worden dat een aantal belangrijke beperking weggenomen worden. De ethernet interface met de host computer signalen door met een bandbreedte tot 25MHz. Dit betekent dat de hele 20MHz band die geleverd wordt door de RFX2400 zonder decimatie kan worden doorgestuurd naar de hostcomputer. De grotere FPGA vergroot bovendien de mogelijkheden van het maken van een eigen FPGA configuratie.
28
Een radar met het USRP1
Hoofdstuk 6
Testresultaten In het vorige hoofdstuk werden de beperkingen van het USRP1 bij het maken van een radarsysteem behandeld. Het doel van dit hoofdstuk is om met de kennis uit de voorgaande hoofdsukken de basis te leggen voor een eenvoudig radarsysteem. Hiervoor zal eerst de werking van de USRP geverif¨ıeerd worden.
6.1
Gebruikte hardware
Voor alle tests is gebruikgemaakt van de volgende hardware: • Een USRP1 revisie 4.5 in combinatie met het RFX2400 revisie 30 transceiver-dochterbord • Een host computer met het besturingssysteem SUSE linux 11 en GNU Radio versie 3.2.2 • Een laptop met een IEEE 802.11 draadloze netwerkkaart. De laptop is gebruikt om het zenden en ontvangen met het USRP te verif¨ıeren, zonder daarvoor gebruik te maken van het USRP zelf.
6.2 6.2.1
Verificatie van het ontvangen en zenden Ontvangen
Om te kijken of het ontvangen van een signaal met de USRP1 goed lukte is gebruiktgemaakt van usrp fft .py. Hiermee wordt de USRP1 in ontvangmodus gezet, en wordt er een FFT analyse weergegeven op het scherm van de host computer. Het volgende commando werd gebruikt om usrp fft .py te starten op een frequentie van 2412 MHz: u s r p f f t . py −f 2412 e6
30
Testresultaten
Bij deze proef is verder gebruikt gemaakt van een laptop die een draadloze netwerkverbinding had met het universiteitsnetwerk. Dit netwerk opereert op een frequentie van 2412 MHz, het eerste WiFi kanaal [16]. Op de laptop, die zich pal naast het USRP bevindt, wordt met wget een bestand van 1000 MB gedownload: wget −O / dev / z e r o h t t p : / / s p e e d t e s t . bbned . n l / download / file1000mb . bin
In figuur 6.1 worden schermafdrukken weergegeven van wanneer de laptop download (a) en wanneer laptop geen netwerkactiviteit verzoorzaakt (b). Er is een duidelijk verschil van 15 dB in de amplitude van de frequenties. Ook de mate waarin het spectrum op en neer springt is veel groter wanneer er gedownload wordt.
(a) Er wordt niet gedownload op de laptop
(b) Er wordt gedownload op de laptop
Figuur 6.1: Het ontvangen van een rustig WiFi kanaal (a) en een actief WiFi kanaal (b) met het USRP1. Een verschil van ongeveer 15 dB.
6.2.2
Zenden
Het uitzenden van een signaal is op een vergelijkbare manier getest als het ontvangen. Er wordt met het USRP een stoorsignaal uitgezonden op de frequentie van het draadloze netwerk:
Een eenvoudig radarsysteem
31
u s r p s i g g e n . py −f 2412 e6 −T A −−s i n e −w 1 e6
Dit laat het USRP een draaggolf uitzenden van 2412 MHz met daarop gemoduleerd een sinus van 1 MHz. Zie figuur 6.2 voor het frequentie spectrum van dit signaal.
Figuur 6.2: Spectrum van het uitgezonden signaal om WiFi mee te storen
Op de laptop word wederom een het bestand van 1000 MB gedownload. Figuur 6.3 laat zien wat er met de netwerkverbinding op de laptop gebeurt wanneer het stoorsignaal wordt uitgezonden.
Figuur 6.3: Het downloaden van een bestand via WiFi. Met pijlen is aangegeven wanneer het uitzenden van het stoorsignaal begint en stopt. De verticale as geeft de downloadsnelheid weer (0-900 kb/s), de horizontale as een tijdverloop van 15 s.
Hieruit kan geconcludeerd worden dat het zenden en ontvangen succesvol verloopt. De effecten van het zenden zijn namelijk zichtbaar op draadloze netwerk apparatuur in de directe omgeving. Andersom is ook de activiteit van de netwerkapparatuur met het USRP zichtbaar te maken.
6.3
Een eenvoudig radarsysteem
Na het verifi¨eren van de werking van de USRP1 kan de basis voor een eenvoudig radarsysteem gelegd worden. Het radarsysteem is van het type Frequency Modulated Continious Wave (FMCW) en werkt met een chirp. Voor meer informatie over de keuze voor de FMCW-radar en de uitgezonden golfvorm wordt doorverwezen naar [6].
32
Testresultaten
Het radarsysteem wordt in twee delen ge¨ımplementeerd. Dit maakt het makkelijker om het eventueel op twee verschillende USRP’s uit te voeren. Met slechts ´e´en USRP is er eigenlijk te weinig isolatie om het systeem goed te laten werken. Aangezien er slechts ´e´en USRP1beschikbaar was, is het toch geprobeerd dit systeem op een enkele USRP1 uit te voeren. Voor het radarsysteem wordt een golfvorm uit een bestand gelezen en uitgezonden met GNU Radio. Tegelijkertijd wordt met het USRP een signaal ontvangen en weggeschreven naar een bestand. De chirp wordt met Matlab gegenereerd. In bijlage C.2 staat een m-script om een chirp te genereren. Deze chirp wordt vervolgens uitgezonden met send.py (Bijlage C.3), en ontvangen met receive .py (Bijlage C.4). Dit laatste script slaat het ontvangen signaal op in een binary bestand, dat later met Matlab geanalyseerd kan worden om de echo’s eruit te filteren.
Figuur 6.4: Spectrum van het uitgezonden chirp signaal. De twee grote pieken volgen een periodieke beweging. Hier geldt fc = 2412 MHz en f∆ = 2MHz
In figuur 6.4 staat een momentopname van het frequentie spectrum van een uitgezonden en direct weer ontvangen chirp. De twee pieken bewegen periodiek heen en weer tussen de draaggolf-frequentie fc naar de frequenties fc ± f∆ , waarbij f∆ de hoogste frequentie van de chirp is. Wanneer er een reflectie optreedt geeft dit een herhaling van de uitgezonden chirp in het ontvangen, maar dan met een tijdvertraging. Die tijdvertraging is een maat voor de afstand tot het reflecterende object. Hiermee is de basis gelegd voor een eenvoudig radarsysteem op basis van de USRP1.
Hoofdstuk 7
Conclusie In deze thesis is onderzocht hoe het USRP1, een implementatie van de SDR, in combinatie met GNU Radio gebruikt kan worden om een radarsysteem mee te maken. Het USRP1 is een flexibel platform om radiosystemen mee te implementeren. De belangrijkste componenten van het USRP1 zijn de ADC/DAC’s, de FPGA en de USB2.0-controller. Alhoewel wel de basis voor is gelegd voor een FMCW radar, is het implementeren van een radarsysteem met de gewenste prestaties niet gelukt. Dit is grotendeels te wijten aan de hardware beperkingen van het USRP1. Zo laat de USB 2.0 interface niet voldoende bandbreedte door en is de schakeltijd tussen zenden en ontvangen te lang. Ook laat de isolatie tussen de zender en de ontvanger te wensen over. Dit maakt simultaan zenden en ontvangen op dezelfde frequentie onaantrekkelijk. Voor radartoepassingen in het bijzonder is ´e´en enkele USRP1 dus niet ideaal. Een mogelijke oplossing voor het probleem van de isolatie is het gebruik van meerdere USRP’s. Het USRP2 heft daarnaast de beperkingen op de interface-bandbreedte op, en is daarom interessant voor een vervolgstudie.
34
Conclusie
Literatuurlijst [1] T. Tuukkanen, C. Serra, J. Talvitie, en R. van Heijster, “Workshop wwe-9: How will software defined radio change the future of radio communication?” Handout, oktober 2008. [2] L. K. Patton, “A gnu radio based software-defined radar,” Master’s thesis, Wright State University, 2007. [3] J. G. Proakis en D. G. Manolakis, Digital Signal Processing, 4e ed. Pearson Education, 2007. [4] Universal Software Radio Peripheral: The Foundation for Complete Software Radio Systems, Product brochure, Ettus Research. [5] USRP2: The Next Generation of Software Radio Systems, Product brochure, Ettus Research. [6] M. Slotema, F. An, en I. Eroglu, “Haalbaarheidssstudie naar het gebruik van de software-defined radar vooor een adaptieve cruisecontrol,” Bachelor’s Thesis, Technische Universiteit Delft, 2010. [7] M. Ettus, USRP User’s and Developer’s Guide, Ettus Research. [8] F. A. Hamza, The USRP under 1.5X Magnifying Lens!, 2008. [9] (2010, Mei) Gnu radio. [Online]. Beschikbaar: http://en.wikipedia. org/wiki/GNU\ Radio [10] E. Blossom. (2010, Mei) Exploring gnu radio. [Online]. Beschikbaar: http://www.gnu.org/software/gnuradio/doc/exploring-gnuradio.html [11] N. Manicka, “GNU RADIO TESTBED,” Master’s thesis, University of Delaware, 2007. [12] (2010, Mei) Gnu radio 3.2svn c++ api: Module index. [Online]. Beschikbaar: http://gnuradio.org/doc/doxygen/modules.html [13] (2010, Mei) Python v2.6.5 documentation. [Online]. Beschikbaar: http://docs.python.org/
36
Literatuurlijst
[14] (2008, Mei) About octave. [Online]. Beschikbaar: http://www.gnu. org/software/octave/about.html [15] B. E. Godana, “Human movement characterization in indoor environment using gnu radio based radar,” Master’s thesis, Technische Universiteit Delft, 2009. [16] IEEE 802.11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, Part 11, 2007.
Bijlage A
Programma van Eisen Hier wordt het programma van eisen beschreven voor een radarsysteem op basis van een Software Defined Radio (SDR) voor automotive toepassingen. Dit is een nieuw product bedoelt voor de verkoop aan toeleveranciers van auto- en vrachtwagenfabrikanten. • Eisen vanuit het beoogde gebruik 1. Het systeem moet een voorganger (auto) detecteren op de openbare weg. 2. Het systeem moet de snelheid van en de afstand tot de voorganger bepalen. • Eisen vanuit de de ecologische situering van het systeem in de omgeving 1. Het systeem moet voldoen aan de IEEE C95.1-1991 standaard voor uitgezonden vermogen. 2. Het systeem moet betrouwbaar zijn. • Ontwerpeisen 1. Het systeem moet verbonden kunnen worden met de boordcomputer van de auto. 2. Het systeem moet op frequenties uit de ISM-band werken. 3. Het systeem moet de data aanbieden volgens de IEEE 754 standaard voor floating point getallen. 4. Het systeem moet in een auto passen, de afmetingen moeten kleiner dan 20 x 20 cm2 zijn. 5. Het systeem moet een nauwkeurigheid van 50 cm hebben bij het bepalen van de afstand tot en de snelheid van de voorligger.
38
Programma van Eisen 6. Van 5 tot 150 m moet het systeem de afstand tot de voorligger kunnen bepalen. 7. Het systeem moet met eenvoudige middelen te monteren en demonteren zijn. 8. Het systeem moet via USB met een computer te verbinden zijn t.b.v software updates. 9. De levensduur van het systeem moet bij normaal gebruik minimaal 5 jaar bedragen. 10. Het systeem moet werken op een spanning van 6V DC. 11. Het systeem moet voor minimaal 90% uit recyclebare materialen bestaan. • Eisen met betrekking tot het eventueel te ontwikkelen productiesysteem 1. Het systeem moet een nauwkeurigheid van 10 cm hebben. 2. Het systeem kan niet alleen de afstand tot de voorligger bepalen, maar ook de afstand tot de achterligger en aan beide zijden rijdende auto’s. 3. Het systeem mag maximale afmetingen hebben van 10 x 10 cm2 . • Eisen met betrekking tot het te ontwikkelen liquidatiesysteem 1. De gebruikte materialen zullen duurzaam zijn. 2. Er zullen zo min mogelijk voor het milieu schadelijke stoffen in het product verwerkt worden. • Eisen vanuit bedrijfsstrategische, marketing- en verkooptechnische omstandigheden 1. De producten zullen eerst in high-end autos worden ingevoerd, daarna ook in medium- en low-end autos. 2. De productiekosten van het product moeten laag zijn.
Bijlage B
Installatie GNU Radio In deze bijlage zal het installeren van GNU Radio op een computer met SuSE- of Ubuntu linux toegelicht worden. De installatie op Windows of Mac OS X is ook mogelijk, maar dit wordt hier niet besproken.
B.1
Ubuntu 10.04
Het gemakkelijkste is de installatie van GNU Radio op Ubuntu linux. Binary pakketten voor GNU Radio zijn aanwezig in de standaard pakketbronnen. Ook bestaat er een pakketbron van de ontwikkelaars van GNU Radio zelf1 . Na het openen van een terminal dient het volgende commando ingevoerd te worden om GNU Radio, de GNU Radio Companion en alle afhankelijkheden te installeren: sudo apt−g e t i n s t a l l g n u r a d i o gnuradio −companion
Om het USRP1 vervolgens te kunnen gebruiken onder een normale gebruikersaccount, moet deze gebruiker toegevoegd worden aan de usrp-groep: sudo addgroup
u s r p
B.2
SuSE 11.0
De labcomputer die gebruikt is voor dit project draaide SuSE linux 11.0. Helaas zijn hier geen binaries van GNU Radio voor beschikbaar. Dit betekent dat GNU Radio vanaf de broncode gecompileerd moet worden. Voordat GNU Radio zelf ge¨ınstalleerd kan worden moeten er een aantal afhankelijkheden ge¨ınstalleerd worden. Dit gebeurt grotendeels met het YAST2 pakketbeheer in SuSE linux. Start YAST2 met: sudo / s b i n / y a s t 2 1
http://gnuradio.org/redmine/wiki/gnuradio/DebianPackages
40
Installatie GNU Radio
Vervolgens dienen de volgende pakketten aangevinkt en ge¨ınstalleerd te worden: • • • • • • •
autoconf automake libtool make python-devel swig fftw3-devel
• • • • • • •
cppunit-devel boost-devel guile gsl-devel python-lxml python-gtk libxslt-python
• • • • •
libusb-devel 0.1 bison flex python-wxGTK python-wxGTK
De volgende pakketten zijn niet in YAST2 beschikbaar en moeten daarom los ge¨ınstalleerd worden. numpy (http://numpy.scipy.org/). Installeer na extractie met sudo python s e t u p . py i n s t a l l } . cheetah (http://www.cheetahtemplate.org/). Installeer na extractie met sudo python s e t u p . py i n s t a l l } . SDCC (http://sdcc.sourceforge.net/) versie 2.6.0 wordt aanbevolen. Installeer na extractie met . / c o n f i g u r e && make && sudo make i n s t a l l
Hierna kan GNU Radio zelf ge¨ınstalleerd worden. Download de broncode van http://gnuradio.org/redmine/wiki/gnuradio/Download. Na het uitpakken kan GNU Radio ge¨ınstalleerd worden met behulp van: . / c o n f i g u r e && make && sudo make i n s t a l l
Nu dienen nog de volgende symbolic links aangemaakt te worden: l n −s / u s r / l o c a l / l i b 6 4 / l i b g n u r a d i o p −u s r p . s o . 0 / u s r / l i b 6 4 / l i b g n u r a d i o p −u s r p . s o . 0 l n −s / u s r / l o c a l / l i b 6 4 / l i b u s r p . s o . 0 / u s r / l i b 6 4 / l i b u s r p . s o . 0
Tot slot kan een gebruiker, anders dan de root, toestemming verleend worden om het usrp te mogen gebruiken met: sudo groupadd u s r p sudo usermod −G u s r p echo ’ACTION==”add” , BUS==” usb ” , SYSFS{ idVendor}==” f f f e ” , SYSFS{ i d P r o d u c t}==” 0002 ” , GROUP:=” u s r p ” , MODE:=” 0660 ” ’ > tmpfile sudo chown r o o t . r o o t t m p f i l e sudo mv t m p f i l e / e t c / udev / r u l e s . d/10− u s r p . r u l e s sudo udevadm c o n t r o l −−r e l o a d −r u l e s
Indien er gebruikt wordt gemaakt van een niet-lokaal gebruikersaccount, zoals het netid op de TU Delft, kan de gebruiker het commando sg usrp gebruikt worden in plaats van usermod.
Bijlage C
Scripts C.1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
write float binary.m
% Copyright 2001 Free S o f t w a r e Foundation , I n c . % % This f i l e i s p a r t o f GNU Radio % % GNU Radio i s f r e e s o f t w a r e ; you can r e d i s t r i b u t e i t and/ o r modify % i t under t h e terms o f t h e GNU G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d by % t h e Free S o f t w a r e Foundation ; e i t h e r v e r s i o n 3 , o r ( a t your o p t i o n ) % any l a t e r v e r s i o n . % % GNU Radio i s d i s t r i b u t e d i n t h e hope t h a t i t w i l l be useful , % but WITHOUT ANY WARRANTY; w i t h o u t even t h e i m p l i e d warranty o f % MERCHANTABILITY o r FITNESS FOR A PARTICULAR PURPOSE. See the % GNU G e n e r a l P u b l i c L i c e n s e f o r more d e t a i l s . % % You s h o u l d have r e c e i v e d a copy o f t h e GNU G e n e r a l P u b l i c License % a l o n g with GNU Radio ; s e e t h e f i l e COPYING. I f not , write to % t h e Free S o f t w a r e Foundation , I n c . , 51 F r a n k l i n S t r e e t , % Boston , MA 02110 −1301 , USA. % % M o d i f i e d t o work with Matlab f u n c t i o n v = w r i t e f l o a t b i n a r y ( data , f i l e n a m e ) %% u s a g e : w r i t e f l o a t b i n a r y ( data , f i l e n a m e )
42 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Scripts %% %% %%
open f i l e n a m e and w r i t e data t o i t a s 32 b i t f l o a t s
m = nargchk ( 2 , 2 , n a r g i n ) ; i f (m) u s a g e (m) ; end ; f = f o p e n ( f i l e n a m e , ’wb ’ ) ; i f ( f < 0) v = 0; else v = f w r i t e ( f , data , ’ f l o a t ’ ) ; fclose ( f ) ; end ;
C.2
chirp.m
1 % c h i r p .m 2 % G e n e r a t e s a c h i r p s i g n a l f o r u s e with t h e GNU Radio project 3 % Written by Ravi P e t e r s and Marcel Slotema 4 5 clear all ; 6 close all ; 7 clc ; 8 9 % The maximum f r e q u e n c y d e v i a t i o n o f t h e c h i r p [ Hz ] 10 d e l t a f r e q u e n c y = 2 e6 ; 11 % The f r e q u e n c y o f f s e t ( f r e q u e n c y a t t = 0 ) [ Hz ] 12 o f f s e t f r e q u e n c y = 0 ; 13 % The a m p l i t u d e o f t h e s i n e wave 14 a m p l i t u d e = 1 6 0 0 0 ; 15 % The sample r a t e t h a t i s used [ s a m p l e s / s e c ] 16 s a m p l e r a t e = 4 e6 ; 17 % The d u r a t i o n o f t h e c h i r p ( r i s i n g and f a l l i n g ) [ s ] 18 t i m e f r a m e = 1 ; 19 % The f i l e n a m e t o put t h e c h i r p i n 20 o u t p u t f i l e = ’ fmcw . dat ’ ; 21 22 h a l f t i m e = t i m e f r a m e / 2 ; % The d u r a t i o n o f h a l f a chirp 23 f r e q u e n c y i n c r e a s e = d e l t a f r e q u e n c y / h a l f t i m e ; % The f r e q u e n c y i n c r e a s e p e r s e c o n d 24 N = h a l f t i m e ∗ s a m p l e r a t e ; % The number o f s a m p l e s f o r half a chirp 25 26 t = l i n s p a c e ( 0 , t i m e f r a m e , 2 ∗ N ) ; % Generating the
send.py
43
time s a m p l e s 27 28 29 30 31 32 33 34 35 36
f = o f f s e t f r e q u e n c y + f r e q u e n c y i n c r e a s e ∗ t ( 1 :N ) ; Ca lcu lat ing the r i s i n g frequency
%
y = a m p l i t u d e ∗ s i n ( 2 ∗ p i ∗ f . ∗ t ( 1 :N ) ) ; % G e n e r a t i n g h a l f t h e s i n e wave y = [y −f l i p l r ( y ) ] ; % Flipping the s i n e to c r e a t e the falling frequencies write float binary ( y, o u t p u t f i l e ) ; % Writing t h e s i n e wave t o t h e b i n a r y output f i l e , f o r u s e with GNU Radio figure ( 1 ) ; plot ( t , y ) ;
C.3
send.py
1 #! / u s r / b i n / env python 2 3 #Transmits s i g n a l from f i l e with USRP, f o r u s e with t h e GNU Radio p r o j e c t 4 #Written by Ravi P e t e r s and Marcel Slotema 5 6 from g n u r a d i o import g r 7 from g n u r a d i o import u s r p 8 9 c l a s s my top block ( gr . top block ) : 10 def init ( self ) : 11 gr . top block . init ( self ) 12 13 # set variables 14 i n t e r p o l a t i o n = 32 # 128MHz/32 = 4MS/ s 15 ampl = 1 16 c e n t e r f r e q = 2412 e6 17 t x g a i n = 40 18 i n p u t f i l e = ’ fmcw . dat ’ # c o n t a i n s e . g . a c h i r p 19 20 # create f i l e source 21 t x s r c = gr . f i l e s o u r c e ( gr . s i z e o f f l o a t , i n p u f i l e , True ) 22 23 # c r e a t e f l o a t −complex t x c o n v e r t e r 24 tx conv = gr . f l o a t t o c o m p l e x ( ) 25 26 # c r e a t e usrp sink 27 t x d s t = usrp . s i n k c ( ) 28 tx dst . set interp rate ( interpolation ) 29 tx subdev spec = usrp . p i c k t x s u b d e v i c e ( t x d s t )
44
Scripts
30 31 32 33 34 35 36 37 38 39 40 41 42
tx subdev = usrp . s e l e c t e d s u b d e v ( tx dst , tx subdev spec ) t x s u b d e v . s e t e n a b l e ( True ) tx subdev . s e t g a i n ( tx gain ) t x d s t . tune ( 0 , tx subdev , c e n t e r f r e q ) # connect f i l e source to usrp sink via c o n v e r t e r s e l f . c o n n e c t ( t x s r c , t x c on v , t x d s t ) if
name == ’ m a i n ’ : try : m y t o p b l o c k ( ) . run ( ) except KeyboardInterrupt : pass
C.4
receive.py
1 #! / u s r / b i n / env python 2 3 #Writes USRP r e c e i v e d s i g n a l t o a f i l e , f o r u s e with t h e GNU Radio p r o j e c t 4 #Written by Ravi P e t e r s and Marcel Slotema 5 6 from g n u r a d i o import g r 7 from g n u r a d i o import u s r p 8 9 c l a s s my top block ( gr . top block ) : 10 def init ( self ) : 11 gr . top block . init ( self ) 12 13 # set variables 14 d e c i m a t i o n = 8 # t h i s means a sample r a t e o f 32MHz/8 = 4MS/ s 15 c e n t e r f r e q = 2450 e6 16 r x a n t e n n a = ’RX2 ’ 17 r x g a i n = 40 18 o u t p u t f i l e = ’ c h i r p o u t . dat ’ 19 20 # c r e a t e usrp sink 21 r x s r c = usrp . s o u r c e c ( ) 22 r x s r c . s e t d e ci m r a te ( decimation ) 23 rx subdev spec = usrp . p i c k r x s u b d e v i c e ( r x s r c ) 24 rx subdev = usrp . s e l e c t e d s u b d e v ( r x s r c , rx subdev spec ) 25 rx subdev . s e l e c t r x a n t e n n a ( rx antenna ) 26 rx subdev . s e t g a i n ( rx gain ) 27 r x s r c . tune ( 0 , rx subdev , c e n t e r f r e q ) 28 29 # create f i l e sink
receive.py 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
r x d s t = gr . f i l e s i n k ( gr . s i z e o f f l o a t , o u t p u t f i l e ) # c r e a t e complex−f l o a t c o n v e r t e r rx conv = gr . c o m p l e x t o f l o a t ( ) # c o n n e c t u s r p s i n k t o complex−f l o a t c o n v e r t e r s e l f . connect ( rx src , rx conv ) # c o n n e c t complex−f l o a t c o n v e r t e r t o t h e f i l e s i n k s e l f . c o n n e c t ( rx con v , r x d s t ) if
name == ’ m a i n ’ : try : m y t o p b l o c k ( ) . run ( ) except KeyboardInterrupt : pass
45