• No results found

Innan den mottagna signalen kan A/D-omvandlas måste den blandas ner till basbandet. Idealt sker detta med en lokal oscillator som har exakt samma fre-

kvens och fas som sändarens lokala RF-oscillator. Om de två oscillatorerna inte är perfekt synkroniserade kommer RF-signalen inte blandas ner rätt, utan en liten frekvensavvikelse kommer att introduceras. Denna frekvensavvikelse kom- mer få symbolernas konstellationspunkter att rotera. För att uppnå synkronise- ring mellan oscillatorerna i sändaren och mottagaren används oftast en Phase

Locked Loop-krets (PLL). Denna del ligger dock utanför rapportens omfång och

tas inte upp mer.

2.6.3

Nerblandning

När mottagarens lokala RF-oscillatorn är synkroniserad med sändarens RF- oscillator blandas insignalen, r(t), med RF-signalerna som beskrivs i ekv. 2.25 och ekv. 2.26. LRFI(t) = r 2 Tscos(2πfct) (2.25) LRFQ(t) = − r 2 Tssin(2πfct) (2.26)

De resulterande nerblandade I(t) och Q(t)-signalerna ges av ekv. 2.27 och ekv. 2.28. I(t) = 2Es 2Ts cos(4πfct − φ(t; αi) + φ0) + 2Es 2Ts cos(−φ(t; αi) + φ0) + N0 (2.27) Q(t) = − 2Es 2Ts sin(4πfct−φ(t; αi)+φ0)+ 2Es 2Ts sin(−φ(t; αi)+φ0)+N0 (2.28)

I(t) och Q(t) innehåller spegelfrekvenser och måste lågpassfiltereras innan

de kan digitaliseras. Spegelfrekvensernas uppkomst kan härledas ur de trigono- metriska produktformlerna som beskrivs i ekv. 2.29 och ekv. 2.30.

cos(x)cos(y) = 1

2(cos(x + y) + cos(x − y)) (2.29)

cos(x)sin(y) =1

2.6.4

Matchade Filter

Det första steget i den digitala delen av mottagarmodellen är en bank av mat- chade korskorreleringsfilter. SOQPSK-TG kan generera 1024 olika vågformer9

under en symboltid, Ts, och en optimal mottagare skulle då behöva 204810 [11]

filter av längd Ts. Det är inte praktiskt att implementera en mottagare med så

många filter och därför används mottagare med reducerad komplexitet. Flera av de 1024 vågformerna är väldigt lika och antalet kan reduceras med en faktor två, per iteration, genom att ta medelvärdet för de två mest lika vågformerna.

Efter korskorreleringsfiltret ska summan av respektive filterkoefficienters kvadrat subtraheras från varje filterresultat i banken [1]. Resultatet av denna subtrak- tion ger sannolikheten att filtrets motsvarande symbol har mottagits. Ett värde nära noll innebär hög sannolikhet.

Korskorreleringsfilterna fungerar även som bandpassfilter och undertrycker därför AWGN-brus. Ekv. 2.31 beskriver filternas funktion.

y(t) = x(t) ∗ f (t) =

Z

−∞

x(t − u)f (u)du (2.31)

2.6.5

Symbolsynkronisering

Frekvensen på inkommande I(t) och Q(t) är en direkt konsekvens av bithas- tigheten och förutsätts vara känd av mottagaren. Fasläget på de inkommande signalerna är dock okänt och gör det nödvändigt att utföra en synkroniserings- process i mottagaren. Denna process synkroniserar en samplingsklocka med ti- den för en symbolperiod. Idealt ska samplingsögonblicket ske precis i övergången mellan två symboler eftersom signalen då har högst SNR och effekten av den tillförda ISI:n från RC-filtreringen kommer att vara minimerad [6].

Denna process kan ske helt i den digitala domänen eller vara en kombination mellan de digitala och analoga delarna.

Ett enkelt sätt att utföra denna process digitalt är att hitta maxvärden från ett av de matchade filterna före subtraktionen har utförts och generera en klocka med en period som precis rymms mellan två av dessa maxvärden. Ett maxvärde från det matchade filtret innebär att den inkommande signalen är synkroni- serad mot filtrets impulssvar. Detta är dock inte ett optimalt sätt att utföra symbolsynkronisering på eftersom samplingsögonblicket sannolikt aldrig kom- mer att infalla i det optimala utan med en viss variation runt detta ögonblick. Denna variation uppstår på grund av att mottagarens klocka kommer att driva i förhållande till klockan i sändaren som genererar signalen, och vice versa.

Denna klockdrift kommer även att intruducera utdragningar eller ihoptryck- ningar av den genererade samplingsklockan med jämna mellanrum beroende på vilken av klockorna som går snabbast.

Det finns fler mer avancerade metoder som bygger på att interpolera11värden

som matas till de matchade filterna och sedan använda någon av algoritmerna

9Det stora antalet vågformer beror på den införda ISI-effekt som gör att symbolutseendet

är beroende av ett visst antal tidigare pulser.

101024 filter för I-kanalen och 1024 filter för Q-kanalen 11Att uppskatta värden mellan samplade värden.

‘Early-late gate’, ‘Mueller and Muller’ eller ‘Gardner’ som beskrivs i [6]. Des- sa algoritmer genererar en felsignal som sedan återkopplas till interpolatorn. Samplingsklockan genereras på liknande sätt som i föregående metod men med skillnaden att när samplingsögonblicket inträffar så har interpolatorn utfört en kompensering av fasdriften och samplingen kommer då vara väldigt nära den optimala.

Interpolatorn utför alltså en kompensering av klockdriften och är en bättre synkroniseringsmetod än den tidigare nämda, den är dock inte perfekt på grund av de eventuella små fel som kommer att finnas i de interpolerade värdena.

Det tredje alternativet är en kombination mellan den digitala och analoga domänen och fungerar genom att någon av de ovanstående algoritmerna an- vänds på utdatan från de matchade filterna för att generera en felsignal. Denna felsignal återkopplas till en analog VCO som genererar klockan till mottagarens A/D-omvandlare [21]. Detta innebär att fasen på de inkommande signalerna kommer att vara helt synkroniserade mot de matchade filternas impulssvar.

Samplingsklockan genereras i detta fall även på liknande sätt som tidigare med skillnaden att inga utdragningar eller ihoptryckningar kommer att ske tack vare den nästan perfekta synkroniseringen mella mottagarens och sändarens klockor. Sampling av data från de matchade filterna kommer alltid ske så nära det ideala ögonblicket som upplösningen på VCO:n tillåter.

2.6.6

Viterbi / MLSE

Åren 1967 och 1972 var två viktiga år för informationsteorin. De åren gavs det ut uppsatser av Andrew Viterbi och David Forney som beskrev ett nytt sätt att avkoda faltningskoder och undertrycka ISI:n. Detta var viktigt eftersom kommunikation med hög datatakt innebär att man ökar effekten av ISI markant. I tidigare implementationer använde man mottagare av typen symbol-by-symbol eller integrate-and-dump, men dessa kunde inte minska bitfelssannolikheten och nya modeller för mottagare behövdes.

Tidigare implementationer för att undertrycka ISI-effekten infattade linjära

equalizer :s (EQ) och beslutsåterkopplade EQ:s, men dessa visade sig inte lämpa-

de för att lösa problemen med ISI. När viterbi-algoritmen lades fram ändrades mycket om hur mottagaren kunde konstrueras och hur ISI kunde hanteras. Vi- terbi lade fram förslaget att faltningskodad kommunikation kunde ses som en struktur som genererades av en ändlig tillståndsmaskin, och på så sätt kunde avkoda datan genom att sätta upp regler och antaganden kring stukturen och registrera hur signalen fortplantade sig i strukturen. Mellan MF-banken och viterbi-avkodaren finns ofta en Soft Quantizer som kvantiserar värdena från filterna till sannolikheter enligt tab. 2.3.

Sannolikhetsbitarna skickas sedan in till viterbi-algoritmen som generellt sett är en nodstruktur. Viterbi-algoritmen börjar med att räkna ut en slags ‘metric’ till nästa lodräta rad av noder genom en fördefinierad ‘metric’-alogritm12. Efter

en godtycklig längd (s.k. djup) av uträkningar spåras datan ut ur vägen som insignalen med största sannolikhet tagit. På detta sätt kan korta störningar och fel som t. ex. ISI undertryckas effektivt av en viterbiavkodare.

Problemet med Viterbiavkodare är att mottagarstrukturen kan bli mycket komplex, beroende på vilka egenskaper man implementerar i viterbi-algoritmen,

12Algoritmen beskriver sannolikheten att signalen propagerat mellan två noder, ofta används

Kvantiserat värde Betydelse

000 Starkast 0:a

001 Relativt stark 0:a

010 Relativt svag 0:a

011 Svagaste 0:a

100 Svagaste 1:a

101 Relativt svag 1:a

110 Relativt stark 1:a

111 Starkast 1:a

Tabell 2.3: ‘Soft-Quantizer’-nivåer.

men den är fortfarande mycket populär på grund av sin effektivitet vid lägre djup.

Forney utvecklade sedan teorin kring viterbi-algoritmen. Han föreslog att ISI kunde modelleras som en process driven av en ändlig tillståndsmaskin. Den- na tekniken blev känd som maximum likelihood sequence estimation (MLSE). Det visade sig att MLSE implementeringen kunde undertrycka alla ISI på vissa enklare kanalmodeller, men inte med samma effektivitet under mer komplexa förhållanden.

2.6.7

Differentialavkodning

Efter viterbi-algoritmen utrönat vilka noder i trellisträdet13 signalen passerat,

ger den vidare informationen till differentialavkodaren. Differentialavkodarens uppgift är att lösa ut den faktiskt skickade datan från sändaren utifrån no- derna signalen befunnit sig i. Viterbi-algoritmen beskriver I[n] och Q[n] i kon- stellationsdiagramet för varje symbol, och avkodaren räknar ut vilken data som skickats utifrån övergångarna mellan de olika konstellationspunkterna. Efter av- kodaren mottagit två I[n] och Q[n]-par utröner avkodaren vilka databitar som skickats. På grund av den differentiella kodningen är alla tillstånd som inte änd- rar sig från ett I[n] och Q[n]-par till ett annat alltid utdatan ‘02’, medans alla

par som ändrar sig mellan två efterföljande tillstånd alltid är ‘12’.

2.6.8

Optimal mottagning

När man designar en mottagare brukar man utgå från en modell man kallar op- timal mottagare. En optimal mottagare är en ideal modell av hur en mottagare ska se ut under teoretiska förhållanden. Det går inte alltid att implementera en ideal mottagare, dels på grund av komplexiteten och/eller på grund av att den modellerade verkligheten inte agerar på samma sätt som verkligheten gör.

Man använder denna modell för att kunna utgå från ett startläge i design- processen, och att man alltid kan jämföra prestandan med en teoretiskt ideal motsvarighet.

T. ex. beskriver Shannon-Hartleys [2] lag om kanalutnyttjande, C = B × log(1 +S

N) den teoretiskt högsta kapaciteten och kan ge ett referensvärde för sin

implementation. Det går att uppskatta matematiskt vilken effekt på signalnivån,

Figur 2.17: Bitfelssannolikhetsjämförelse.

S, för att kunna utnyttja kommunikationslänken i brus med effekten N med kapaciteten C.

En vanlig jämförelse man gör med sin mottagare och den optimala mottaga- ren är en bitfelssannolikhetsjämförelse. Detta ger en snabb överblick av den vik- tigaste aspekten av kommunikation, d.v.s. att kunna ta emot felfri information. I fig. 2.17 kan man se en jämförelse mellan några olika modulationsteknikers te- oretiskt optimala bitfelssannolikheter. Man kan även se att differentiell kodning (DSOQPSK14 och DBPSK) har en negativ effekt på bitfelsannolikheten. Detta

beror på att differentialkodningen är rekursiv, d.v.s. en sänd databit kommer att påverka nästa skickade bit.

14Tidigare beskrivna versioner av SOQPSK är även differentiellt kodade. DSOQPSK i sam-

Kapitel 3

Implementation

I den implementerande delen av projektet gjordes simuleringar av både sända- ren och mottagaren i MATLAB och GNU Octave. Det gjordes för att ha en referensdesign och jämföra de hårdvaruimplementerade delarna. Eftersom fel- sökning är mycket otympligt att utför i hårdvara, och speciellt VHDL, försöktes debuggning av implementeringarna utföras så mycket som möjligt på mjukva- rusimuleringarna.

Simuleringarna ger även bra referensjämförelser för hur bra mjukvaruidén är implementerad i hårdvaran. Många delar av sändaren och mottagaren är lät- tare att implementera i mjukvaran på grund av många saker, men först och främst att man kan arbeta med finita sekvenser information och manipulera hela informationsvektorn utan att ta hänsyn till någon tidssekventiell ordning. Detta går inte att göra i hårdvaran då systemet ska arbeta i realtid och module- ra/demodulera inkommande signaler tidssekventiellt. Även att man kan arbeta på enstaka inbitar för att se enskilda effekter är det en stor fördel med att simulera delar av designen först.

MATLAB1valdes som simuleringsmiljö på grund av ett mycket utbrett funk-

tionsbibliotek. Detta är en stor fördel då simuleringen ska implementeras. Istället för att skriva alla funktioner från början, finns många redan implementerad.

I detta kapitel kommer först en kort beskrivning av den mjukvarubaserade designen. Sedan kommer hårdvarudesignen som implementerades tas upp.

1I resterande delar av rapporten kommer endast MATLAB nämnas som simuleringsmiljö

3.1

Mjukvaruimplementering

3.1.1

Modulator

Figur 3.1: Mjukvarumodulator struktur.

Modulatorn börjar med att läsa in en förutbestämd sekvens data, an, och

skickar den till differentialkodaren som kodar om indatan enligt ekv. 2.18. Sam- ma funktion i simuleringen mappar även om de differentialkodade bitarna med alpha-kodningen beskriven i ekv. 2.19. Sekvensen med data skickas vidare till RC-filtret som ska pulsforma indatan, i enighet med standarden för SOQPSK- TG [19]. Både fönsterfunktionen, w(t) beskriven i ekv. 2.17, och RC-pulsen, n(t) från ekv. 2.16, beräknas utan inbyggda funktioner i MATLAB för att kunna skräddarsy inställningarna och resultatet från modulatorn. Funktionen returne- rar faspulståget, φ(t; αi). I(t) och Q(t) räknas ut med [17]:

I(t) = cos(φ(t; αi)) (3.1)

Q(t) = sin(φ(t; αi)) (3.2)

Fig. 3.2 visar simulerade resultat för faspulsen, φ(t; αi), de överlagrade fre-

kvenspulserna, f (t), och alphapulserna, αi, med indatasekvensen ‘10101011102’.

Fig. 3.3 visar simulerade vågformer för I(t) och Q(t) som ges av ekv. 3.1 och ekv. 3.2 samt den bandpassmodulerade signalen, v(t), som förekommer i fig. 2.14 och beskrivs av ekv. 2.23 med indatasekvensen ‘10101011102’.

För att jämföra mjukvarumodulatorn mot känd data och karateristisk från andra källor har utvärderingar av spektraltäthetsdiagram2, Scatter Plot och ett

ögondiagram gjorts. Spektraltätheten visar signalen effektfördelning i frekvens- planet, se fig. 3.4. SOQPSK-TG har en mycket skarp karakteristik jämfört med många andra moduleringar. I Scatterploten visas vart konstellationspunkter- na hamnar efter informationen modulerats. Eftersom SOQPSK-TG innefattar en införd ISI kommer punkterna att sprida sig lite kring de ideala konstella- tionspunkterna. Efter utvärdering av scatterploten i fig. 3.5 som är tagen från mjukvarumodulatorn, kan man se att punkterna hamnar väl inom marginalerna. Även ett ögondiagram visas i fig. 3.6 där man kan se effekten av den tillförda ISI:n, nollgenomgångar och liknande.

Figur 3.2: Simulerade vågformer för φ(t; αi), f (t) och αi.

Figur 3.5: Simulerad ‘Scatter’-plot.

3.1.2

Demodulator

Mottagaren, eller demodulatoralgoritmen, är även implementerad i MATLAB. Detta ger en möjlighet att utvärdera olika typer av mottagartyper under kon- trollerade förhållanden. Modellen som simulerades i MATLAB är en typ av modifierad viterbi-algoritm som utför ‘maximum likelihood’-estimering över 3 symboler. Den modifierades även så att det skulle vara en minimal övergång från MATLAB-implementationen till hårdvara. På grund av att MATLAB-modellen arbetar med ett hög-nivå scriptspråk och på en tämligen kort datasekvens kräv- des ändå stora förändringar för att kunna syntetisera liknande mottagare i VHDL.

Figur 3.7: Mjukvarudemodulator struktur.

Principen för mottagaren är att den läser in en fil med data representerande filterresultat och arbetar sedan utifrån den. I MF-banken finns fyra3olika filter

som representerar ett medelvärde av de olika symbolerna som kan uppstå i I(t) och Q(t).

I 2.6.4 nämns att summan av filterkoefficienternas kvadrat ska subtraheras från respektive filter men detta behövs inte när endast ett medelvärdesfilter ur kategori A t.o.m. D (se fig. 3.8) används vilket är fallet i den implementerade mottagaren. Dock måste summan av filterkoefficienters kvadrat normaliseras så att de är lika för alla filter så att inte sannolikhetsinformationen som skickas vidare till sekvensestimeringen väger olika för olika symboler.

I fig. 3.8 visas alla unika vågformer, 256 st symbolformer/filterkategori. I fig. 3.9 visas de medelvärdesbildade filterna som används i MF-banken. När inläsningen är färdig maximerar mottagaren sannolikheten för att signalen tagit en viss väg genom trellisträdet. Fig. 3.10 visar alla möjliga vägar signalen kan gå genom trellisträdet.

P.g.a. utformningen av mottagaren kan man sätta upp vissa begränsingar på hur en signal får gå genom trellisträdet. Detta bidrar till att korrigera små fel som kan uppstå av t. ex. snabb fädning eller korta interferensdistorsioner. I fig. 3.10 ser man alla möjliga vägar, med begränsingar, signalen kan gå under 3Ts. Om signalen fick gå utan begränsingar skulle varje slut-nod terminera 64

möjliga vägar genom terllisträdet, men med begränsningarna som sätts upp kan man decimera antalet vägar med en faktor 4.

När filterresultaten bearbetats och algoritmen bestämt vilka noder som pas- serats av signalen, kan demodulatorn beräkna den faktiska skickade informa- tionen utifrån övergångar mellan noderna. I mjukvarumottagaren finns även

3Totalt är det 8st på grund av att I(t) och Q(t) har en lika uppsättning med filter om

Figur 3.8: Överlagrade & kategoriserade MF-former.

Figur 3.9: Medelvärdesbildade MF-former.

en bitfelssannolikhetsuträkning implementerad för att kunna estimera effekti- viteten på demodulatoralgoritmen. Ett bitfelssannolikhetsdiagram från mjuk- varudemodulatorn kan ses i fig. 3.11. I diagramet finns en jämförelse mellan den implementerade demodulatoralgoritmen och en enkel ‘symbol-by-symbol’- mottagare4.

4En ‘symbol-by-symbol’-mottagare avkodar utdatan direkt från MF-banken utan att utföra

Figur 3.10: Trellisträd.

3.2

Hårdvaruimplementering

Hårdvaruimplementationen i projektet utfördes med två utvecklingskort från Altera. Utvecklingskorten används till sändaren respektive mottagaren. Pro- gramvaran för att simulera och syntetisera designen är Alteras Quartus II v7.2. Utvecklingskorten är bestyckade med Cyclone II FPGA:er och två DA/AD- omvandlare där ett DA/AD-par används för I(t) och ett par till Q(t). Mellan utvecklingskorten kopplas lågpassfilter av första ordningen med en brytfrekvens på 50 MHz för att filtrera bort kvantiseringsbrus skapat av D/A-omvandlaren.

Delar av designen använder Alteras IP-block vilka är färdiga bibliotek med olika funktioner, t. ex. FIR-filter och NCO. För felsökning i hårdvaran används IP-blocket Signal Tap II vilket är en logikanalysator som använder det inbyggda minnet i FPGA-kretsen för att spela in datasekvenser som sedan överförs till Quartus via en JTAG-anslutning.

3.2.1

Hårdvara / Utvecklingskort

Altera Cyclone II DSP Utvecklingskort FPGA

FPGA-modell Altera Cyclone II EP2C70F672

Logiska element 68416 st

Inbyggda 18x18 multiplikatorer 150 st

M4K RAM-block (4kbit + 512 paritetsbitar) 250 st

PLL:er 4 st

Totalt antal RAM-bitar 1152000 st

I/O-pinnar 422 st

D/A-Omvandlare

D/A-modell Texas Instruments DAC904

Omvandlingshastighet 165 MSampels/s

Upplösning 14 bitar

A/D-Omvandlare

A/D-modell Texas Instruments ADS5500

Omvandlingshastighet 125 MSampels/s

Upplösning 14 bitar

Related documents