• No results found

Binary FSK-modulation

N/A
N/A
Protected

Academic year: 2021

Share "Binary FSK-modulation"

Copied!
55
0
0

Loading.... (view fulltext now)

Full text

(1)

Department of Science and Technology

Institutionen för teknik och naturvetenskap

Linköping University Linköpings Universitet

SE-601 74 Norrköping, Sweden

601 74 Norrköping

LiU-ITN-TEK-A--09/026--SE

Binär FSK-modulation

Oscar Eriksson

2009-05-11

(2)

LiU-ITN-TEK-A--09/026--SE

Binär FSK-modulation

Examensarbete utfört i elektronikdesign

vid Tekniska Högskolan vid

Linköpings universitet

Oscar Eriksson

Handledare Jonas Persson

Examinator Ole Pedersen

(3)

Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare –

under en längre tid från publiceringsdatum under förutsättning att inga

extra-ordinära omständigheter uppstår.

Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner,

skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för

ickekommersiell forskning och för undervisning. Överföring av upphovsrätten

vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av

dokumentet kräver upphovsmannens medgivande. För att garantera äktheten,

säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ

art.

Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i

den omfattning som god sed kräver vid användning av dokumentet på ovan

beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan

form eller i sådant sammanhang som är kränkande för upphovsmannens litterära

eller konstnärliga anseende eller egenart.

För ytterligare information om Linköping University Electronic Press se

förlagets hemsida

http://www.ep.liu.se/

Copyright

The publishers will keep this document online on the Internet - or its possible

replacement - for a considerable time from the date of publication barring

exceptional circumstances.

The online availability of the document implies a permanent permission for

anyone to read, to download, to print out single copies for your own use and to

use it unchanged for any non-commercial research and educational purpose.

Subsequent transfers of copyright cannot revoke this permission. All other uses

of the document are conditional on the consent of the copyright owner. The

publisher has taken technical and administrative measures to assure authenticity,

security and accessibility.

According to intellectual property law the author has the right to be

mentioned when his/her work is accessed as described above and to be protected

against infringement.

For additional information about the Linköping University Electronic Press

and its procedures for publication and for assurance of document integrity,

please refer to its WWW home page:

http://www.ep.liu.se/

(4)

Abstract

This report is written to a masters thesis project at Linköping University. The project has been executed at a small company in Norrköping, Field Embedded Com-munications AB.

The report covers the development of a software repository for MSK modulation. The code is developed in a modular fashion in order to increase flexibility thus making the code adaptible for different hardware platforms.

The report contains information about:

• Modulation design • Software simulations • Hardware tests

No code is included for competitional reasons.

Sammanfattning

Denna rapport är skriven till ett examensarbete på 30hp utfört vid Linköpings Uni-versitet. Arbetet har utförts på ett litet företag i Norrköping, Field Embedded Com-munications AB.

Rapporten behandlar utvecklingen av ett mjukvarubibliotek för modulation av typen MSK. Koden är modulärt uppbyggd för maximal flexibilitet då den enkelt ska kunna anpassas för olika hårdvaruplattformar.

De delar som presenteras är:

•••• Design av modulationsalgoritmer • Simulationer av algoritmerna • Test i hårdvara

Av konkurrensskäl är ingen programmeringskod bifogad. i

(5)
(6)

Innehåll

1 Inledning 1 1.1 Bakgrund . . . 1 1.2 Syfte . . . 1 1.3 Metod . . . 2 1.4 Designdirektiv . . . 2 1.5 Avgränsningar . . . 2 2 Teori 3 2.1 Signaler . . . 3 2.1.1 Brus . . . 3 2.1.2 Spektraltäthet . . . 4 2.1.3 Ortogonalitet av signaler . . . 4 2.1.4 Sampling . . . 5 2.1.5 CODEC . . . 5 2.2 Datakommunikation . . . 6 2.2.1 Kommunikationssystem . . . 6 2.2.2 Modem . . . 7 2.2.3 Mjukvaruradio . . . 7

2.2.4 Bitar och symboler . . . 8

2.2.5 Basband . . . 8

2.3 Digital modulation . . . 8 iii

(7)

2.3.1 FSK . . . 9 2.3.2 MSK . . . 9 2.4 Superheterodyn arkitektur . . . 10 3 Design 13 3.1 Hårdvara . . . 13 3.2 Mjukvara . . . 14 3.3 Modulation . . . 14 3.4 Sändare . . . 15 3.5 Mottagare . . . 16 3.5.1 Synkronisering . . . 16 3.5.2 Avkodning . . . 17 4 Simulering 19 4.1 Bruskänslighet av demodulering . . . 19 4.1.1 Beskrivning av simulation . . . 20 4.1.2 Simulationsresultat . . . 20 4.2 Bruskänslighet av synkronisering . . . 21 4.2.1 Beskrivning av simulationen . . . 21 4.2.2 Simulationsresultat . . . 22

4.2.3 Beskrivning av simulation med lågpassfilter . . . 23

4.2.4 Simulationsresultat med lågpassfilter . . . 24

4.3 Drivning . . . 25 4.3.1 Beskrivning av simulationen . . . 25 4.3.2 Simulationsresultat . . . 25 5 Implementation 29 5.1 Laboreringsplattform . . . 29 5.1.1 Tait-radio . . . 29 5.1.2 ARM7 . . . 30

(8)

5.2 Test mellan två datorer . . . 31

5.2.1 Sändare . . . 31

5.2.2 Mottagare . . . 32

5.2.3 Resultat . . . 32

5.3 Test mellan dator och mikrokontroller . . . 33

5.3.1 Anpassning av mjukvara . . . 33

5.3.2 Processoranvändning . . . 33

5.3.3 Resultat . . . 35

6 Rekommendationer för fortsatt arbete 37 7 Slutsatser 39 Nomenklatur 41 Förteckningar 43 Litteraturförteckning 45

(9)
(10)

Kapitel 1

Inledning

Denna rapport är skriven till ett examensarbete på 30hp utfört vid Linköpings Universitet. Arbetet har utförts på ett litet företag i Norrköping, Field Embedded Communications AB. Företaget grundades 2007 i Norrköping av Henrik Bergström och Jonas Persson. Fields huvudsakliga verksamhetsområde är elektronik- och system-konstruktion inom inbyggda system, telemetri och radioteknik.

1.1

Bakgrund

Genom att utveckla ett mjukvarubibliotek för modulering kan en generell processor med några få kringkomponenter ersätta relativt dyra kretsar för modulation. Detta reducerar komponentkostnader samt sparar utrymme på mönsterkort. Att utföra modulation i mjukvara medför även ökad flexibilitet då färdigtillverkade kretsar vanligen är låsta till exempelvis en viss typ av modulation.

1.2

Syfte

Rapporten behandlar arbetet att ta fram ett generellt mjukvarubibliotek för att modulera och demodulera data med FSK modulation. Koden ska vara modulärt uppbyggt för att enkelt kunna användas av olika hårdvaruplattformar. Den mod-ulerade signalen ska sändas via radio av superheterodyn arkitektur, således kommer modulationen genomföras på basbandssignalen.

(11)

1.3

Metod

Arbetet att ta fram mjukvarubiblioteket har delats in i tre delar:

• Design och programmering • Simulation

• Tester i hårdvara

Vid det första steget valdes parametrar rörande modulation och arkitektur av program-varan. Denna simulerades sedan för att säkerställa funktionalitet. Till sist utfördes praktiska test i hårdvara för att kontrollera funktion i praktiken.

Under arbetets gång utfördes dessa delar iterativt då fel och buggar upptäcktes i senare steg.

1.4

Designdirektiv

• Programmeringskoden ska vara modulärt uppbyggd då det underlättar för

vidare utveckling

• Programbiblioteket ska med smärre modifikationer kunna exekveras på olika

hårdvaruplattformar

• Vid utveckling ska open source programvara användas

1.5

Avgränsningar

• Endast binär signalering ska nyttjas

• Enbart skriva mjukvara för fysiska lagret enligt OSI modellen, vilket innebär:

Ingen kollisionshantering

Ingen adressering

Ingen vidarelänkning

Ingen återsändning

• Datatransmissionen är okrypterad • Ingen felkorrigeringsalgoritm används

(12)

Kapitel 2

Teori

I detta kapitel kommer bakgrundsteori att behandlas, mest för att underlätta för läsaren. De begrepp som kommer diskuteras, kommer diskuteras i korthet, vilket innebär att de är långt ifrån fullständiga. Om mer information önskas, hänvisas läsaren till att på egen hand studera respektive källa.

2.1

Signaler

2.1.1

Brus

En av de största orsakerna till databortfall i trådlösa överföringar är brus. Brus är en slumpartad process som kan bero på flera källor, tex: termiskt brus genererat av RF-komponenter och brus från atmosfärisk strålning. Signalen kommer således påverkas av brus både i luften och i hårdvaran [6]. Omvandlingen från analog till digital signal kommer även den att introducera brus i form av samplingsbrus [8], mer om det i 2.1.4.

Bruset kommer uppträda som en slumpartad spänning eller ström, vilket leder till att det inte går att förutsäga dess värde. Av den anledningen måste brus ses med statis-tiska mått. Vanligt är att brus anges i effektivvärde för ett specifikt frekvensintervall. Generellt kan brus iakttagas som en statistisk fördelning över frekvensinnehållet i brussignalen, detta kallas för brusets spektraltäthet och anges i datablad ofta som

EN

B där EN är brusets medelvärde och B är brusbandbredden. Detta får då

följak-tligen enheten √V

Hz.

Då brusets amplitud varierar slumpartat och är normalfördelat brukar det kallas för vitt brus. Anledningen till att det kallas för just vitt brus är att spektraltätheten är

(13)

likformigt fördelad i frekvensplanet, på samma sätt som vitt ljus innehåller samtliga färger. Andra namn på vitt brus är termiskt brus och Johnson-brus. Det vita bruset uppkommer på grund av elektriska laddningars värmerörelser i ledarmaterialet, då atomer och elektroner slumpvis byter position på grund av materialets temperatur. Ett vanligt och användbart sätt att presentera brus är förhållandet mellan signal-styrka och brussignal-styrka, detta kallas för signalbrusförhållande eller på engelska Signal

to Noice Ratio, SNR. Detta definieras som kvoten mellan signal och brus och anges vanligen i decibel. [4] SN R = Psignal Pbrus = U 2 signal U2 brus (2.1a) SN RdB = 10 · log Psignal Pbrus = 20 · log Usignal Ubrus (2.1b)

2.1.2

Spektraltäthet

En signals energi- eller effektdistribution i frekvensdomänen kallas för spektraltäthet. Detta koncept är användbart då signaler filtreras. [9]

2.1.3

Ortogonalitet av signaler

En mängd signaler {ψj(t)} som uppfyller kravet,

T Z 0 ψj(t)ψk(t)dt = Kjδjk , där δjk= ( 1 då j = k 0 annars (2.2)

sägs vara ortogonala. När funktionerna {ψj(t)} är normaliserade så att Kj = 1, sägs

signalerna vara ortonormala.

En anledning att fokusera på ortogonala signaler är att dessa, likt enhetsvektorer, kan användas som basvektorer för att spänna upp ett signalrum. Alla signaler kan på så vis uttryckas som en linjärkombination utav basvektorer, vilket nyttjas i signal-mottagararkitekturer för att detektera olika signaler. Rent teoretiskt behöver bara vektorerna ligga i olika plan för att åstadkomma detta, men då de är ortogonala kommer det euklidiska avståndet mellan dessa att vara maximalt. Det leder till att de inkommande signalerna med större säkerhet kan bestämmas, då det euklidiska avståndet mellan basvektorerna (referensfrekvenserna) är så stort som möjligt. [9]

(14)

2.1 Signaler 5

2.1.4

Sampling

Då många signaler är analoga, krävs att dessa omvandlas till digitala då de ska behandlas i en processor. Processen att omvandla en kontinuerlig-tidssignal till en diskret-tidssignal kallas för sampling. Det innebär att en analog signal avläses up-prepade gånger med ett känt tidsintervall.

För att kunna lagra och behandla dessa mätvärden, eller sampels, krävs att de kvan-tiseras till kända nivåer. Antalet nivåer som används brukar kallas för ordlängd eller upplösning. Eftersom att den riktiga signalen kommer avrundas till närmaste kända nivå, innebär det att den samplade signalen kommer vara felaktig. Detta fel kan ses som en typ av brus som brukar kallas för kvantiseringsbrus. Om upplösningen ökar kommer således kvantiseringsbruset att minska.

Samplingsintervallet, eller samplingstakten, bestäms utav frekvensinnehållet i sig-nalen som samplas. Enligt Shannons samplingsteorem krävs en samplingstakt på

minst dubbla frekvensen av högsta frekvensbidraget i signalen, fM, för att kunna

representera signalen korrekt. [8]

fs≥ 2fM (2.3)

Enligt [9] och många andra källor kallas detta teorem för Nyquist kriteriet.

Om Shannonkriteriet i ekvationen 2.3 inte uppfylls, kommer en effekt kallad

vikn-ingseffekten att introduceras. Kort innebär det att frekvenser högre än halva

sam-plingstakten kommer ge upphov till felaktiga frekvenskomponenter i signalen. Ob-servera att Shannonkriteriet bara ger minsta möjliga samplingsfrekvens, i verk-ligheten är oftast en högre samplingstakt önskvärd.

Den parameter som oftast bestämmer samplingstakt och upplösning är beräkning-shastigheten i hårdvara. Om upplösningen ökar, medför det ökade beräkningstider då talen blir större. Om istället samplingstakten ökar kommer behandlingstiden av varje sampel minska, vilket ställer krav på snabbare beräkningar. [8]

2.1.5

CODEC

CODEC står för CODer - DECoder, vilket betyder kodning och avkodning. Den fungerar som ett gränssnitt mellan analoga- och digitala signaler och är primärt utvecklad för telekommunikation. En CODEC är i stort sett uppdelad i två kanaler, en för att omvandla analog till digital, ADC, och en för att omvandla digital till analog, DAC. Ett blockschema för att tydliggöra en CODEC visas i figur 2.1. För att förhindra vikningsdistortion är ett lågpassfilter monterat innan ADC:n och ett rekonstruktionsfilter är monterat efter DAC:en. Rekonstruktionsfiltret är ett låg-passfilter som har till uppgift att jämna till utsignalen och förhindra uppkomsten av felaktiga frekvensbidrag. Idealt har bägge filter linjär fasgång, platt frekvensgång i

(15)

passbandet samt en brant övergång till spärrbandet vid halva samplingshastigheten. [8]

Figur 2.1.Blockschema över en generell CODEC

2.2

Datakommunikation

2.2.1

Kommunikationssystem

Blockdiagrammet i figur 2.2 visar de olika delarna som finns vid ett generellt datakom-munikationssystem.

Datat formateras först för att sändas, detta kan även innebära att data för felde-tektering och korrigering läggs på den ursprungliga datat. Efter det går det digitala datat till modulatorn som gör om det digitala datat till vågformer som sedan kan sändas genom än sändare. Efter det att vågformerna färdats genom en kanal tas de emot av en mottagare för att sedan omvandlas till digitalt data i demodulatorn. Till sist omvandlas det formaterade datat tillbaka till dess ursprungliga form. Om feldetektering och felkorrigering är pålagt i första steget, kan man här upptäcka och i viss mån korrigera felaktigt data.

Synkronisering är till för att signalinformationen i alla block ska vara densamma, detta för att kunna särskilja olika delar i signalen och se till att delarna behandlas i rätt ordning. I blockschemat är synkroniseringsblocket ritat utan några förbindelser till andra block, det är för att synkroniseringen inverkar på de övriga blocken. Det som skiljer kommunikation över radio från andra system, är att kanalen består av luft. Sändaren och mottagaren kommer i det fallet att bestå av radiohårdvara, ofta av superheterodyn arkitektur (beskrivet i 2.4). [9]

(16)

2.2 Datakommunikation 7

Figur 2.2.Blockschema av kommunikationssystem

2.2.2

Modem

Modulation och demodulationsblocken i figur 2.2 brukar tillsammans kallas för mo-dem. Detta är en sammansättning av orden MODulering och DEModualering. Ibland kan även de andra blocken i systemet ingå i det som kallas modem; när detta är fallet kan modem tänkas på som den intelligenta delen av systemet, medan sändaren och mottagaren kan tänkas på som musklerna i systemet. [9]

Anledningen till att datat moduleras är för att kunna kontrollera signalens frekvensspek-trum, vilket innebär att det är möjligt att nyttja bandbredden på ett effektivare sätt. [6] Mer om modulation i sektion 2.3.

2.2.3

Mjukvaruradio

Enligt [7] defineras mjukvaruradio som “a radio that is substantially defined in soft-ware and whose physical layer behavior can be significantly altered through changes to its software”. Det betyder att en radio som delvis är uppbyggt i mjukvara samt att mjukvaran kan styra hårdvaran kan kallas för en mjukvaruradio. Normalt brukar termen mjukvaruradio syfta till en radio som har en statisk hårdvara men får sin flexibilitet genom mjukvara. En helt konfigurerbar hårdvara som kan programmeras via mjukvara kallas för mjuk-radio.

Den största fördelen med mjukvaruradio är dess flexibilitet. Till exempel kan sam-ma radio användas till olika applikationer då hårdvaran kan omkonfigureras för att passa olika system. Nya möjligheter att använda samma radio för applikationer som verkar globalt, då radion i mjukvara kan konfigureras efter regionens radiospecifika-tioner. Med konventionella radios skulle dessa funktioner behöva realiseras i olika hårdvara, vilket skulle leda till ett större och där med dyrare kretskort. I och med att ändringar kan utföras i mjukvara, minskas även utvecklingstiden för systemet då

(17)

man slipper göra olika revisioner av kretskort samt att uppgraderingsmöjligheterna för radiosystemet ökar. [7]

2.2.4

Bitar och symboler

En bit är en digital signal som endast kan ha två värden, vanligen ett och noll. Data som skickas är således en ström av bitar som modulerats. Hastigheten på data i strömmen brukar vanligtvis mätas i enheten bitar per sekund, bps.

Om det istället ses till den modulerade signalen, brukar denna delas in i symboler.

Varje symbol kan koda n bitar, vilket innebär att det krävs 2nolika symboler för att

kunna koda datat. Symbolhastigheten (engelskans baud rate) kan beräknas utifrån datatakten och antalet bitar per symbol enligt ekvationen 2.4. [3]

baud rate = 1

n · bps (2.4)

2.2.5

Basband

Termen basband syftar till en signal vars spektrum sträcker sig från likström (eller nära likström) till ett ändligt värde, ofta lägre än några megaherz.

I kommunikationssystem behövs det digitala datat omvandlas till analoga vågformer som är kompatibla med kanalen. Dessa analoga vågformer kallas då för basband. När basbandssignalen når mottagaren omvandlas den tillbaka till sin digitala motsvarighet. Data som kommer ut från en modulator kallas således för basbandssignal. [9]

2.3

Digital modulation

Målet med digitala kommunikationssystem är att överföra digitala signaler från en plats till en annan. Detta görs vanligtvis genom att modulera en sinusformad bärvåg av karaktären,

sc(t) = A · cos(ωt + φ). (2.5)

Bärvågen har tre frihetsgrader: amplitud (A), frekvens (ω) samt fas (φ). Dessa kan användas var för sig eller tillsammans för att representera digitala data.

Digitala modulationstekniker har många fördelar gentemot analoga modulation-stekniker inom moderna trådlösa system. Inte nog med att det är enklare att im-plementera krypterings- och felkorrigeringsalgoritmer, digital modulation har även fördelar som att signalen är mindre beroende av dämpning och brus. [6]

(18)

2.3 Digital modulation 9

2.3.1

FSK

FSK står för frequency shift keying och betyder frekvensskiftssignalering. Denna sig-nalering innebär att datasignaler representeras av två sinusformade signaler med olika frekvens [6]. Det råder ingen bestämmelse över vilka frekvenser som används, eller hur många signaler som används. Om fler än två signaler används brukar signa-leringen kallas för M-FSK, där M står för antalet nivåer (frekvenser). Matematisk definition av normaliserad FSK följer i ekvation 2.6 och ett grafiskt exempel i figur 2.3. [9] sf sk(t) = cos(ωit + φ) 0 ≤ t ≤ T i = 1, ..., M (2.6) 0 1 2 3 4 Data 0 1 2 3 4 FSK 0 1 2 3 4 Symboler MSK

Figur 2.3.Jämförelse mellan FSK och MSK

2.3.2

MSK

MSK (minimum shift keying) tillhör modulationskategorin CPM, continuous phase

modulation. Denna typ av modulering innebär att signalen har kontinuerlig fas.

MSK skulle då kunna ses som ett specialfall utav FSK, CPFSK, som innebär att frekvensskiftssignaleringen har kontinuerlig fas. Skillnad mellan FSK och MSK åskådlig-görs i figur 2.3. En positiv följd av kontinuerlig fas är att signalens spektrum kommer bli smalare än vid icke-kontinuerlig fas.

(19)

Ordet minimum i MSK kommer av att de två signalernas frekvenser skall vara or-togonala och skillnaden mellan frekvenserna minimal. Detta markeras i ekvation 2.7

av produkten f0+4dTk

 där f

0 är frekvensen på bärvågen och dk = ±1 för datat.

Varje symbol indexeras av bokstaven k.

smsk(t) = cos   f0+ dk 4T  t + xk  kT < t < (k + 1)T (2.7)

Under varje symboltid, T är xkkonstant och kan ha något av värdena, 0 eller π. Detta

är en konstruktion för att se till att smsk(t) får kontinuerlig fas i symbolövergångarna

t = kT . En ekvation för att beräkna xk rekursivt presenteras i ekvation 2.8. [9]

xk =  xk−1+ πk 2 (dk−1− dk)  modulo 2π (2.8)

2.4

Superheterodyn arkitektur

Den isärklass vanligaste typen av mottagare idag är superheterodynmottaren som visas i figur 2.4. Denna mottagararkitektur är resultatet av över 50 års motta-garutveckling och används i majoriteten av datakommunikationssystem, mobiltele-foni, TV, radio samt radarsystem.

När RF-signalen först tas emot av antennen är den mycket svag, således måste den förstärkas för att kunna användas. Efter det blandas signalens frekvens ned genom multiplikation med en given frekvens, denna genereras från lokaloscillatorn, LO. LO varieras för att kunna selektera vilken bärfrekvens som ska avlyssnas. För att plocka bort oönskade frekvensbidrag, bandpassfiltreras den nedblandade signalen. Där efter matas signalen in i nästkommande block enligt figuren 2.2.

För att ytterligare förbättra selekteringen av bärfrekvensen, är det vanligt att ett bandpassfilter monteras mellan antenn och RF-förstärkare. Detta filter brukar kallas för förvals-bandpassfilter. För att undvika en effekt kallad spegling, brukar även ett bandpassfilter moteras innan blandaren. Hur spegling uppkommer visas i räkneex-empel 2.1.

Vid högre frekvenser används ofta dubbla blandarsteg för att minska fel på grund av ostabilitet av lokaloscillatorn. Mottagaren kallas då för dual-conversion

superhetero-dyn mottagare. [6]

Att multiplicera en basbandssignal med en högre frekvens kan kallas för att

hetero-dyna1. En heterodyn sändare innebär således att basbandssignalen heterodynas med

en bärvågsfrekvens för att sedan förstärkas och matas till en antenn. För att ploc-ka bort oönsploc-kade frekvensbidrag från heterodyningen ploc-kan signalen bandpassfiltreras mellan mixern och effektförstärkaren. [9]

(20)

2.4 Superheterodyn arkitektur 11

Figur 2.4.Blockschema av superheterodyn-arkitektur

Exempel 2.1

Detta exempel illustrerar hur en signal påverkas av att sändas och sedan mottagas

av superheterodyn arkitektur med bärvågen fc. Signalen som skickas är en sinusvåg,

m(t) = cos 2πfmt. För att ytterligare förenkla beräkningarna antas förstärkningen i

alla steg vara normaliserad. Steg 1, uppblandning:

s(t) = m(t) · cos 2πfct = / cos α · cos β =

1 2· cos(α + β) + 1 2· cos(α − β)/ = = 1 2· cos 2πt(fc+ fm) + 1 2· cos 2πt(fc− fm)

Här noteras att heterodyningen kommer generera två stycken frekvensbidrag centr-erat kring bärvågsfrekvensen. Dessa är varandras spegelbilder, därav spegeleffekten. Om ett det finns ett bandpassfilter för att filtrera bort den ena spegelbilden kom-mer denna frekvenskomponent försvinna, kvar finns då bara frekvenskomponenten

fc+ fm (eller fc− fm).

Steg 3, nedblandning:

s(t)|BP F ⇒ s′(t) = cos 2πt(fc+ fm)

sif(t) = s′(t) · cos 2πfct = cos 2πt(fc+ fm) · cos 2πfct =

= 1

2· cos 2πt(2fc+ fm) + 1

2· cos 2πt(fm)

(21)
(22)

Kapitel 3

Design

I detta kapitel kommer främst utformningen av mjukvara diskuteras. Fokus på mjuk-varan har legat vid att få en bra kompromiss mellan processorbelastning och robus-thet. Även valda parametrar kring modulationen kommer diskuteras.

3.1

Hårdvara

Den del som exjobbet omfattar är modulering av basbandssignaler som sedan ska kopplas in till befintlig radiodel. Denna radiodel är av superheterodyn arkitektur vilket diskuterats tidigare. Det innebär att signalen in i radiodelen måste vara en analog spänning. Den processor som ska sköta signalbehandlingen måste därför kop-plas ihop med ett analogt gränssnitt, detta sker via en ljudcodec. Figur 3.1 visar blockdiagram över hårdvaran.

Figur 3.1.Blockschema över systemets hårdvara

Under arbetets gång har processor och codec varit okänd, vilket lett till att koden är så generellt utformad som möjlig. Den är uppdelad i block för att på ett smidigt sätt kunna anpassas efter godtycklig hårdvaruplattform. För att enkelt kunna testa och utvärdera koden har en vanlig PC med Linux som operativsystem använts som testplattform.

(23)

3.2

Mjukvara

Det primära programspråket som används är C. Detta valdes då det är ett allmänt vedertaget programmeringsspråk där det finns gott om kompilatorer till olika plat-tformar. Kompilatorn som använts tillhör GCC, då denna är lätt tillgänglig till linux. Alla algoritmer och databehandling är skriven i C kod, vilket medförde att tester av dessa även de skrevs i C kod.

För att presentera data har python och pythonbilbioteket numpy använts. Valet av detta föll på att det är gratis, enkelt att använda samt att resultatet blir bra. All kod är skriven i mindre moduler, detta för att på ett flexibelt sätt kunna anpassa efter olika plattformar. Till exempel räcker det att ändra i ljud-modulen om codec bytes. Modulstrukturen innebär även att det är enkelt att i efterhand kunna lägga till nya funktioner samt återvinna funktioner i andra sammanhang.

3.3

Modulation

Den modulationstyp som valts är MSK. Exjobbets ursprungliga tanke var att nyt-tja två nivåers frekvensskift, men då specialfallet av FSK, MSK, har något smalare bandbredd har denna valts. Demodulatorarkitekturen, som diskuteras senare i kapit-let, fungerar för både FSK och MSK. Då frekvensskift av radiovågen sker genom att modulera bärvågen med en sinusformad basbandssignal, genereras två sinusvågor med olika frekvens för att markera ettor och nollor. På så vis går det att tala om frekvenser även på basbandssidan.

Då MSK innebär att frekvenserna på basbandet är ortogonala, har mark-frekvensen valts till halva datatakten och space-frekvensen till samma frekvens som datatakten. Ser man istället på vågformer, kommer mark-signalen vara en halv period per symbol och space-signalen en hel period per symbol. Ett bevis på att dessa signaler är ortogonala visas nedan.

RT 0 s1(t)s2(t) dt = R 2π 0 sin x · sin x 2dx = = Rπ

0 sin 2y · sin y dy = / Standardintegral enligt [2] / = 0

Ytterligare ett bevis för att dessa frekvenser är giltiga följer av ton-separationsegenskaperna i ekvation 2.7  f0+ 1 4T   f0 1 4T  = 1 2T = R 2.

(24)

3.4 Sändare 15

3.4

Sändare

För att generera modulerat data med så liten inverkan på processorn som möjligt, har två förgenererade LUT används för att snabbt kunna generera det modulerade datat. Dessa tabeller beräknas i initieringsskedet av algoritmerna, tillsammans med annan nödvändig data. För att undvika att använda flyttal måste det gå ett jämnt antal samples per symbol, vilket är lätt att kontrollräkna då antalet samples per symbol kan beräknas enligt,

Samplingshastighet

Symbolhastighet = Antal sampelpunkter per symbol (3.1)

Sampel datat är lagrat i formatet s161 då många ljudcodecs stödjer detta format.

Vanliga ljudkort stödjer även de vanligen det formatet, vilket innebär att man kan skriva direkt till ljudkortet i PC miljö för att med ljudkortet generera den modulerade signalen.

Rent praktiskt användade av modulations algoritmen visas i exemplet 3.1.

Exempel 3.1

I kodexemplet kommer 2 bytes (0x23 och 0xA2) moduleras med en datatakt på 4800, sampelhastighet som är 48000 och en amplitud på 10000. Detta betyder att det kommer gå 10 samplingar per symbol. Dessa kommer ha en amplitud på 10000 vilket betyder 30% av maximal amplitud.

u16 baudRate = 4800; u16 sampleRate = 48000; u16 amplitude = 10000; u08 msg[2] = {0x23, 0xA2}; u08 msgLength = 2; s16 signal[1000]; u32 signalLength = 1000;

msk_t *m = MSK_init(baudRate, sampleRate, amplitude); MSK_modulate(m, &msg, msgLength, &signal, &signalLength);

1

(25)

3.5

Mottagare

För att nyttja hårdvara på ett så smidigt sätt som möjligt, har läsning och avkodning av data delats in i två olika block som exekveras samtidigt enligt så kallad

pipeline-struktur. Detta innebär att data samplas från ljudcodecen och lagras i en buffert, medan föregående buffert avkodas parallelt. För att åstadkomma detta i C sker inläsningen i en separat tråd, medan avkodning sker i main-loopen. Efter datat avkodas väntar den på att sampelbufferten skall fyllas för att sedan börja om igen.

Figur 3.2.Funktionsskiss av mottagararkitekturen

Fördelen med att läsa in data i buffertar är att DMA kanaler kan nyttjas. Detta leder till att mycket data kan flyttas medan processorn jobbar med annat.

Genom att avkoda och lagra samplingar samtidigt, minskas både minnesanvändning och tid då ett medelande tas emot. Det ställer dock kravet på demodulationsalgo-ritmerna att de klarar att avkoda data över blockgränserna.

Demodulatorn som valts är av koherent typ. Det innebär att signalens fas måste vara känd. För att kunna avkoda data krävas att avkodningen delas in i två steg: synkronisering och avkodning. Först sker synkronisering sedan avkodning. En bild på ett datapaket visas i figur 3.3.

Figur 3.3.Datapaket i lägsta lagret

3.5.1

Synkronisering

Synkronisering är till för att få reda på var själva informationsbärande signalen börjar. Detta kan indelas i två delar: och ordsynkronisering.

(26)

Preambel-3.5 Mottagare 17

synkroniseringen är till för att detektera att det är en signal som skickas, samt att

synkronisera fasläget mot den interna referensfasen. Sedan för att veta när signalen börjar används ordsynkroniseringen.

Den preambelsynkroniseringsmetod som används jämför tiden mellan signalens nol-lövergångar mot en känd sekvens. När tidsfelet är tillräckligt litet betyder det att signalen är i fas, med andra ord fås information om var varje symbol börjar. Nack-delen med att titta efter nollgenomgångar är att känsligheten för brus ökar, då bruset kan skapa falska nollgenomgångar. Genom att skicka en längre synkroniser-ingssekvens än vad som krävs, ges preambelsynkroniseringen fler chanser att hitta fasen och sannolikheten att hitta den ökar. Ytterligare en fördel med en lång pream-bel är att det i radiomottagaren och sändaren kan ligga vissa fördröjningar innan signalöverföringen är stabil.

Då signalens fasläge är känt, behöver man nu veta var själva datameddelandet börjar och synkroniseringsdelen slutar. Detta sker genom ordsynkroniseringen. Den fungerar som så att varje bit avkodas och de senaste bitarna jämförs mot en känd sekvens. Som synkroniseringslängd valdes fyra bytes vilket visat sig fungera bra. För att avkoda varje bit används samma metod som i följande delkapitel.

3.5.2

Avkodning

Då det demodulerade datat kommer bestå av en likadan signal som sändaren gener-erade kommer denna bestå av två olika vågformer. För att detektera vilken av våg-formerna som mottas, jämförs insignalen med två kända signaler. Det är alltså ko-rrelationen mellan den inkommande signalen mot två referenssignaler som används för att bestämma vilken vågform det är. Denna arkitektur är generell och kan använ-das för detektering av fler än två signaler, samt för signaler som inte nödvändigtvis behöver vara sinusformade.

Genom att multiplicera ihop signalen med en referenssignal över en hel period fås hur mycket av energiinnehållet i signalerna som överensstämmer.

T

Z

0

s(t)sref(t)dt = E (3.2)

Energiinnehållet kommer således vara större för den riktiga signalen än för den falska. Utifrån den vetskapen kan ett beslut om vad det är för signal göras. Då referenssig-nalerna är ortogonala får det till följd att den falska signalens energiinnehåll kommer vara betydligt mindre (idealt noll) än den riktiga. Arkitekturen på avkodaren visas i figur 3.4.

(27)
(28)

Kapitel 4

Simulering

Mycket arbete har lagts på att simulera delar av koden för att säkerställa dess funktionalitet. För att simulera algoritmerna har olika scenarios programmerats i C kod för att kunna erhålla data.

Ett alternativ hade varit att använda MATLAB1, scilab2 eller numpy biblioteket

till python som simuleringsmiljö. Fördelarna med dessa är att det finns inbyggda funktioner för att rita upp frekvensspektrum och att plotta datat på olika sätt. Nackdelarna hade varit att koden skulle behöva portas för att passa respektive miljö. Istället valdes att skriva testmiljön i C kod för att på ett så enkelt sätt som möjligt nyttja den faktiska koden. För att kunna presentera datat, har simulationerna gener-erat textfiler med data som sedan plottats med hjälp av python. Ytterligare en fördel med att göra simulationerna i C är att GCC ofta kompilerar koden effektivare en någon utvecklingsmiljö, vilket får effekten att beräkningstiderna för simulationerna minskar.

4.1

Bruskänslighet av demodulering

En av de allra vanligaste orsakerna till korrupt data är brus. Därför har simulationer med vitt brus utförts. Vitt brus innebär att brussignalen har lika mycket av alla frekvenser.

1Kommersiell utvecklingsmiljö 2

Öppen utvecklingsmiljö

(29)

4.1.1

Beskrivning av simulation

För att testa hur bruskänslig algoritmen är, har följande testmiljö programmerats. En ändligt lång dataström genererar modulerat data som adderas med en brussignal bestående av vitt brus med känd maximal amplitud. Summan av de två signalerna demoduleras för att generera en dataström, denna jämförs med den ursprungliga dataströmmen och antalet fel detekteras. Ett blockschema av modellen kan ses i figur 4.1.

Figur 4.1.Blockschema över brustest konstruktionen

Denna sekvens genomförs sedan för olika brusnivåer för att få fram en kurva på hur väl algoritmen presterar. Då antalet fel är en dålig enhet när det gäller att jämföra olika mätserier, räknas istället felen om till procent. På så vis går det bra att jämföra testserier som inte har lika långa dataströmmar.

4.1.2

Simulationsresultat

Test utav bruskänslighet för demodulationen sker under följande förutsättningar:

• Avkodningen sker utan synkronisering

• Bruset är vitt, alltså jämt fördelat i frekvensdomänen • Signalamplituden är på 30% av maximal amplitud • Datalängden på varje testserie är 100000 bytes • Samplingstakten är 48000 samplingar per sekund

I figur 4.2 syns tydligt att då data takten ökar, ökar även sannolikheten för fel i överföringen. Det som praktiskt skiljer datatakterna åt, är antalet bitar per symbol. En datatakt på 9600 bitar per sekund och en samplingshastighet på 48000 resulterar enligt ekvation 3.1 i 5 sampel per symbol medan en datatakt på 1200 bitar per sekund i samma samplingshastighet resulterar i 40 sampel per symbol. Slutsatsen som kan dras av detta är att fler sampelpunkter per symbol leder till en brus-robustare modulation.

(30)

4.2 Bruskänslighet av synkronisering 21 -10 -5 0 5 10 15 SNR (dB) 0 10 20 30 40 50 60 70 80 90 Felsannolikhet (%) 1200 Baud 2400 Baud 4800 Baud 9600 Baud

Figur 4.2.Sannolikhet för fel beroende av brus

4.2

Bruskänslighet av synkronisering

Synkronisering kan som tidigare diskuteras delas in i två delar: Preambel- och ordsynkronisering. Då ordsynkroniseringen fungerar enligt samma algoritm som avkod-ningen, torde således denna ha samma bruskänslighet som den i avsnitt 4.1. Ett problem med simulation av dessa är att de olika delarna är beroende av varandra. Till exempel om simulationen indikerar att ordsynkroniseringen misslyckades, kan detta bero på att preambel synkroniseringen detekterade en felaktig preambel. Med den motivationen, har preambel synkroniseringen valts att titta noggrannare på.

4.2.1

Beskrivning av simulationen

Simuleringingsscenariot för denna simulation är snarlik den som beskrivits i avsnitt 4.1.1. Ett slumpvis utvalt medelande har försetts med en preambel bestående av åtta byte av tecknet 0x55, eller 0b01010101. Denna sekvens valdes för att samma mönster av nollgenomgångar skall förekomma flera gånger i följd, då detta ger pream-belsynkroniseringsalgoritmen fler än en chans att detektera fasen. Efter preambeln läggs åtta byte för synkroniseringsordet till. Det ursprungliga medelande har alltså

(31)

förlängts i början med en synkroniseringsdel bestående av tolv byte. Paketstrukturen finns åskådliggjord i figur 3.3.

Den nya dataströmmen moduleras sedan och vitt brus av känd amplitud adderas. Sedan försöker paketet av avkodas, genom att först detektera fasen i preambelsynkro-niseringen. Om fasen detekteras, skickas signalen vidare till till ordsynkropreambelsynkro-niseringen. Om ordsynkroniseringen lyckas skickas signalen sedan vidare till avkodaren för mod-ulerat data beskriven i avsnitt 3.5.2 och simulerad i avsnitt 4.1. Blockschema över testet kan ses i figur 4.3.

Figur 4.3.Blockschema över synkroniseringstest

Informationen som kan extraheras ur testmiljön är om någon av synkroniseringarna misslyckas, samt bitfelet i överföringen av meddelanden.

En uppenbar brist i testmiljön är att de olika delarna av synkroniseringsalgorit-men sker sekventiellt. Konkret innebär det att ordsynkroniseringen enbart testas om preambelsynkroniseringen lyckas. Anledningen till att jag ändå valde att testa algo-ritmerna utifrån denna arkitektur av testmiljön är att denna struktur av mottagare är den som praktiskt kommer att användas i den slutliga produkten.

4.2.2

Simulationsresultat

Simulationsresultatet har genomförts under följande förhållanden:

• Samplingstakten är på 48000 Sa/s

• Signalamplituden är på 30% av maximal amplitud • Simulationen är itererad 100 gånger per brusnivå • Bruset är jämt fördelat i frekvensdomänen

Något oväntat är att sannolikheten för synkroniseringsfel är störst ju lägre datatakten är, vilket klart syns i figur 4.4. En förklaring till detta är att sannolikheten att bruset ställer till med felaktiga nollövergångar måste vara större då det är fler samples per symbol ju lägre datatakt som nyttjas.

(32)

4.2 Bruskänslighet av synkronisering 23

Detta behöver inte vara ett problem, då många radiomottagare lågpassfiltrerar sig-nalen i hårdvara. Det högfrekventa bruset som skapar felaktiga nollgenomgånger filtreras då bort, vilket eliminerar problemet. Simulation av detta följer i styckena 4.2.3 och 4.2.4. 10 5 0 5 10 15 20 25 30 SNR (dB) 0 20 40 60 80 100 Felsannolikhet (%) 1200 Baud 2400 Baud 4800 Baud 9600 Baud Figur 4.4.Synkroniseringingstest

4.2.3

Beskrivning av simulation med lågpassfilter

Då det kan hända att radiomottagare lågpassfiltrerar den mottagna signalen i hård-vara, har ytterligare en simulation av synkroniseringen med lågpassfilter genomförts. Filtret har placerats innan demodulatorn för att efterlikna en generell hårdvara. Det är inte något krav på att filtret ska vara beräkningseffektivt, då det primärt ska användas för simulationen. Filtret har därför valts att realiseras via en FIR modell. Fördelen med FIR är att det är enkelt att beräkna frekvensgången för filtret, sam-tidigt som den kan realiseras via en faltningsoperation. Ytterligare en fördel är att filtret alltid är stabilt [5]. Ett blockschema över simulationen visas i figur 4.5. Filtrets brytfrekvens är dubbelt så hög som datatakten. På så sätt kommer inte filtret inverka på dataöverföringen, utan bara filtrera bort högfrekvent brus.

(33)

Figur 4.5.Blockschema över synkroniseringstest med lågpassfiltrering

4.2.4

Simulationsresultat med lågpassfilter

Simulationsresultat av synkroniseringstest med lågpassfiltrering visas i figur 4.6. Tydligt är att sannolikheten för fel i synkroniseringen minskar mer vid hög över-sampling då signalen filteras. Detta beror troligen på att sannolikheten för felaktiga nollövergångar ökar då högre översampling leder till fler samples med låg amplitud.

 10  5 0 5 10 15 20 25 30 SNR (dB) 0 20 40 60 80 100 Felsannolikhet (%) 1200 Baud 2400 Baud 4800 Baud 9600 Baud

(34)

4.3 Drivning 25

4.3

Drivning

Drivning innebär att sändare och mottagare har något olika datatakter. Detta fenomen inträffar som i exemlet 4.1 då samplingshastigheterna på mottagare och sändare skil-jer sig åt. Kristalloscillatorer som normalt ger klock- och referensfrekvens till system är temperaturberoende, vilket leder till att sändare och mottagare i olika miljöer kommer få olika referensfrekvenser.

Exempel 4.1

En sändare med en felaktig samplingsfrekvensen 48010 Sa/s genererar data med 2400 Baud. Hur lång tid tar det innan mottagaren som har en samplingsfrekvens på 48000 Sa/s har drivit 10%?

Tidsförskjutning per symbol:

∆ts= ts− tǫs= 1 fs 1 s

Fel i procent, E, efter k symboler:

E = 100 · 8fsps· k · ∆ts ts , fsps= fs fbaudrate

Antal symboler innan signalen drivit E%:

k = E 100 · 8fsps · ts ∆ts 10 100 · 8 ·48000 2400 · 1 48000 1 48000 1 48010 ≈ 3 bytes

4.3.1

Beskrivning av simulationen

En slumpvis utvald ström av data moduleras utan att synkroniseringstecken läggs på. Innan det modulerade data når demodulatorn, förställs fasen på signalen för att simulera fasfel. Det demodulerade datat jämförs sedan med den ursprungliga data strömmen i grupper om åtta bitar, alltså bytes. Blockschema över testmiljön visas i figur 4.7.

I en komplett testserie itereras testförsök med olika fasfel, mer bestämt förställs fasen från en symbol för tidig synkronisering till en symbol för sen synkronisering.

4.3.2

Simulationsresultat

(35)

Figur 4.7.Blockschema över fasfelssimulation

• Avkodningen sker utan synkronisering

• Signalamplituden är på 30% av maximal amplitud • Datalängden på varje testserie är 10000 bytes • Samplingstakten är 48000 samplingar per sekund • Datatakten är på 2400 bitar per sekund

Här har valts att titta på fel i byte nivå vilket innebär att en felaktig bit per byte räcker för att ge fel utslag. Jag har valt att göra så då resultatet hellre fälls än frias. Om man tittar på det demodulerade datat syns att felaktiga bitar tenderar till att bli ettor, vilket innebär att feldetektering på bitnivå bara skulle upptäcka fel i de bitar som är nollor. Troligen är då även resultatet som visar ettor felaktigt, trots att det inte ger utslag i en jämförelse med originaldatat.

Exempel 4.2

Detta exempel visar ett utdrag ur logg-filen för det avkodade datat. Detta är samma fil som från körningen som genererade plotten i figur 4.8. Då denna fil innehåller 10000 avkodade bytes, visas bara ett kortare utdrag:

Recieved byte nr 55 = 255 Recieved byte nr 56 = 255 Recieved byte nr 57 = 255 Recieved byte nr 58 = 255

Här noteras att all avkodat data avkodas till det decimala värdet 255. Binärt motsvaras

detta av 1111 1111B, vilket visar att de mottagna datat demoduleras till enbart

et-tor. Sannolikheten att slumpgeneratorn som används av sändaren bara genererar 1:or är försvinnande liten.

(36)

4.3 Drivning 27

I figur 4.8 noteras att avkodningen är korrekt även om synkroniseringen missar med cirka femton procent av en symbollängd. Ökar synkroniseringsfelet ytterligare, kommer antalet fel i mottagaren öka drastiskt. Den horisontella axeln i figur 4.8 visar drivning relativt symbollängd i tidsdomänen, t. ex. betyder värdet 0.5 att signalen drivit med en halv symbollängd.

-1.0

-0.5

0.0

0.5

1.0

Symboler

0

20

40

60

80

100

Sannolikhet

(37)
(38)

Kapitel 5

Implementation

5.1

Laboreringsplattform

För att kunna testa koden i hårdvara byggdes en laboreringsplattform bestående av:

• Två stycken radioapparater

• Ett utvecklingskort med en ARM7 processor • Kontaktpanel

• Nätdel

Delarna monterades på en träplanka och kopplades ihop för att kunna användas på ett generellt sätt. Alla ljudsignaler AC-kopplades med seriekondensatorer för att filtrera bort likspänningar.

5.1.1

Tait-radio

Radioapparaterna som användes var TM8105 från Tait Radio Communications1.

Den främsta anledningen till att valet av radioapparat föll på denna modell var att den tidigare använts inom företaget. Radion har även ett konfigureringsverktyg i mjukvara där parametrar av intresse kan ställas, exempelvis frekvens på bärvågen. I konfigurationsverktyget går det att bestämma vilka funktioner olika portar i en kon-takt på radions baksida ska ha, vilket nyttjades. Det går även att i viss utsträckning styra över den analoga signalvägen i radion, vilket ledde till att talfilter kopplades bort för att undvika att signalen bandbreddsbegränsades på ett oönskat sätt.

1

Australiensk radiotillverkare

(39)

Figur 5.1.Laboreringsplattform

Figur 5.2.Blockschema över laboreringsplattformen

5.1.2

ARM7

För att enkelt kunna kommunicera med de två radioapparaterna användes

mikrokon-trollern AT91SAM7S256 från Atmel2. Anledningen till att just denna kontrollern

valdes var att företaget använt sig av denna tidigare. Det fanns även ett

utveck-lingskort från Olimex3tillgängligt samt en på företaget väl beprövad utvecklingsmiljö.

AT91SAM7S256är en mikrokontroller som använder sig av den RISC-baserade kär-nan ARM7TDMI som är av Von Neumann arkitektur. Denna klarar att arbete med

0.9Mips/MHz4

upp till 55 MHz. AT91SAM7S256 kan nyttja DMA kanaler för att på ett effektivt sätt flytta data till och från periferienheterna. Kontrollern har 256

2

Tillverkare av mikrokontrollers

3Elektroniktillverkare 4

(40)

5.2 Test mellan två datorer 31

Kbyte flashminne (programminne) och 64 Kbyte i RAM. I övrigt finns några olika periferienheter som bland annat AD-omvandlare, räknare och UART-kontroller. [1]

5.2

Test mellan två datorer

Det första hårdvarutestet som utfördes var signalering mellan två stycken datorer. Då simulationskoden skrivits för PC-miljö behövdes inte några ändringar i algoritmerna skrivas. Dock behövdes applikationskod för att utföra testet skrivas. Denna kod kan delas in i tre delar:

• Sändarprogram • Mottagarprogram

• Program för att styra PTT

För att kunna upptäcka fel i överföringarna, lades en 32-bitars CRC sist i datafältet. Detta inleddes även med en 2 byte långt fält innehållandes datafältets totala längd. Datapaketet visas i figur 5.3.

Figur 5.3.Datapaket med längd och CRC

5.2.1

Sändare

I sändarprogrammet genereras ett meddelande med slumpmässigt data av variabel längd. Användaren bestämmer via ett textbaserat gränssnitt meddelandets längd. Datapaketet förses sedan med preambel och synkroniseringsord för att till sist mod-uleras och sändas via ljudkortet. Då dataformatet på det demodulerade datat valts till ett två byte långt heltal, kunde det direkt användas för att skrivas till ljudkorts-bufferten. Ljudsignalen från ljudkortet kopplades sedan in på radions ljudingång. För att styra Tait-radions PTT skrevs en minimal mjukvara för ARM7 kortet. Allt denna gjorde var att ge möjlighet att via en fysisk knapp, eller en serieport kunna styra en I/O port som i sin tur kontrollerade radions PTT. Således gavs sändarpro-grammet möjlighet att via serieport styra radions PTT.

(41)

5.2.2

Mottagare

Laboreringsplattformens radio användes för att ta emot signalen. Denna analoga signal kopplades sedan in till en dator via dennas ljudkort. Mottagarprogramvaran samlade sedan in datat för avkodning och demodulation. Programvaran utökades med möjlighet att sätta timeout tid, detta för att förhindra att programvaran låser sig vid exempelvis felaktig preambel detektering.

Efter synkroniseringen demoduleras datat, paketlängd detekteras och meddelandet avkodas fram till och med checksumman. För att detektera fel i överföringen beräknas en checksumma som jämförs med den mottagna. Överensstämmer checksummorna finns med stor sannolikhet inte några fel i överföringen.

De olika stegen i mottagningsproceduren visas i ett terminalfönster för att kontin-uerligt ge användaren information om vad som händer. Då längden på meddelandet kan vara långt skrivs inte detta ut på skärmen, utan lagras i en textfil på hårddisken.

5.2.3

Resultat

Överlag fungerar överföringar bra. Dock fungerade det inte att skicka längre med-delanden än cirka 3000 bytes. Detta skulle kunna förklaras av drivningseffekten. Åtskilliga test utfördes, och runt 3000 bytes började det mottagna datat likna datat från simulationsresultaten från drivningstestet i avsnitt 4.3.

Även noterades felaktiga detekteringar av preambel. Scenariot att en preambel fe-laktigt detekterades precis innan en faktisk preambel sändes gav upphov till att hela meddelanden inte upptäcktes. Mottagarkoden befann sig då i tillståndet att den letar efter ordsynkroniseringen medan den faktiska preambeln skickas. Således upptäcker mottagaren inte någon ordsynkronisering och mottagarproceduren avbryts för sent för att hinna upptäcka den riktiga preambeln.

Det sistnämnda problemet skulle kunna lösas genom att minska chansen för felaktiga detekteringar av preambel. Då preambelsynkronieringen bygger på avståndet mellan nollövergångar, skulle en lösning vara att mjukvarufiltrera signalen. Således skulle brus av oönskade frekvenser försvinna och felaktiga nollövergångar skulle minska. En annan lösning skulle kunna vara att använda sig av mottagen signalstyrka på radion för att starta preambeldetektering. Detta skulle leda till att sökning av preambeln startar då mottagarradion får in en signal, alltså utsätts inte preambeldetekteringsal-goritmen för möjligheten att felaktigt detektera en signal. En tredje lösning skulle kunna vara att använda en längre preambelsynkroniseringssekvens. Detta skulle min-ska sannolikheten för en felaktig detektering, men samtidigt minmin-ska sannolikheten för en korrekt detektering.

(42)

5.3 Test mellan dator och mikrokontroller 33

5.3

Test mellan dator och mikrokontroller

I detta test anvädes en PC för att sända data via radion på samma sätt som i föregående test. Mottagaren däremot implementerades i ARM7-kortet istället för i PC-miljö.

Anledningen att enbart implementera mottagarprogrammet var att mottagaralgo-ritmen uppskattningsvis var mycket mer processorkrävande än sändaralgomottagaralgo-ritmen. Fungerar mottagaralgoritmen fungerar med hög sannolikhet även sändningsalgorit-men. Ytterligare en faktor vid detta val var att mikrokontrollern inte är bestyckad med några DAC, utan enbart med ADC. För att då testa generering av analoga sig-naler, behöver en codec eller en separat DAC anslutas till kontrollern. I brist av tid utelämnades detta test. Kontrollerns PWM modul hade i viss utsträckning kunnat användas tillsammans med ett lågpassfilter, denna lösning hade dock introducer-at brus av olika slag i systemet och hade således inte kunnintroducer-at bidraga med någon kvalitativ information.

5.3.1

Anpassning av mjukvara

Då insamling av data via ADC inte fungerar som inläsning av ljudkortsbuffert i PC-miljö var mottagarprogrammet tvunget att anpassas till detta. Tanken avkoda data samtidigt som nya data läses in stannade dock kvar.

För att sampla data i jämna intervall kopplades ett timerblock till en ADC-kanal. En DMA kanal användes sedan för att fylla en buffert av given storlek. Sampling och lagring av dessa data gick på så vis att utföra helt i hårdvara, vilket lämnade processorkraft åt avkodning av data.

Denna övergripande programstruktur är identisk med den som användes i simula-tionerna, vilket innebar att merparten av programkoden kunde behållas. Insamling av data via DMA-kanaler kan på så vis direkt ersätta den tidigare trådade funktionen för att vänta på att ljudkortets buffert skulle fyllas, beskriven i 3.5.

Ytterligare en skillnad var att upplösningen på ADC:n var på 10 bitar, till skill-nad från tidigare 16 bitar. Signalen till ADC:n sakskill-nade även negativ spänningsmat-ning vilket ledde till att insignalen AC-kopplades och lyftes sedan upp till halva matningsspänningen via en spänningsdelning. Detta innebar att varje sampeldata behövde omvandlas till det tidigare använda formatet (s16).

5.3.2

Processoranvändning

Då algoritmerna tidigare utvärderats i form utav simuleringar, valdes att titta när-mare på processoranvändning vid exekverade.

(43)

Tabell 5.1.Översikt processorbelastning

Räknarvärde Processorbelasning

Utan avkodning 90 000 0 %

Preamblesökning 83 000 7.7 %

Demodulering 56 000 37.8 %

är svårt. Den metod som använts är enkel att implementera, dock inte speciellt noggrann. Resultatet av mätningen ger bara en fingervisning om tidsåtgång vid exekvering.

Då insamling av data tar lika lång tid oberoende av vad avkodningsalgoritmen gör, har tiden för insamling använts som ett referensvärde. Efter att avkodningen är färdigexekverad, väntar applikationen på att insamlingen av data ska slutföras. Det var denna “väntetid” som valdes att studeras. För att mäta väntetiden räknades ett heltalsvärde upp enda tills insamlingen av data var klar. En avskalad C-kod för att åskådliggöra mätningen presenteras i exempel 5.1. Resultatet presenteras i tabell 5.1.

Exempel 5.1

Här är ett exempel på hur processorbelastningen mättes. Detta exempel är mycket avskalat för att visa på principerna kring mätningen.

while(mainLoop){

unsigned long int counter = 0; while(collectingDataFlag) counter++; storeCounterValue(counter); startNewCollection(); processData(); }

(44)

5.3 Test mellan dator och mikrokontroller 35

5.3.3

Resultat

Det i särklass största problemet vid testsekvensen var frekvensdrivning. Då ett timerblock användes för att styra samplingstakten blev denna beroende på timerblock-ets upplösning, vilket inte resulterade i en jämn takt. Önskvärt vore att sampla i en takt av 48000 Sa/s, vilket skulle ge 10 Sa/symbol i en datatakt på 4800 Baud. Med timerblockets begränsade upplösning fick samplingstakten approximeras till 48054 Sa/s, vilket bidrar till att signalen kommer driva från synkroniseringen rela-tivt fort. Mätningar med oscilloskop på samplingsfrekvensen visade att denna i själva verket varierade slumpartat från 47990 Sa/s till 48070 Sa/s. Denna stora avvikelse i frekvens var oväntad, likaså svår att förklara.

Som mest gick det att skicka runt 2 byte (inklusive preambel, synkronisering och checksumma) felfritt, vilket ändå visar att algoritmerna kan exekveras i en mikrokon-troller.

(45)
(46)

Kapitel 6

Rekommendationer för

fortsatt arbete

• Mer omfattande driftester:

Testa algoritmen under längre perioder för att få en bättre bild av

pre-standa

Utföra test under olika radioförhållanden (olika signalstyrkor och olika

typer av brus)

Utföra mätningar på radiosidan för att få en uppfattning om exempelvis

kanalutnyttjande

• Eventuellt ändra preambellängd och ordsynkronisering för att optimera

pre-standa mot applikationsområde.

• Införa synkronisering av signalen i mitten av datapaketen för att kunna sända

längre datapaket.

• Utöka funktionaliteten med exempelvis:

Pakethantering

Kryptering

Felkorrigering

(47)
(48)

Kapitel 7

Slutsatser

Syftet med examensarbetet var att utöka Field Embedded Communications AB:s in-terna bibliotek av programmeringskod med funktioner att modulera och demodulera data. Efter att koden skrivits har stor vikt lagts vid simuleringar för att säkerställa funktionalitet. Resultatet av simulationerna visar att modulationen fungerar på ett stabilt sätt.

Ett av kraven var att koden skulle vara modulärt uppbyggd, vilken den är. En av fördelarna med det visade sig tydligt då det enkelt gick att anpassa koden för att kunna exekveras i en ARM7 processor. Således testades att koden kunde exekveras i olika hårdvarumiljöer. Test i mikrokontrollern visade även ungefärliga värden på algoritmernas beräkningskomplexitet, detta kan användas som riktvärden vid kon-struktion av hårdvara vid framtida implementering.

Under utvecklingsperioden och rapportskrivandet har enbart program med öppen källkod nyttjats, utan några motgångar. Jag förväntade mig initialt att det skulle medföra problem, vilket turligt nog visade sig vara obefogade farhågor.

Trots att det finns mycket litteratur i ämnet modulationsteknik, var det ändå svårt att hitta bra översiktlig information om mjukvaruradio. Mycket information riktar sig till DSP och FPGA konstruktion, vilket inte rakt av går att implementera i en mikrokontroller eller vanlig processor då dessa inte är tillräckligt beräkningskrafti-ga. Stor vikt har därför lagts vid att skala ner algoritmerna utan att ge avkall på prestanda. Detta var en anledning till de omfattande simulationerna.

En svårighet under utvecklingen var att skriva simulationskod. Valet att skriva simu-lationskoden i C kändes helt rätt. Uppskattningsvis lades mer än dubbelt så mycket tid vid att skriva simuleringskoden som att skriva de faktiska algoritmerna. Ofta visade det sig att dåliga simuleringsresultat berodde på buggar i simuleringskoden. Dessa problem är svåra att undvika och skulle troligen även uppträda i kommersiella utvecklingsmiljöer (såsom MATLAB).

(49)
(50)

Nomenklatur

AC Alternating Current, växelström

ADC Omvandlare från en analog till en digital signal

CRC Cyclic Redundancy Check, algoritm för att upptäcka fel i dataöverföringar

DAC Omvandlare från en digital till en analog signal

DMA Direct Memory Access, teknik för att förflytta data utan att anstränga pro-cessorn

FIR Finite - Impulse - Response, digital filtertyp

GCC GNU Compiler Collection, samling kompilatorer till olika programmeringsspråk

LUT Look Up Table, tabeller med förgenererat data

Mark En 1:a i FSK modulering

OSI Open Systems Interconnection, konceptuell modell för datorkommunikation

i 7 lager

PTT Push To Talk, funktion för att växla mellan sändning och mottagning

PWM Pulse Width Modulation, pulsbreddsmodulering

RAM Random Access Memory, minne för tillfällig lagring av data RISC Reduced Instruction Set Computer, processortyp

s16 Datatyp, heltal lagrat i 2 byte

Space En 0:a i FSK modulering

Tråd Eng. Thread, metod för att exekvera processer parallellt

u08 Datatyp, positivt heltal lagrat i 1 byte

u16 Datatyp, positivt heltal lagrat i 2 byte

u32 Datatyp, positivt heltal lagrat i 4 byte

UART Universal Asynchronous Receiver/Transmitter, hårdvara för att skicka data seriellt

(51)
(52)

Förteckningar

Figurer

2.1 Blockschema över en generell CODEC . . . 6

2.2 Blockschema av kommunikationssystem . . . 7

2.3 Jämförelse mellan FSK och MSK . . . 9

2.4 Blockschema av superheterodyn-arkitektur . . . 11

3.1 Blockschema över systemets hårdvara . . . 13

3.2 Funktionsskiss av mottagararkitekturen . . . 16

3.3 Datapaket i lägsta lagret . . . 16

3.4 Blockschema över avkodningsarkitekturen . . . 18

4.1 Blockschema över brustest konstruktionen . . . 20

4.2 Sannolikhet för fel beroende av brus . . . 21

4.3 Blockschema över synkroniseringstest . . . 22

4.4 Synkroniseringingstest . . . 23

4.5 Blockschema över synkroniseringstest med lågpassfiltrering . . . 24

4.6 Simuleringsresultat av synkronisering med lågpassfiltrering . . . 24

4.7 Blockschema över fasfelssimulation . . . 26

4.8 Sannolikhet för byte-fel då synkronisering blir fel . . . 27

5.1 Laboreringsplattform . . . 30

5.2 Blockschema över laboreringsplattformen . . . 30 43

(53)

5.3 Datapaket med längd och CRC . . . 31

Tabeller

(54)

Litteraturförteckning

[1] Atmel Corporation. AT91 ARM Thumb-based Microcontrollers, November 2007. [2] Jonny Österman Carl Nordling. Physics Handbook. Studentlitteratur, Lund,

2004. 7:de upplagan.

[3] Alan Kaminsky. Data Signal Analysis. Rochester Institute of Technology, March 2005.

[4] Bengt Molin. Analog elektronik. Studentlitteratur, Lund, 2001.

[5] Ole Pedersen. Signaler och system. Institutionen för Teknik och Naturvetenskap, Campus Norrköping, November 2004.

[6] David M. Pozar. Microwave and RF Design of Wireless Systems. John Wiley & Sons, Inc., New York, 2001.

[7] Jeffery H. Reed. Software radio. Prentice Hall, New Jersy, 2002.

[8] Woon-Seng Gan Sen M. Kuo. Digital Signal Processors. Pearson Prentice Hall, New Jersy, 2005.

[9] Bernard Sklar. Digital Communications. Prentice Hall, New Jersy, 2006.

(55)

References

Related documents

Det är många gånger man kanske får sätta någon på hotell, vilket varken känns tryggt eller säkert .” Även företrädaren för frivilligorganisationen menar att det är

Eftersom myndighetens registerförfattning endast medger elektroniska utlämnanden i särskilt angivna situationer kan det medföra att en person som exempelvis förekommer som part i

När en myndighet inte tillför underlaget till det enskilda målet eller ärendet ska myndigheten se till att information kan lämnas om vilken eller vilka databaser eller andra

Uppsiktsansvaret innebär att Boverket ska skaffa sig överblick över hur kommunerna och länsstyrelserna arbetar med och tar sitt ansvar för planering, tillståndsgivning och tillsyn

The meeting is a joint meeting announced to the members of the Danish Society of Otolaryngology Head and Neck Surgery (DSOHH), Danish Society of Ophthalmology, Danish Society

Det här kan vi åstadkomma Genom att göra ortsanalyser skulle • kommunerna omedelbart få en bättre handlingsberedskap för orternas utveckling • sektorsintegreringen mellan

För att redan i programskedet få till stånd ett samarbete mellan projektets olika aktörer initierade Helsingborgshem en projektorga- nisation där byggherre, förvaltare, arkitekt

Lagförslaget om att en fast omsorgskontakt ska erbjudas till äldre med hemtjänst föreslås att träda i kraft den 1 januari 2022. Förslaget om att den fasta omsorgskontakten ska