Masterproef 8 kanaals IQ-demodulator met beamformingsmogelijkheden Studiegebied Industriële wetenschappen en technologie Opleiding Master in de industriële wetenschappen: Elektronica-ICT Afstudeerrichting Elektronica Academiejaar 2009-2010
Cardoen Pepijn
Howest - Departement Graaf Karel de Goedelaan, Graaf Karel de Goedelaan 5, 8500 Kortrijk
Masterproef 8 kanaals IQ-demodulator met beamformingsmogelijkheden Studiegebied Industriële wetenschappen en technologie Opleiding Master in de industriële wetenschappen: Elektronica-ICT Afstudeerrichting Elektronica Academiejaar 2009-2010
Cardoen Pepijn
II.
Woord vooraf
Tijdens het laatste academiejaar van de opleiding ‘Professionele Master in de Elektronica’ is één van de belangrijkste lesonderdelen het schrijven en realiseren van een masterproef. Deze masterproef geeft de student de mogelijkheid om zichzelf te bewijzen bij het onderzoeken van een welbepaald probleem, waarbij de kennis die de student tijdens de voorbije jaren heeft opgedaan gebruikt en toepast op een praktische realisatie. Na deze proef krijgt de student een beter inzicht in hoe een onderzoek hoort te gebeuren in een bedrijfomgeving. Tijdens het afgelopen academiejaar werd ik bijgestaan door verschillende mensen. Deze mensen zorgden voor het slagen van mijn masterproef, en hielpen tijdens het schrijven van deze masterproeftekst. Zonder deze mensen zou dit alles dus niet mogelijk geweest zijn, en daarom wens ik hen in het bijzonder te bedanken: - Alle professoren en personen die mij de kennis verschaft hebben om deze masterproef te kunnen realiseren. - Mijn promotor Dhr. Prof. C. Stevens en mijn co-promotor Dhr. Ing. W. Vantomme. Zij stonden mij tijdens deze periode met raad en daad bij, en ik kon bij hen terecht als ik met technische vragen zat. - Ik wens ook Dhr. B. Samyn en Dhr. X. Vanhoutte te bedanken voor de vele hulp die ik van hen gekregen heb tijdens het academiejaar, zonder hen was een realisatie nooit mogelijk geweest. -Daarnaast wil ik ook mijn ouders, mijn vriendin en mijn familie bedanken voor de steun die ik van hen gekregen heb tijdens dit onderzoek. Verder gaat mijn dank ook uit naar Howest, deze hogeschool gaf mij de kans om mezelf verder te kunnen ontplooien, en mijn kennis te verruimen.
Deze masterproef is dan ook een mooie afsluiting in dit hoofdstuk van mijn leven. De kennis en wijsheid die ik tijdens deze jaren heb mogen genieten, zullen in verdere hoofdstukken gegarandeerd terug aan bod komen, waarbij ik met veel plezier zal terugblikken op deze jaren.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 4
III.
Abstract
Today’s technology is indispensable in this modern world. Everyone has the need for using the newest developments in the field of communication resources. Wireless systems form the basics of our daily communications. These systems could be used to transmit or receive data in several applications such as mobile phones, internet routers or even digital television with satellite connection. More and more applications will become wireless in the near future, so flexibility and connectivity will increase tremendously. More and more we go to a consumer society where customers can choose the latest technologies as long as the financial cost permits this. Because of this there is a need for delivering a cheap but also a good technology. For this reason, research in this field is one of the most important things of the moment. Research in this field is not only accomplished by companies but also by university colleges and universities. One of these is the university college Hogeschool West-Vlaanderen (HOWEST in co-operationship with the INTECdepartment of the Ghent University (UGent)). Their main focus is on the 2,45GHz ISM frequency band. This paper describes the demodulation section (reception part) of such a wireless system. It is not difficult to imagine that in the field of high-frequency many knowledge and experience is required. For this reason, extra attention was given to efficiency and flexibility. The properties of the discussed receiver are much better than an common, ordinary receiver. After observations and measurements, scientific evaluation will be performed and published in articles.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 5
IV.
Inhoudsopgave
II.
Woord vooraf ......................................................................................................................... 4
III.
Abstract.................................................................................................................................. 5
IV.
Inhoudsopgave ....................................................................................................................... 6
V.
Lijst van figuren ...................................................................................................................... 8
VI.
Lijst van tabellen .................................................................................................................. 10
1.
Inleiding ............................................................................................................................... 11
2.
Theoretische beschouwingen ............................................................................................... 12 2.1 Hoogfrequent ontwerp.......................................................................................................... 12 2.1.1
Weerstand (Koolweerstand 0805) .............................................................................. 12
2.1.2
Condensator (Ceramisch 0805) .................................................................................. 13
2.1.3
Transmissielijn (op FR4 materiaal).............................................................................. 14
2.2 Quadrature Amplitude Modulatie van IQ signalen ................................................................. 16 2.2.1
Principe ..................................................................................................................... 16
2.2.2
(Q)AM modulatie ....................................................................................................... 17
2.2.3
(Q)AM demodulatie ................................................................................................... 18
2.2.4
Bit-Error-Rate............................................................................................................. 19
2.2.5
Zendvermogen........................................................................................................... 20
2.3 Beamforming en Beamreception ........................................................................................... 21
3.
2.3.1
Principe ..................................................................................................................... 21
2.3.2
Soorten beamforming ................................................................................................ 22
Concept ................................................................................................................................ 24 3.1 Algemeen Blokkenschema..................................................................................................... 24 3.2 LNA versterker (AD8334) ....................................................................................................... 25 3.2.1
Ruisproductie............................................................................................................. 25
3.2.2
Werking ..................................................................................................................... 26
3.2.3
Actieve impedantie-aanpassing.................................................................................. 27
3.2.4
Versterkingsbepaling ................................................................................................. 28
3.2.5
Bandbreedte .............................................................................................................. 29
3.3 QAM-demodulator (AD8339) ................................................................................................ 30 3.3.1
Werking ..................................................................................................................... 30
3.3.2
De SPI-interface ......................................................................................................... 31
3.4 Controllerboard..................................................................................................................... 33 3.5 Grafische User Interface ........................................................................................................ 34 4.
Praktische Uitwerking........................................................................................................... 35
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 6
4.1 Schema Ontwerp ................................................................................................................... 35 4.1.1
HF-bord ..................................................................................................................... 35
4.1.2
µController bord ........................................................................................................ 36
4.2 Prototyping ........................................................................................................................... 37 4.3 PCB Ontwerp ......................................................................................................................... 38 4.4 Resultaten ............................................................................................................................. 40 4.4.1
LNA versterker (AD8334) ........................................................................................... 40
4.4.2
QAM-demodulator (AD8339) ..................................................................................... 42
4.4.3
Uitgangsopamps ........................................................................................................ 43
4.4.4
Specificaties van het totale systeem........................................................................... 45
4.4.5
Controllerboard ......................................................................................................... 46
4.4.6
Programmacode (µController) ................................................................................... 46
4.4.7
Programmacode (GUI) ............................................................................................... 47
4.4.8
Resultaten totale werking .......................................................................................... 49
5.
Problemen en (mogelijke) Oplossingen................................................................................. 56
6.
Uitbreidingsmogelijkheden................................................................................................... 56
7.
Besluiten en persoonlijke ervaringen .................................................................................... 57
8.
Literatuurlijst ........................................................................................................................ 58
9.
Planning ............................................................................................................................... 59
10.
Financiële Analyse ................................................................................................................ 60
11.
Bijlagen ................................................................................................................................ 61
a.
Referenties van de gebruikte datasheets ............................................................................... 62
b.
Programmacode van de GUI .................................................................................................. 63
c.
Programmacode van de µcontroller ...................................................................................... 79
d.
Schema van het LNA-versterkerboard ................................................................................. 101
e.
Schema’s van het demodulatorboard .................................................................................. 102
f.
Schema’s van het µcontrollerboard .................................................................................... 106
g.
PCB van het µcontrollerboard.............................................................................................. 108
h.
PCB van het LNA-versterkerboard ....................................................................................... 109
i.
PCB van het demodulatorboard........................................................................................... 110
j.
Handleiding van de µcontrollerboard .................................................................................. 110
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 7
V.
Lijst van figuren
Figuur 1: Equivalent HF-model weerstand ........................................................................................ 12 Figuur 2: Equivalent model Condensator .......................................................................................... 13 Figuur 3: Equivalent HF-model Transmissielijn .................................................................................. 14 Figuur 4: QAM16 .............................................................................................................................. 16 Figuur 5: IQ – modulator .................................................................................................................. 17 Figuur 6: IQ – demodulator .............................................................................................................. 18 Figuur 7 No Beamforming vs Beamforming ...................................................................................... 21 Figuur 8: Static vs Adaptive Beamforming ........................................................................................ 22 Figuur 9: Beamforming ..................................................................................................................... 22 Figuur 10: Beamreception ................................................................................................................ 23 Figuur 11: Beamforming (concept) ................................................................................................... 23 Figuur 12: Algemeen blokkenschema ............................................................................................... 24 Figuur 13: Ruisproductie .................................................................................................................. 25 Figuur 14: LNA versterker ................................................................................................................. 25 Figuur 15: LNA versterker AD8334 ................................................................................................... 26 Figuur 16: Blokkenschema één kanaal .............................................................................................. 26 Figuur 17: Actieve impedantie aanpassing ........................................................................................ 27 Figuur 18: Variable Gain Amplifier .................................................................................................... 28 Figuur 19: Post Amplifier .................................................................................................................. 28 Figuur 20: Ingangsfilter LNA ............................................................................................................. 29 Figuur 21: Transfertkarakteristiek ingangsfilter LNA ......................................................................... 29 Figuur 22: Blokkenschema QAM-demodulator ................................................................................. 32 Figuur 23: IQ-demodulator (AD8339) ............................................................................................... 32 Figuur 24: 4LOP faseregeling ............................................................................................................. 34 Figuur 25: SPI- aansturing ................................................................................................................. 34 Figuur 26: SPI-codevolgorde ............................................................................................................. 32 Figuur 27: Gegenereerde SPI-code ................................................................................................... 33 Figuur 28: Blokkenschema µcontroller .............................................................................................. 33 Figuur 29: Ontdendering MAX6817 ................................................................................................... 34 Figuur 30: Blokkenschema HF-bord ................................................................................................... 35 Figuur 31: Prototype 4-kanaals pcb .................................................................................................. 37 Figuur 32: Prototype koelvlak LNA ................................................................................................... 17 Figuur 33: Simulatie uiteindelijke pcb ............................................................................................... 38
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 8
Figuur 34: Foto werkelijke pcb ......................................................................................................... 38 Figuur 35: Foto µcontrollerbord ....................................................................................................... 39 Figuur 36: Close-up foto Pic18f4550 .................................................................................................. 39 Figuur 37: Blokkenschema -> LNA Versteker ..................................................................................... 40 Figuur 38: Werking LNA-versterker .................................................................................................. 40 Figuur 39: Ingangstrap LNA .............................................................................................................. 41 Figuur 40: Uitgangssignalen van de LNA ........................................................................................... 41 Figuur 41: Blokkenschema -> Demodulator ....................................................................................... 42 Figuur 42: Blokkenschema -> Uitgangsopamps.................................................................................. 43 Figuur 43: Uitgangsopamps (voorbeeld van kanaal Q4) .................................................................... 43 Figuur 44: Versterking AD8021 ......................................................................................................... 44 Figuur 45: Maximale bandbreedte bij maximale versterking ............................................................. 44 Figuur 46: SPI-code (voorbeeld) ....................................................................................................... 46 Figuur 47: GUI SPI Controller v1.0 ..................................................................................................... 47 Figuur 48: GUI ‘port properties’ ....................................................................................................... 27 Figuur 49: Werking µcontrollerbord ................................................................................................. 49 Figuur 50: Instellen µcontrollerbord ................................................................................................. 49 Figuur 51: Opstelling meting op totaal concept ................................................................................ 50 Figuur 52: Foto van het evaluationbord ............................................................................................ 32 Figuur 53: Voorbeeld van AM-signaal ............................................................................................... 51 Figuur 54: Gedemoduleerd datasignaal............................................................................................. 51 Figuur 55: Data signaal op oscilloscoop ............................................................................................. 52 Figuur 56: Sommeerfout van de opamps ........................................................................................... 52 Figuur 57: Signaal bij 0° fasedraaiing ................................................................................................. 53 Figuur 58: Signaal bij 180° fasedraaiing ............................................................................................ 53 Figuur 59: xy-mode van 2 FG ............................................................................................................ 54 Figuur 60: FG meer uit fase ............................................................................................................... 54 Figuur 61: Uitgangssignaal bij fasefout aan de ingangen ................................................................... 55 Figuur 62: Theoretisch signaal, ontstaan door fasefouten ................................................................. 55
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 9
VI.
Lijst van tabellen
Tabel 1: Fasecodes ........................................................................................................................... 31 Tabel 2: Bandbreedte bepaling ......................................................................................................... 40 Tabel 3: Eigenschappen gemaakt HF-bord ........................................................................................ 40 Tabel 4: Eigenschappen evaluation bord .......................................................................................... 40 Tabel 5: Deadlines ............................................................................................................................ 55 Tabel 6: Samenvatting van alle kosten .............................................................................................. 56
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 10
1. Inleiding Iedereen heeft er ooit wel al eens mee te maken gehad: één of ander draadloos systeem waarmee data kan verzonden of ontvangen worden. Kijk maar naar uw draadloze router, uw gsm of zelfs uw digitale tv via een schotelantenne. In de toekomst zullen meer en meer systemen draadloos worden. Dit om de bereikbaarheid, flexibiliteit, en toegankelijkheid te vergroten. Men gaat steeds meer naar een consumentenmaatschappij waarbij de klant zijn eisen kan stellen aan de door hem gekozen technologie. Dit is dan weliswaar in contradictie met de financiële kant van de zaak. Hierdoor ontstaat de noodzaak om goedkope maar tevens ook goede technologie af te leveren. Onderzoek naar deze technologie is daarom een van de belangrijkste sectoren op dit ogenbik. Niet enkel bedrijven maar ook universiteiten en hogescholen zijn bezig met onderzoek naar deze technologie. Een van deze onderzoekslijnen is deze van de Hogeschool West-Vlaanderen (HOWEST) in samenwerking met Ugent-INTEC. Deze zijn bezig met ontwikkelingen op de 2,45GHz band ofwel de consumerband (ISM-band). Daar deze masterproef kadert in dit onderzoek, is het belangrijk te weten welke ontwikkelingen er reeds behaald werden en waar zich de grootste moeilijkheden bevinden. Hieronder vindt men de voornaamste: -
8 kanaals 2,45GHz QAM modulator en zender 8 kanaals A/D convertoren Prototype 2,45GHz QAM demodulator …
De masterproef die in deze thesis beschreven wordt omvat het demodulatorgedeelte, of met andere woorden het ontvangstgedeelte van een dergelijk beschreven draadloos systeem. Het is niet moeilijk om in te beelden dat op het gebied van hoogfrequent veel kennis en ervaring vereist is. Daarom werd vooral aandacht besteed aan optimaliteit en flexibiliteit. De besproken ontvanger heeft als eigenschap dat deze een veel betere ontvangst zal hebben dan een gewone ontvanger. Ook is het noodzakelijk dat bij vaststellingen vakkundige verklaringen worden gegeven en dat deze worden uitgewisseld via artikels. Hierdoor verlopen zulke ontwikkelingen echter redelijk traag. Daarom dat werken in teamverband een goede oplossing kan bieden om de gevraagde technologie zo goed en vooral zo goedkoop mogelijk af te leveren.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 11
2. Theoretische beschouwingen Om het concept van deze masterproef zo goed mogelijk te begrijpen is het noodzakelijk om eerst enkele theoretische beschouwingen door te nemen. Er wordt vooral beschreven hoe de verschillende componenten zich zullen gedragen op hoogfrequentgebied, zodat men weet waar men aandacht moet aan besteden bij het gebruik ervan. Ook wordt er ingegaan op de theorie van het moduleren en demoduleren daar dit het belangrijkste aspect van deze masterproef vormt. Tot slot volgt nog een woordje over beamforming, wat dit precies inhoudt, en waar dit wordt toegepast.
2.1
Hoogfrequent ontwerp
Hoogfrequenttechniek is een aparte tak van de elektronica. Het is ook een van de moeilijkere takken daar men op hoge frequenties niet steeds de gewenste resultaten bereikt t.o.v. de theorie. Ervaring en kennis bieden hier een goede oplossing maar zijn niet altijd voor handen. Het is echter toch belangrijk om wat theorie onder de loep te nemen zodat het duidelijker wordt hoe alles functioneert. Eerst en vooral zal worden aangetoond dat de meeste basiscomponenten op hoogfrequent niet meer zullen zijn wat ze lijken. 2.1.1
Weerstand (Koolweerstand 0805)
Weerstanden lijken de simpelste componenten in de elektronica, maar op hogere frequenties veranderen de fysische eigenschappen van deze componenten enorm. De gebruikte weerstanden (0805) kunnen worden voorgesteld door hun hoogfrequent equivalent model: R
Lp
Cp
Figuur 1: Equivalent HF-model weerstand
Vanuit dit model kan een transfertkarakteristiek opgesteld worden (1). Deze wordt verder uitgewerkt, zie formule (2): ∗ 1
+ =
+ 1
+
=
. .
+ 1+
+
∗
²
≌
. .
(1)
(2) 1+
Bij hoge weerstandswaarden valt de kwadratische term weg in de noemer van de breuk en krijgt men: ≌
1+
Deze term impliceert een eerste orde LDF functie of m.a.w. bij grote weerstandswaarden zal de impedantie vanaf een bepaald punt dalen. Het is dus vooral de condensatorwaarde die hier een belangrijke rol zal spelen.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 12
Bij lage weerstandswaarden echter valt de volledige noemer weg. Hierdoor bekomt men onderstaande formule: ≌
+
Merk op dat de condensatorterm uit de formule is verdwenen en de spoelterm in de plaats is gekomen. Hierdoor zal een hoog doorlaat functie ontstaan. M.a.w. bij lage weerstandswaarden zal de impedantie vanaf een bepaalde frequentie stijgen.
Het is dus belangrijk om de gekozen weerstanden niet te hoog te kiezen, zodat het 2de orde gedrag van de weerstanden verdwijnt. Bij lagere weerstandswaarden zal echter een kleinere vermogendissipatie toegelaten worden. De gekozen weerstanden (50, 100, 270 en 1000Ohm) kunnen worden ingedeeld op basis van de waarde t.o.v. frequentie. 75 Ohm zal resistief blijven tot 10GHz. Kleiner dan deze waarde wordt deze inductief, en bij grotere waarden wordt deze capacitief.
2.1.2
Condensator (Ceramisch 0805)
Ook het equivalent model van een condensator kan op deze manier worden weergegeven: C
Rp
Lp
Figuur 2: Equivalent model Condensator
De transfertkarakteristiek kan dan als volgt worden gevonden (3) en omgevormd (4): = 1
=
1+
+
+
+
∗
²
(3)
(4)
De eigen resonantie frequentie van de condensator (SFR) kan dan gevonden worden met de volgende formule: =
1
Bemerking Er moet rekening gehouden worden met het feit dat de gebruikte condensatoren geen resonantiefrequentie hebben die binnen het frequentiebereik van de toepassing liggen!
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 13
2.1.3
Transmissielijn (op FR4 materiaal)
Wanneer men een klein stukje van een transmissielijn bekijkt op hoogfrequentgebeid, dan zal men tot de conclusie kunnen komen dat deze bestaat uit onderstaand equivalent schema:
R = serie weerstand (/m) L = serie inductantie(H/m) G =shunt conductantie (S/m) C = shunt susceptantie (F/m)
Figuur 3: Equivalent HF-model Transmissielijn
Vertrekkende van de Maxwellvergelijkingen kunnen via bovenstaande opstelling de “telegrapher equations” worden afgeleid1. Wanneer men een fractie neemt van iedere waarde, gemarkeerd als (delta), kan men onderstaande vergelijkingen opstellen via de wetten van Kirchoff: ( , )
( , )− ( +∆ , )= ∆ ( , )+ ∆
( , )− ( +∆ , ) = ∆
( + , )+ ∆
(5) ( , , )
(6)
Deelt men alles door z en neemt men nu de limiet van z gaande naar 0 dan vindt men: lim
( , )− ( +∆ , ) =− ∆
lim
( , )− ( +∆ , ) =− ∆
∆ →
∆ →
( , )
( , )
=
=
( , )+ ( , )+
( , )
(7)
( , )
(8)
Wanneer men dan de tweede vergelijkingen in eerste substitueert (en omgekeerd), vindt men:
² ( , ) = (− ² ²( , )
1
=−
( , )− ( , )
−
( , )
²( , )
(9)
² ( , ) ²
Zie Cursus Microgolf Systemen en Transmissielijnen
Cardoen Pepijn
)−
(10)
Prof. Ir. Stevens C
Howest
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 14
Na deze omgevormd te hebben kan dan uiteindelijk gevonden worden dat:
² ( , ) 1 ² ( , ) =− =0 ² ² ²
(11)
²( , ) 1 ²( , ) =− =0 ; ² ² ²
=
1
(12)
Deze differentiaalvergelijking (standaardvorm van de golfvergelijking van Helmholtz) kan men nu oplossen via Fourier Transform (Laplace transformatie is ook mogelijk). De oplossing wordt dan beschreven als:
( , )=
( , )
;
( , )=
( , )
(13)
( , )=
( , )
;
( , )=
( , )
(14)
Via inverse Fourier Transform kan men dan de uiteindelijke bekende vergelijkingen voor de golfvormen vinden:
( , )=
−
+
+
=
( , )= ′
−
+ ′
+
= ′
=
−√
−√
+ ( +√
+ ′( + √
)
(15)
)
(16)
1
Via deze vergelijkingen is het nu mogelijk om de totale impedantie van een lange lijn te berekenen. Er kan aangetoond worden dat deze gelijk is aan: =
+ +
(17)
De lijn moet zodanig ontworpen worden dat ‘Zo’ gelijk is de impedantie van de bron. Bij het ontwerpen van de printbanen doet men dit door de dikte van de geleiderbanen gelijk te stellen aan 40mil, en de clearance aan 8mil.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 15
2.2
Quadrature Amplitude Modulatie van IQ signalen
Er zijn vele mogelijke manieren om signalen te versturen, en bij iedere ervan zullen één of meerdere factoren belangrijk zijn in de hoeveelheid verzonden data. De drie bekendste technieken zijn AM (Amplitude Modulatie), FM (Frequentie Modulatie), PM (Fase Modulatie). Dit zijn modulatie technieken om digitale signalen op een analoge draaggolf te plaatsen en deze zo te versturen. Bij ‘quadrature amplitude modulatie’, of kortweg QAM wordt een combinatie gemaakt van amplitude modulatie en fase modulatie. Dit is een multilevel-codering zodat meerdere bits simultaan verstuurd kunnen worden. Er zijn reeds vele varianten beschikbaar. Zo onderscheidt men QAM4 (of QPSK), QAM16, QAM32, QAM64, QAM128, enz. 2.2.1
Principe
Het principe berust op 2 ingangssignalen ofwel IQ-signalen die men aan een modulator schakeling aanbiedt. Deze signalen kunnen bestaan uit meerdere bits. Hieronder is een afbeelding2 (figuur 3) weergegeven van hoe deze signalen kunnen worden opgebouwd.
Figuur 4: QAM16
Er zijn dus 16 mogelijke combinaties te maken met deze 2 signalen. Iedere combinatie kan dus gekoppeld worden aan telkens één I en één Q signaal. Zo kan men dus zeer veel data versturen over één enkel kanaal. Ieder QAM signaal bestaat uit volgende componenten: ( ),
( ) =>
( )=
( )+
( )
(18)
Waarbij xi(t) het reële deel voorstelt, en xq(t) het imaginaire deel. Het spectrum van het banddoorlaat signaal wordt dan gegeven door: ( )=
( ).
=
( ) cos(
=
( ( ).
= ( )
[
( ) sin(
)−
+
( )+
=
( ) .
)
]
met: ( )= ( )=
( )+
( )= ( )
²( ) +
²( )
;
( ) = arg
( ) =
( ) ( )
2
Figuur opgenomen uit ‘wikipedia’ de vrije encyclopedie. Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 16
Men kan deze signalen ook voorstellen door middel van een fasor.
Het is dus duidelijk dat QAM geschikt is om ‘minimum’ 2 signalen door te sturen over eenzelfde kanaal. Minimum, omdat een signaal uit meerdere virtuele signalen kan bestaan. Zo bestaat een I of Q signaal misschien uit verschillende reële of imaginaire signalen. Hierdoor kan men een rooster opstellen waarbij ieder punt een bepaalde imaginaire en reële waarde voorstelt. (zie vorige bladzijde) Om beter te begrijpen hoe de schakeling werkt en hoe de demodulatie gebeurt wordt verder uitgelegd hoe QAM-signalen gevormd worden, en hoe men de informatie er terug kan uitwinnen.
2.2.2
(Q)AM modulatie
Eerst en vooral begint men bij 2 signalen, oorspronkelijk I en Q genaamd. Deze signalen zijn laagfrequente signalen en bevatten de digitale (of analoge) data die men wil gaan versturen. Om deze signalen zover mogelijk te kunnen versturen moet men deze op een slimme manier op een hoogfrequente draaggolf plaatsen, en deze signalen op een of andere manier aan elkaar koppelen. Dit doet men via onderstaand schema:
Figuur 5: IQ – modulator
Wanneer men nu het frequentiespectrum bekijkt dan worden de I- en Q signalen als volgt weergegeven: Amplitude (V) I(t) en Q(t) Frequentie (ω) De I- en Q-signalen worden telkens gemengd met een cosinus en een sinus. Dit mixen houdt in dat de frequentie van een signaal naar een hogere (of lagere) frequentie wordt geplaatst. Dit doet men via vermenigvuldiging. Het ingangssignaal wordt vermenigvuldigd met het signaal van de lokale oscillator, in dit geval een sinus of een cosinus. Na het mengen worden beide signalen gesommeerd. Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 17
Het uitgangssignaal is nu het zogenaamde ‘QAM’ signaal. Dit signaal wordt nu naar de versterker en de antenne gestuurd, zodat het verzonden kan worden. Hierdoor verkrijgt men volgend spectrum: -ω0t
Amplitude (V)
VO(t)
ω0t VO(t) Frequentie (ω)
Dit signaal kan nu worden verstuurd. Bemerk dat dit een dubbelzijbandig signaal is en er dus dubbel zoveel vermogen nodig zal zijn om dit signaal te versturen. Dit kan men oplossen door na de uitgang een filter te plaatsen en zo enkel 1 zijband doorsturen. Wanneer men dit niet doet is het belangrijk om een filter te plaatsen aan de ingang van de ontvanger daar deze slechts informatie van één zijband nodig heeft. 2.2.3
(Q)AM demodulatie
Het is dan ook de bedoeling om het signaal ergens te ontvangen, en de I- en Q-signalen op een of andere manier terug uit het QAM-signaal te verkrijgen. Dit doet men via demodulatie. Demodulatie gebeurt bijna op dezelfde manier als modulatie daar er toch wat verschillen zijn. Onderstaande figuur verduidelijkt dit:
Figuur 6: IQ – demodulator
Nu wordt het QAM signaal terug in 2 mengtrappen geleid en worden deze terug met het signaal van de lokale oscillator, opnieuw een sinus en cosinus, vermenigvuldigd.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 18
Dit geeft onderstaand spectrum voor de I(t) uitgang:
( ) cos(2 2
)−
( ) sin(2 2
Amplitude (V)
)
I(t)/2 Frequentie (ω)
Om het verdere verloop van het signaal te kennen komt hier wat wiskunde aan de orde. Via de formules van de goniometrie en de formules van Carnot kunnen de signalen omgezet worden naar een standaardvorm. Hierin komt telkens de factor “de helft van I en Q” voor. Na de mengtrappen volgt een laagdoorlaat filter (zie stippellijn op de figuur). Deze filtert de termen met sinus en cosinus uit het signaal. Daarna moet het signaal nog door een versterkertrap worden gestuurd daar slechts de helft van het signaal werd verkregen. Na de versterker heeft men terug opnieuw het originele I-en Q signaal.
2.2.4
Bit-Error-Rate
Om de bit-error-rate te bepalen doet men meestal beroep op onderstaande formule die de errorrate per carrier sense weergeeft: =2 1−
1
3 −1
√
(19)
Dus wordt de gewone probabiliteit van één symboolfout gelijk aan: = 1 − (1 − Met:
M Es N0 Q
Met Q(x) =
)²
(20)
= het aantal symbolen die gemoduleerd worden = energie per symbool = Spectrale vermogensdichtheid van de ruis (W/Hz) = Gaussiaanse error – factor √
∫
²⁄
,
≥0
Stel dus dat men 16 symbolen verstuurd en de energie per symbool is 1 mJ en N0 die gelijk is aan k.T met k = 8.617 343(15) × 10−5 eV/K (cte van Boltzmann) en T = 293,15°K (20°C) dan is NO = 0,0252617eV. Daar 1mJ gelijk is aan 6.24150974×1015 eV , dan kan men berekenen dat de probabilieit van één bitfout gelijk wordt aan (bij t = 60seconden):
= 2 1−
1 √16
3 6.24150974 × 10 16 − 1 0,0252617
= 1,5
(222.294.407,8) = 1,3239
= 1 − (1 − 1,3239))² = 0,9014 % Maw de kans is kleiner dan 1 procent. Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 19
2.2.5
Zendvermogen
Het vermogen van het uitgezonden (Q)AM signaal kan nu worden berekend volgens de sommatie van het vermogen van de draaggolf (PC) en het vermogen van het informatiesignaal (Pm): ⁄
cos(
) =>
= lim
1
²
→
²(
)
=
⁄
² 2
⁄
m(t)cos(
) =>
= lim
1
² ²( )
→
²(
)
⁄
⁄
= lim
( )
1
→
2
⁄
(1 +
2
)
⁄
= lim
( )
1
→
2
⁄ ⁄
=
=
1
lim
2
( )
→
⁄
2
= ²
(21)
Voor een signaalvermogen PT krijgt men dan: = Met:
+ ² ²
=
;
=
(1 + ²
= lim
→
∫
) ⁄ ⁄
(22) ( )dt
Een groot deel van het vermogen zit dus omvat in de draaggolf! Om precies te weten hoeveel kan men dit op onderstaande wijze berekenen: =
²
=
²
1
=
²
1+
1 ²
<1
(23)
Deze term noemt men ook wel de vermogenefficiëntie. Als voorbeeld: de vermogenefficiëntie van de gebruikte AM signalen tijdens metingen bedroeg: Pm = -30dBm = 1µW in 50, met k = 0,4 (40%) 1
= 1+
1 0,4²1µ
1µ
= 16%
(24)
Hier kan dus meer efficiëntie behaald worden door laagfrequent signaal met hogere amplitude in te sturen in de AM-modulator. Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 20
2.3
Beamforming en Beamreception
Nu men weet hoe de QAM modulatie werkt is het interessant om ook het volgende aspect even toe te lichten, namelijk beamforming. 2.3.1
Principe
Beamforming is een manier om signalen verder te kunnen versturen met hetzelfde zendvermogen. Bij beamforming wordt er echter gebruik gemaakt van meerdere kanalen, of met andere woorden, er worden meerdere zenders gebruikt om hetzelfde signaal te versturen. Deze signalen worden dan verzonden via speciale faseveld antennes. De ontwikkeling van deze antennes voor de 2,45GHz ISM band gebeurt momenteel door UGent-INTEC. Beamforming kan men opsplitsen in 2 hoofdgroepen namelijk Static beamforming en Adaptive beamforming [1]. Het verschil tussen beide is dat de eerste soort een constante straal naar een ontvanger zal sturen, en de locatie van de ontvanger dus gekend is. Bij de 2de soort is de locatie van de ontvanger niet gekend en wordt er gescand, vandaar de term ‘adaptive’. Hierbij kan de vraag rijzen waarom beamforming nu interessant is. Volgende figuur verduidelijkt dit:
Figuur 7: No Beamforming vs Beamforming
3
Bij het gebruik van een gewone antenne zal het vermogen gespreid worden over een bepaald gebied. Wanneer de ontvanger zich in dit gebied bevindt zal de ontvangst kunnen gebeuren. Meestal bedraagt de openingshoek van dit gebied 90° tot 120°. Wanneer men beamforming toepast, dan zal men alle vermogen in een veel kleiner gebied trachten te bundelen. Hierdoor is het mogelijk om met hetzelfde vermogen de data veel verder te kunnen versturen [2]. Wanneer bij ontvangstzijde ook nog met beamreception wordt gewerkt dan wordt de totale vermogenswinst nog eens verdubbeld.
3
Sisco Systems: beamforming. Authorized Copy by Cisco Company ©
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 21
2.3.2
Soorten beamforming
Het verschil tussen de 2 hoofdgroepen wordt hieronder nogmaals weergegeven. Bemerk dat er ook zoiets bestaat als ‘Switched Lobe’. Dit is een techniek waarbij de antennes zodanig worden opgesteld zodat ze dezelfde paden vertonen als bij een statische beamforming. Dit is echter een zeer onefficiënte manier van werken, daar veel afregeling nodig is bij het plaatsen van de antennes.
Figuur 8: Static vs Adaptive Beamforming
4
Om toch duidelijk te maken hoe zo’n systeem werkt werd dit aangehaald daar dit een belangrijk aspect is van deze masterproef.
Inputsignals
4 channel
4 channel Beamed signal
Amplifier
Phasechanger Digital
Phase-array antenna
Data Figuur 9: Beamforming
De ingangssignalen, in dit geval de QAM-gemoduleerde IQ-signalen, worden in een faseverschuivingsblok gestuurd. Hier wordt via een digitaal in te stellen datawoord de fase van ieder 4
Sisco Systems: beamforming. Authorized Copy by Cisco Company ©
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 22
kanaal ingesteld. Daarna worden de signalen naar de versterker en de speciale antenne verstuurd. Nu ontstaat een soort ‘straal’ en kan het signaal gericht worden verstuurd. Met andere woorden, al het vermogen wordt nuttig gebruikt daar het spreidingsveld van de antennes sterk gereduceerd is. Hierdoor krijgt men een grote signaalwinst.
4 channel Amplifier
4 channel Phase-
Inputsignals
Output signal
changer Digital
Data
Figuur 10: Beamreception
De signalen kunnen nu terug ontvangen worden via een faseveld antenne [3]. Na deze signalen versterkt te hebben kan de fase terug worden bijgeregeld, zodat alle ontvangen signalen terug de zelfde fase hebben. Wanneer dit het geval is kunnen alle signalen terug worden gesommeerd, en bekomt men aldus een zeer ‘zuiver’ signaal5. Bij het ontvangen ontstaat ook zo terug een signaalwinst. Hierdoor kan men het signaal dus verder versturen met hetzelfde vermogen, of is de ontvangst op normale6 afstand stukken beter. Dit ontvangen noemt men ‘beamreception’. Hierbij kan berekend worden wat de kans op fouten is. [4] Om aan te tonen hoe men nu precies beamforming kan verwezenlijken kan onderstaande figuur (figuur 11) veel verduidelijken. De signalen worden aan de schakeling aangeboden, maar zijn onderling in fase verschoven. Na het versterken zijn deze signalen nog steeds in fase verschoven. Nu is het mogelijk om de fase bij te regelen zodat alle signalen in fase zijn t.o.v. een referentiesignaal.
Figuur 11: Beamreceiving (concept)
Na het in fase brengen van de signalen worden de uitgangen dan gesommeerd zodat er een groter signaal ontstaat. Hierdoor zal de signaalruis van de data aanzienlijk dalen. Hierbij ontstaat ook een groter zendbereik. Deze techniek kent talloze toepassingen [5] en wordt meer gebruikt dan wordt verondersteld. Een toepassing hiervan vindt men o.a. terug bij sonar en de medische wereld. 5
Onder zuiver verstaat men, zonder ruis en andere invloeden die het signaal beïnvloeden.
6
Onder normale afstand wordt verstaan dat een systeem gebruikt wordt zonder beamforming
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 23
3. Concept Na het doornemen van de basistheorie is het nu ook belangrijk om het concept onder de loep te nemen. In dit hoofdstuk wordt dieper ingegaan op het eigenlijke concept en de bedoeling van deze masterproef. Er wordt minder aandacht besteed aan de praktische uitwerking, daar dit in volgend hoofdstuk uitvoerig aan bod komt.
3.1
Algemeen Blokkenschema
Om een algemene kijk te hebben op het totale concept is het noodzakelijk om eenvoud te vinden in de voorstelling ervan. Dit kan men doen aan de hand van een blokkenschema. Onderstaand blokkenschema geeft weer hoe de schakeling in elkaar steekt:
Figuur 12: Algemeen blokkenschema
Het totale concept bestaat dus uit 2 demodulator-blokken van telkens 4 kanalen. Ieder blok bezit dus 4 ingangen, 4 I-uitgangen en 4 Q-uitgangen. De blokken worden aangestuurd door een µcontroller blok, die op zich manueel of via een Grafische User Interface kan worden aangesproken. De datauitwisseling van µcontroller naar demodulator gebeurt via SPI. De uitwisseling van GUI naar µController gebeurt via USB daar dit bij de meeste computers voor handen is. De manuele invoer bestaat uit schakelaars en drukknoppen, en als uitgangen beschikt het board over een lcd-display en enkele LED’s zodat de in te stellen data duidelijk en eenvoudig kan worden weergegeven.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 24
3.2
LNA versterker (AD8334)
Op ieder demodulatorbord bevindt zich een LNA versterker. Deze zorgt ervoor dat de signalen die aangeboden worden aan de demodulator goed geconditioneerd zijn. Hiermee wordt bedoeld dat deze niet te groot en niet te klein in amplitude mogen zijn. Ook wordt bij deze versterker aandacht besteed aan het ruisgetal. 3.2.1
Ruisproductie
De versterking gebeurt met bijzonder weinig ruis introductie. De versterker beschikt over een -3dB bandbreedte van 100MHz, wat dus ruim voldoende is voor de ingangssignalen ( 30MHz). De ruisfactor van het IC bedraagt 0,74 /√ . Dit wil dus zeggen dat wanneer de frequentie stijgt men onderstaand verloop krijgt: 0,25 0,2 0,15 0,1 0,05 0 1
10
100
1000
10000
100000
Figuur 13: Ruisproductie (horizontaal:Frequentie[Hz], verticaal :ruisgetal[nV])
Merk op dat de ruis dus afneemt bij toenemende frequentie, wat dus impliceert dat er beter gewerkt kan worden rond hogere frequenties. Deze toepassing werkt rond een frequentie van ongeveer 30MHz. De geproduceerde ruis is bij deze frequentie dus zeer laag. Uitgerekend bedraagt deze ongeveer 4,3pV wat dus te verwaarlozen is t.o.v. het ingangssignaal. Om dit getal zo laag te krijgen is een LNA versterker nodig. Het principe van een LNA versterker is gebaseerd op onderstaand schema:
Figuur 14: LNA versterker
Door het gebruik van een differentiële uitvoering en negatieve terugkoppeling verkleint dus de vervorming. Door laagohmige terugkoppelweerstanden te gebruiken en het feit dat de uitgangen stroom gestuurd zijn is het mogelijke om de ruisproductie tegen te gaan. De ingangsimpedantie wordt actief aangepast zodat ook hier weinig ruis wordt geproduceerd. Hierdoor ontstaat een stroomverbruik van ongeveer 11mA per kanaal (per LNA versterker) wat dus zeer gunstig is. Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 25
3.2.2
Werking
De werking van de versterker wordt uitgelegd aan de hand van onderstaand blokkenschema:
Figuur 15: LNA versterker AD8334
Het ic omvat telkens 4 kanalen. Één kanaal kan dan eenvoudiger voorgesteld worden door het onderstaande blokkenschema:
Figuur 16: Blokkenschema één kanaal
Ieder kanaal begint met het capteren van een ingangssignaal door een LNA versterker (zie terug). Daarna gaat het signaal verder naar een attenuator of verzwakker, dit om te sterke signalen terug te kunnen afzwakken en een basissignaal aan te maken voor de AGC(Automatic Gain Control)uitgang, daarna wordt het signaal terug versterkt met een vast versterking van 21dB (of 11,2 keer). Vervolgens wordt het signaal nog door een laatste trap gestuurd die dan ook de nodige stroom kan leveren. Ook is er een clamp-circuit aanwezig zodat de uitgangsspanning een bepaalde vooraf ingestelde waarde niet overschrijdt.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 26
3.2.3
Actieve impedantie-aanpassing
De ingangsimpedantie wordt dus actief aangepast. Dit proces gebeurt als volgt:
Figuur 17: Actieve impedantie aanpassing
Via bovenstaand schema kan men de ingangsimpedantie berekenen, dit kan gebeuren aan de hand van onderstaande formule: =
=
1+
// 6 = 1 +
6 6 + (6
)+
6
1+
+ 6
=
6 33 +
(1 + ) (1 + )
(25)
(26)
Bij deze vergelijking stelt A de vaste versterking van 4.5 keer voor. De 6KOhm is de ingangsimpedantie van de versterker. Wanneer men dit vergelijkt met de gekozen weerstandswaarde voor Riz (247Ohm), dan bekomt men een ingangsimpedantie van 44,57Ohm. Ideaal dus, omdat deze ongeveer gelijk is aan de karakteristieke impedantie van de transmissielijnen, en de bronimpedantie. Hierdoor ontstaan dus geen problemen meer bij het aansluiten van externe bronnen, of antennes die ten opzichte van elkaar een verschillende impedantie hebben. Een ander voordeel is dat de ingangen van deze versterker open mogen blijven, zonder dat dit implicaties geeft op de werking van de versterker.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 27
3.2.4
Versterkingsbepaling
Het hart van dit component is de ‘variable gain amplifier’. Deze versterker bezit enkele bijzondere eigenschappen. De eerste daarvan is een uitzonderlijk linaire versterkingscurve. Daarnaast bezit de versterker een R-2R laddernetwerk, waarmee een versterking kan worden ingesteld, zoals bij DAconvertoren. Vanaf een bepaald spanningsniveau op de GAIN pin zal telkens een andere versterking worden ingesteld. In het blok van de GAIN INTERPOLATOR bevinden zich comparatoren die de GAIN spanning dus gaan vergelijken met een bepaald spanningsniveau. Aan de hand hiervan wordt de juiste opamp aangestuurd.
Figuur 18: Variable Gain Amplifier
De versterker is volledig symmetrisch opgebouwd, dit om het signaal van stoorsignalen te weerhouden. Bovendien bevindt dit blok zich in een ‘postamplifier’ die er voor zorgt dat het signaal een eerste voorversterking krijgt. Hieronder is afgebeeld hoe de twee versterkerschakelingen in elkaar gelust zitten. De ene schakeling zit dus in de terugkoppellus van de andere schakeling. Hier ontstaat echter het gevaar op meekoppeling van hogere frequenties. Er zal dus zeer veel aandacht moeten worden besteed aan het ontkoppelen van zowel signaal als voeding van het component. De versterking van het ic is ingesteld op 13dB. (Zie vorige blz: waarde voor A = 4,5 of 13dB) Daar er een weerstand (247Ohm+50Ohm generator) in serie staat met de ingang zal dit niet of weinig van invloed zijn op de versterking, omdat deze vooral wordt bepaald door de ingangsimpedantie van de versterker zelf. Verder kan de attenuator worden gestuurd vanuit de ‘GAIN’ pin. Hier werd echter een weerstand van 0 Ohm naar de massa geplaatst, zodat er geen extra versterking zou zijn.
Figuur 19: Post Amplifier
Het ic beschikt niet over een AGC (Automatic Gain Control) Dit is één van de minpunten van dit IC. Daar er voor de gebruikte toepassingen binnen de testopstellingen met een draaggolf van 2,45GHz wordt gewerkt, moet deze frequentie eerst naar een lagere frequentie worden gemixt. Het ic dat dit voorziet heeft dan echter wel de AGC. Er is echter wel de mogelijkheid om een AGC te bouwen en deze te laten inspelen op de GAIN-pinnen van het ic. Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 28
Naast het eigenlijke ic zijn ook een heleboel randcomponenten nodig om de goede werking te verzekeren. Hier volgt de bespreking van het hoe en waarom van deze randcomponenten. 3.2.5
Bandbreedte
Iedere ingang van de versterker is voorzien van een ingangsfilter. Dit filter heeft als eigenschap dat het de te hoge frequenties zal onderdrukken, zodat er geen hoogfrequentkoppeling zou kunnen ontstaan tussen de ingang en de uitgang. Dit filter wordt als volgt gedefinieerd:
VG1
C1 100n
VF1
C2 22p
+
R1 100
Figuur 20: Ingangsfilter LNA
In het oorspronkelijke schema werd aanvankelijk een spoel gebruikt in plaats van een weerstand, dit gaf echter meekoppeling, en daarom werd een weerstand van 100 Ohm genomen. Dit filter heeft een transfertkarakteristiek (zie volgende blz.) gelijk aan deze van een eerste orde laag doorlaat. De condensator van 100 nF zorgt enkel voor het filteren van eventuele DC spanningen. Wanneer men de kantelfrequentie van dit filter berekent bekomt men: 1 2
=
1 = 72,34 2 . 100 . 22 − 12
(27)
Wanneer men dit vergelijkt met de transfertkarakteristiek dan ziet men dat de berekende waarde overeenstemt met de gesimuleerde waarde.
Figuur 21 : Transfertkarakteristiek ingangsfilter LNA
De condensatoren tussen de pinnen LON en VIN (resp. LOP en VIP) zorgen ervoor dat er geen dc op de ingangen van de attenuator komt. De pinnen worden naar buiten gebracht zodat er ook de mogelijkheid is om bijvoorbeeld een extra filter of andere schakeling kan worden aangelegd. De voeding van het ic werd ontkoppeld met een filter zodat er geen hf-rimpel op de voedingslijnen zou inspelen. De kantelfrequentie van het filter ligt bij 1MHz. Daar de werkfrequentie van het ic rond de 30MHz (-50dB) ligt zal dit geen of weinig invloed hebben op de werking ervan. Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 29
3.3
QAM-demodulator (AD8339)
Om de IQ signalen terug uit het ontvangen signaal te winnen, is het dus nodig dat er een demodulator aanwezig is op het experimenteerbord. Onderstaand schema verduidelijkt hier de werking van.
From AD8334
AD8339
SPI- Interface
To Amplifiers
DS90C401M
4 LOP
Figuur 22 : Blokschema QAM-demodulator
De gekozen demodulator is de AD8339 van Analog Devices, en beschikt tevens over 4 kanalen. Wat dus een ideale combinatie is met de voorversterker, daar deze ook voor 4 kanalen plaats biedt.
Figuur 23: IQ-demodulator (AD8339)
3.3.1
Werking
De demodulator is eenvoudig aan te sturen via een SPI-interface. Verder wordt uitgelegd hoe de signalen horen te zijn opdat het component zou functioneren. Het is belangrijk dat op de LOP een zuiver signaal wordt aangeboden, daarom dat ontkoppeling een belangrijke factor zal zijn in dit ontwerp. Na de ingangspin van de LOP staat de DS90C401M, dit ic zet de sinus die aangeboden wordt aan de ingang om in een blokgolf, waarbij een stijgende flank wordt gevormd vanaf een bepaald spanningsniveau aan de ingang. Deze blokgolf bedraagt niet meer dan 340mV. De blokgolf wordt symmetrisch aan de LOP aangeboden. De frequentie die van het aangeboden signaal op de LOP moet 4keer zo hoog zijn, als de draaggolf frequentie van de ingangssignalen. Intern wordt de frequentie dan terug door 4 gedeeld. Men doet dit om zo betere signalen te kunnen generen die 90° tov elkaar verschoven zijn.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 30
Deze signalen worden dan aangeboden aan de mixers zodat er gedemoduleerd kan worden. Dit proces gaat als volgt te werk (het voorbeeld werd gegeven met een sinus, maar dit werkt uiteraard ook met een blokgolf zoals bij de praktische uitvoering):
Figuur 24 : 4LOP faseregeling
Het signaal 4LO wordt gedeeld door vier. Bij het binnenkomende signaal is een nuldoorgangsdetectie aanwezig waardoor het mogelijk wordt om fase te meten (om de 90°), nu kan men dit toepassen om de fase tussen de 2 signalen die als LO dienen 90° in fase te verschuiven. 3.3.2
De SPI-interface
De uitgangen van deze demodulator zijn ook van een faseverschuivingsblok voorzien. Deze blokken worden aangesproken via de SPI interface. Om de juiste fase te selecteren, kunnen er per kanaal 4 bit worden aangestuurd. Wanneer men dit doet, zal de verdeling van de fase duidelijk worden. Namelijk 360° gedeeld 16 is 22,5°. Met andere woorden, iedere stap van de fase zal een stap van 22,5° zijn. Dit kan uitgezet worden in een tabel (zie tabel 1). Tabel 1: Fasecodes
Deze codes worden dan ingesteld via de SPI interface. Met andere woorden, er worden dus telkens 4 bits toegekend per kanaal, en er zijn vier kanalen. Dat zijn dus al 16 bits, daarnaast worden nog 4 bits voorzien om de kanalen al dan niet te activeren. Er moeten dus in totaal 20 bit verstuurd worden naar ieder IC. Daar er 2 ic’s nodig zullen zijn (8kanalen) zal deze code dus 2 maal moeten worden verstuurd. Het ic beschikt over een daisychain die de code verder schuift naar een volgende ic als het meer code ontvangt dan zijn registers lang zijn. Dus als men een 40 bit code doorstuurt, dan zal het eerste ic de volledige 40 bits hebben zien passeren en zal deze de eerste 20 bit doorgestuurd hebben naar het 2de ic. De laatste 20 bit worden dan in het geheugen van het eerste ic geplaatst. Om nu het
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 31
ic aan te sturen is het nodig eerst grondig naar de SPI-code te kijken. Deze moet volgend patroon hebben:
Figuur 25: SPI- aansturing
Bovenstaande figuur verduidelijkt hoe men de kanalen kan aansturen. Men ziet dus dat de MSB van kanaal 4 eerst naar buiten wordt gebracht. Daarna volgen de andere kanalen. De laatste 4 bit zijn de ‘enable-bits’. Deze zorgen ervoor dat de kanalen aan of uit kunnen worden geschakeld. Het is ook noodzakelijk om de timings te respecteren. Deze zijn de tijden die nodig zijn opdat de demodulator zou kunnen reageren. Bij te korte tijden zal deze het signaal niet zien. De snelheid van deze reactie hangt sterk af van de condensator die dient ter ontkoppeling van de LOP. Door met de waarde van deze condensator te spelen kan deze tijd sterk worden beïnvloed.
Figuur 26: SPI-codevolgorde
Om nu precies te weten hoe men dit in code kan versturen kan bovenstaande figuur dit verduidelijken. Merk op dat de stijgende flank van de klok telkens in het midden van de datasignalen moet vallen. Dit om skewing te voorkomen. De frequentie van de SPI-bus werd vastgelegd op ongeveer 30kHz. Dit om mogelijke interferenties tussen lijnen uit te sluiten. Daar het systeem toch wacht op de druk van een knop is het niet nodig dat hier een hoge frequentie wordt gebruikt. De SPIcode wordt dan over een bus verstuurd die bestaat uit een UTP-kabel. Er werd voor dit soort kabel gekozen omdat deze een ‘twisted-pair’ technologie beschikt, zodat de interferentie tussen signalen optimaal blijft evenals de afscherming voor stoorsignalen. Belangrijk om weten is dat het ic bij het opstarten nog niet geprogrammeerd is. Hierdoor is de toestand van de uitgangen ongekend (Normaal in de Disable stand). Bij het opstarten moet het ic worden geprogrammeerd, en moet de resetingang van de LO eventjes hoog worden getrokken zodat de LO terug mooi in fase loopt met het ingangssignaal.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 32
Hieronder is een voorbeeld weergegeven van hoe de SPI-code er in werkelijkheid uitziet.
Figuur 27: Gegenereerde SPI-code
De code genereerd echter tijdens de dalende flanken van de klok een kleine puls. Daar deze puls 3ns duurt zal deze niet worden gedetecteerd, en kan de code juist worden verstuurd. De klok kan verbreed en verschoven worden in de programmacode.
3.4
Controllerboard
Om de SPI code te kunnen maken is een slimme logica nodig. Deze logica wordt voorzien met een PIC controller. De gebruikte controller is de pic18f4550 van Microchip. Hieronder is een blokkenschema weergegeven van de totale controllerboard. Chip: FTDI USBsignals
USB <->serial
serialsignals
PIC18f4550
CD4094
DISPLAY
CD4094
LEDS
comm.signals
MAX6817
SWITCHES + BUTTONS
Figuur 28: Blokkenschema µcontrollerboard
Het bord beschikt over een USB ingang, waarmee de microcontroller kan worden aangestuurd. Voor deze masterproef werd er een computerprogramma ontwikkeld die de eerste generatie SPI code kan genereren. Deze code wordt dan via een virtuele seriële poort doorgestuurd naar de microcontroller over USB. Het bord beschikt over een chip van FTDI die USB signalen terug naar seriële signalen omzet. Dit werd gedaan om het project iets te vereenvoudigen op het gebied van programmeren. Daarna worden de seriële signalen naar de PIC gestuurd. Het is ook mogelijk om de PIC ‘stand-alone’ te laten werken. Hiervoor beschikt het bord over een display, enkele leds, drukknoppen en schakelaars. De code is eenvoudig in te stellen, door het menu te volgen op het display.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 33
Alle schakelaars en drukknoppen werden hardwarematig ontdenderd. Dit om de software niet al te ingewikkeld te maken. Om te ontdenderen werd gebruik gemaakt van het ic MAX6817. De tijd die nodig is om te ontdenderen wordt in de datasheet weergegeven, en bedraagt typisch 50ms. Dit werden opgemeten en onderstaand scoopbeeld toont het resultaat:
Figuur 29: Ontdendering MAX6817
De tijd die nodig was om te ontdenderen bedraagt hier dus ongeveer 40ms. Dit is kort genoeg om niet dit op te merken bij het drukken op een knop of schakelaar. Dus is dit een ideale oplossing. De code voor de µcontroller werd geschreven in MPLAB en de gebruikte codetaal is ANSI-C. Omdat de SPI –pinnen nogal verspreid waren over de µcontroller, werd geopteerd om de SPI routines zelf te schrijven. Door tijd gebrek werd er ook geopteerd om de usb-routines van de controller te niet gebruiken. In de plaats daarvan werd seriële communicatie gebruikt, en een chip van FTDI op het bord zet deze signalen dan om naar de gewenste USB-signalen.
3.5
Grafische User Interface
De GUI werd ontworpen in Visual Basic. Daar het ontwerp van de console reeds klaar was, moest echter gewoon nog de code worden geschreven hiervoor. Het aanleren van deze code gebeurde zeer vlot, waardoor het programma na enkele dagen vorm aannam, en het de gewenste functionaliteit bezat. Het programma zal data versturen via een virtuele seriële poort. Dankzij deze toepassing is het mogelijk om een USB-kabel te gebruiken, want op nieuwere pc (notebooks) komt geen seriële poort meer voor.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 34
4. Praktische Uitwerking Na de volledige theoretische analyse van de masterproef werd tijdens het labo en de voorziene uren ook een praktische realisatie gemaakt. Deze praktische realisatie nam zeer veel tijd in beslag daar aan zeer veel eisen moest voldaan worden, en op hoogfrequentgebied niet alles werkt zoals men oorspronkelijk wil. In dit hoofdstuk gaat de aandacht vooral naar de aanpak van het ontwerpen en het uitvoeren van de praktische realisatie. In volgend hoofdstuk wordt dan dieper ingegaan op de techniek, en de uitvoering ervan.
4.1
Schema Ontwerp
Het schema werd zodanig ontworpen dat de experimenteermogelijkheden maximaal zijn, daarbij rekening houdende dat het gebruikte aantal componenten hier geen rol mag spelen. Later zou dan kunnen worden bekeken welke componenten overbodig zijn bij een specifieke toepassing van deze masterproef. 4.1.1
HF-bord
Het schema van het hoogfrequent bord werd opgedeeld in een aantal deelblokken. Dit om de eenvoud van het schema te behouden. Om duidelijk te kunnen maken hoe het totale HF-bord in elkaar steekt werd hieronder een blokkenschema weegegeven: AD8334
AD8339
AD8021
QAM IN SPI- Interface
DS90C401M
I+Q OUT
4LOP IN
Figuur 30: Blokkenschema HF-bord
In bijlage vindt men deze schema’s terug. Op blz. 101 vindt men het schema van de LNA versterker terug. Dit werd zodanig ontworpen dat de versterker een vaste versterking heeft, zodat de signalen zo min mogelijk worden beïnvloed voor ze de demodulator worden ingestuurd. Deze LNA versterker werd op een aparte pcb geplaatst, zodanig dat men opzet modules bekomt die modulair kunnen worden gebruikt met andere pcb’s. Op blz. 99 vindt men het blokkenschema terug van de 2de pcb. In dit blokkenschema is het meest links blok een connectorgedeelte waar de LNA pcb op aangesloten wordt (blz. 99). Het middelste blok is de demodulator (blz. 100). Deze is dus DC-gekoppeld aan de LNA versterker omdat de ingangen op een vaste DC spanning van 2,5V moeten staan. De LNA versterker zorgt hiervoor. Het derde blok zijn de uitgangsopamps (blz. 101). Deze werden zodanig ontworpen dat een regelbare versterking mogelijk is vanaf 20dB tot volledig onderdrukt. Er kan dus met andere woorden ook worden verzwakt. Dit omdat bij het sommeren van de verschillende signalen het totale signaal niet te groot zou worden. Ook werd er op deze opamps een filter voorzien zodat de hoogfrequentcomponent die nog aanwezig zou zijn op de uitgang zeker weg gefilterd wordt.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 35
4.1.2
µController bord
Het schema van het µcontrollerbord bestaat uit 2 hoofddelen. Het eerste deel bezit de µcontroller zelf. Dit schema kan men terugvinden in bijlage blz. 102. Op het schema zijn de 2 schuifregisters (CD4094) aanwezig die dienen om de LCDdisplay en de LEDs aan te sturen. Door het gebruik hiervan worden minder pinnen van de µcontroller gebruikt. De data wordt serieel doorgeklokt, en daarna wordt via een ‘strobepuls’ alles naar buiten geklokt. Zodoende dat voor 8 datalijnen er nog slechts 3 pinnen van de µcontroller worden gebruikt. De 3 signalen bestaan uit een datasignaal, waar de data serieel verloopt, een klok, zodat bij iedere klok puls een nieuwe bit in het geheugen geplaatst wordt, en een strobe puls zodat bij het ontvangen van acht bit, deze parallel naar buiten kunnen worden gestuurd. Onder de µcontroller staan de schakelaars en de drukknoppen. Deze werden hardwarematig ontdendert met het ic MAX6817. Links van de µcontroller staat een blok, waarin zich de USB-ontvanger bevindt. Deze kan men terugvinden in bijlage op blz. 103. Er werd voor deze chip gekozen omdat het sturen en ontvangen van usb signalen zeer gecompliceerd is en er geen tijd genoeg was om dit te verwezenlijken. Daarom werd de chip van FTDI gebruikt, zodat USB-signalen in seriële signalen worden omgezet en deze gemakkelijk in de µcontroller kunnen worden binnengelezen. In het schema van de USB-ontvanger ziet men dat de reset pin verbonden is aan één van de USB-lijnen. Dit omdat deze eerst een resetpuls stuurt, zodat er gesynchroniseerd wordt, en de data kan worden verstuurd.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 36
4.2
Prototyping
Tijdens het ontwerpen van de PCB’s werden heel wat prototypes ontworpen, om tot een zo goed mogelijk resultaat te komen. Tijdens het ontwerp van de eerste prototypes werd veel aandacht besteed aan hoogfrequentgedrag en aan placing, om alles dus zo dicht mogelijk bij elkaar te krijgen, en dus lange lijnen te vermijden. Het eerste prototype PCB kan men hieronder zien: Ingangen
Voeding LNA
SPIinterface
Demodulator
Opamps
LOP Uitgangen: Q3+Q4
I3+I4
Q1+Q2
I1+I2
Figuur 31: Prototype 4-kanaals pcb
Het probleem was echter dat de LNA-chip te warm kreeg en er hier geen goede koeling was voorzien. Ook ontstonden er problemen door het niet respecteren van symmetrie van de spoorbanen. Het koelingsprobleem werd op onderstaande wijze opgelost:
Figuur 32: Prototype koelvlak LNA
Door het massavlak als koelelement te gebruiken is het dus niet nodig om extra voorzieningen te moeten treffen. Dit heeft wel als gevolg dat de onderkant van de PCB dus niet op een vlak oppervlak mag liggen. Als oplossing hiervoor werd geopteerd om de LNA-sectie van de demodulator board te scheiden, en deze erboven te plaatsen, zodat er een kleine luchttunnel ontstaat die het koelen bevordert. Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 37
4.3
PCB Ontwerp
Tijdens het ontwerpen van de PCB’s moesten de HF-eigenschappen van de componenten in acht genomen worden (zie hoofdstuk 1). De PCB’s werden ontwikkeld met een krachtig tekenpakket, die toelaat om eenvoudig veranderingen in het schema door te voeren naar de PCB’s. Hieronder wordt een simulatie van hoe het eerste ontwerp werd opgezet weergegeven. SPIinterface
Voedingsaansluiting
Demodulatorboard Opamps
LNA-board LOP Ingangen Demodulator
Uitgangen Figuur 33: Simulatie uiteindelijke pcb
Bemerk de symmetrie die een belangrijke rol speelt in groeplooptijden. Hierdoor ontstaat een minimum aan faseverschuiving tov de kanalen onderling. Na het eerste ontwerp werd geopteerd om de ingangen op de LNA-board te plaatsen, daar er problemen zouden ondervonden worden bij hoge frequenties als deze door de connector zouden moeten gaan. Het uiteindelijke prototyperesultaat ziet men hieronder:
Figuur 34: Foto werkelijke pcb
Tijdens de testfase werd nog hier en daar een kleine aanpassing gedaan, opdat het ontwerp optimaal zou functioneren. Ook werden nog kleine foutjes ontdekt. Deze werden deels opgelost en worden besproken in het hoofdstuk “Problemen en Oplossingen”. Uitgangen:
Cardoen Pepijn
Out1 = I1 Out2 = Q1 Out3 = I2 Out4 = Q2
Out5 = I3 Out6 = Q3 Out7 = I4 Out8 = Q4
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 38
Ook het PCB ontwerp van het microcontrolllerbord werd vooraf gegaan door enkele prototypes. Maar daar echter niet veel veranderde met de uiteindelijke PCB werd geen foto afgebeeld. Hieronder ziet men de uiteindelijke PCB: USBpoort
Voeding
actuatoren
USB <-> Serial
Display
PIC18f4550
SPI-interface
Hulpled’s
Figuur 35: Foto µcontrollerbord
Hieronder is ook een close-up foto weergegeven van de PIC18f4550 en de FT232 van FTDI:
Figuur 36: Close-up foto Pic18f4550
Tijdens het testen werd nog ondervonden dat de resetpin van de FT232 via een weerstand aan de positieve USB-datalijn moest worden verbonden. Zonder deze weerstand kon het ic niet functioneren daar de resetpuls voor de USB-transactie op deze manier wordt doorgegeven.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 39
4.4
Resultaten
Hieronder vindt men de testresultaten terug van de PCB’s. Deze resultaten werden opgemeten met een oscilloscoop van Agilent. (MSO6104A) Voor de generatoren werd gebruik gemaakt van de HM8133-2 van HAMEG. 4.4.1
LNA versterker (AD8334)
Hieronder vind men de meetresultaten terug van de LNA versterker. Ook het blokkenschema wordt hieronder even toegelicht.
Figuur 37: Blokkenschema -> LNA versterker
Op het scoopbeeld ziet men het ingangssignaal in het geel (1MHz, -20dBm). De paarse en groene signalen zijn de uitgangssignalen van 1 kanaal. Merk op dat beide 180° in fase verschoven zijn. Dit is zo omdat de demodulator een symmetrische ingang heeft.
Figuur 38: Werking LNA-versterker
Wanneer men de versterking berekent op basis van de gemeten signalen dan moet men de amplitude van de uitgang delen door de amplitude van de ingang. Wanneer men dit doet bekomt men volgend resultaat: Û Û
=
250 60
= 4,167 = 12,4
(28)
Wanneer men dit vergelijkt met de theoretisch berekende waarde, dan ziet men een klein verschil. Dit verschil wordt o.a. veroorzaakt door het spanningsverlies over de deling van de 2 ingangscapaciteiten (C1 en C2). Maar vooral wordt dit veroorzaakt door de XL van L1. Wanneer men deze uitrekent op de gebruikte frequentie, dan bekomt men bij een R1 van 270Ohm een versterking van 4,35 keer. Bij deze berekening werden alle inductanties en capacitanties in rekening gebracht.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 40
Ook deze van de 1m lange kabel van de generator naar de versterker. (10nH/Cm)
L1 RF-IN1
Inductor 120nH
C1
C3
Cap 100nF C2
Cap 18nF
R1 247Ohm
Cap 22pF
+
GND Figuur 39: Ingangstrap LNA
Het maximale toegelaten niveau op de ingangen van de LNA’s bedraagt ±275mV. Signalen binnensturen boven deze waarde kan de versterker beschadigen. Het ic heeft een maximale bandbreedte van 100MHz wat ruim voldoende is om de signalen tot 50MHz naar de demodulator te leiden. De harmonische distortie van deze versterker bedraagt bij de 2de harmonische ongeveer -56 dB en bij de derde harmonische -70 dB. Om te verduidelijken dat het belangrijk is dat een symmetrie in acht moet worden genomen, werd opgemeten hoe groot de faseverschuiving is over de afstand tussen de LNA-versterkers en de demodulator.
Figuur 40: Uitgangssignalen van de LNA
De figuren tonen beide 1 signaal van een symmetrische uitgang. Deze figuren werden opgemeten bij een frequentie van 30MHz. De verzwakking ontstaat omdat er gemeten werd tussen de uitgang van de LNA versterker en de ingang van de demodulator en omdat er hier dus een weerstand van 20Ohm en een lange lijn van ongeveer 20Ohm tussen zit. Hierdoor zal de LNA versterker zich instellen op de helft van de ingangsspanning. Dit kan men opmerken op de figuren (paars is uitgang LNA versterker, groen is ingang demodulator en geel is nog steeds ingang van de LNA versterker.) Nu kan de faseverschuiving worden opgemeten. Dit doet men als volgt: 1. 360 graden stemt overeen met 3,25 dimensies. Dus één dimensie stemt overeen met 110° of 2/10 dimensie stemt overeen met 22°. 2. Wanneer men meet hoeveel tiende van een dimensie er verschoven is in fase ( 3/10) dan kan men via de regel van drie vinden dat de totale faseverschuiving gelijk is aan 33°. Met andere woorden, de totale faseverschuiving opgelopen tussen de voorversterker en de demodulator bedraagt 16,5°. Dit is niet zo erg als alle kanalen evenveel in fase worden verschoven. Daarom is het dus belangrijk om symmetrie te respecteren, en de baanlengtes hierbij even lang te houden. Moest men dit niet doen, dan ontstaat een verschil in faseverschuiving tussen de kanalen onderling, en kan niet meer nauwkeurig worden gemeten en geëxperimenteerd.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 41
4.4.2
QAM-demodulator (AD8339)
Hieronder vindt men het blokkenschema van de HF-bord. Verder volgt een bespreking van de resultaten die opgemeten werden rond het demodulator ic.
Figuur 41:Blokkenschema -> Demodulator
Het opmeten van de signalen bij de QAM-demodulator verliep niet zo vlot als eerst voorzien. Na veel problemen rond dit ic, werd dan geopteerd om de evaluationbord te gebruiken. Hierop werd ondermeer de bandbreedte van de centrale frequentie getest. Hieronder vindt men de resultaten terug: Tabel 2: Bandbreedte bepaling
Bandbreedte per kanaal (RF_IN) Bandbreedte 4LOP (LOP_IN) Bandbreedte Basisbandsignaal
Theoretische BB LF tot 50MHz LF tot 200MHz Filter-afhankelijk
Praktische BB LF tot 55MHz LF tot 210MHz Filter-afhankelijk
Deze bandbreedte ligt dus iets hoger dan de theoretische bandbreedte die in de datasheet werd opgegeven. Dit komt doordat de datasheet een bandbreedte opgeeft die gegarandeerd moet voldoen hieraan. Deze meting is interessant, daar men nu zekerheid heeft over de werkelijke bandbreedte van het systeem. Wat men hier echter zou kunnen doen is de waarde van de condensatoren over de opamps aanpassen (te vergroten). Op de scoopfiguren was duidelijk dat er nog een deel van de draaggolf doorgelaten wordt. Door dit filter af te stellen op de juiste waarde kan dit worden vermeden, en is het IQ - signaal nog veel zuiverder. De bandbreedte van het basebandsignaal hangt echter af van de gekozen centerfrequentie, de modulatie diepte, en het maximale zendvermogen en de kantelfrequentie van het gebruikte filter. Daar deze factoren een zodanige invloed hebben was onmogelijk om één waarde te plakken op de maximale BB van het basebandsignaal. De spectrale zuiverheid van de demodulator kon echter niet worden getest daar er geen spectraal zuivere generator aanwezig was die deze signalen als basebandsignalen aanbied aan de modulator. Daar de derde harmonische gecreëerd door de generator voor het moduleren ongeveer even groot was als de derde harmonische die terug naar buiten kwam na het demoduleren, wijst dit er dus op dat de 3de harmonische gecreëerd door de vervorming van het demoduleren van de eerste harmonische van het basebandsignaal minimaal moet zijn. In de datasheet wordt gesproken over minimum -66dBc. Het gemoduleerd signaal wordt tenslotte ten opzichte van het basebandsignaal ongeveer -60dB onderdrukt. Dit voldoet aan de eisen van -40 tot -50dB.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 42
4.4.3
Uitgangsopamps
De uitgangsopamps (AD8021) van de demodulator zijn stroom naar spanningsomzetters. Het zijn dus currentfeedback opamps. Waneer men nu terug het blokkenschema erbij haalt dan kan men zien dat de uitgangsopamps zich na de demodulator bevinden. Deze opamps staan in voor het omzetten van stroom naar spanning zodat het mogelijk is om de verschillende uitgangen van de demodulator met elkaar te verbinden zonder dat dit gevolgen heeft (deze uitgangen zijn stroomgestuurd). Deze opamps staan ook in voor het wegfilteren van de HF-draaggolf die nog aanwezig zou kunnen zijn op het uitgangssignaal.
Figuur 42: Blokkenschema -> Uitgangsopamps
De spanning op de uitgang van de opamp wordt gegenereerd door de uitgangsstroom in een weerstand van 50 ohm (een bnc-kabel) te sturen. De versterking van deze opamps werd regelbaar gemaakt, zodat aan adaptive beamreceiving kan worden gedaan. Later zou het mogelijk zijn om hier bijvoorbeeld een digitale weerstand te voorzien.
1K
100R
Figuur 43 : Uitgangsopamps (voorbeeld van kanaal Q4)
De condensator op pin 5 dient als compensatie van de uitgang. Hierdoor is het mogelijk dat de bandbreedte van de opamp hoger wordt dan wanneer men op deze pin niets aansluit. Ook zal een hogere versterking toegestaan worden door dit te doen. Met andere woorden, door deze waarde te veranderen kan ingespeeld worden op de stabiliteit van het systeem. Deze waarde wordt berekend door de gewenste fasemarge van het ic in te vullen in figuur 59 van de datasheet van deze opamps (zie bijlage). Wanneer men dus een bandbreedte van 200MHz wenst, bij een versterking van 1 en een zo groot mogelijke slewrate, dan is het goed om 5pF voor deze waarde te kiezen. (Zie ook tabel 6 in deze datasheet.) A=−
Cardoen Pepijn
1000Ohm = (−)10 of 20dB 100Ohm
8-kanaals IQ demodulator met beamformingsmogelijkheden
(29)
blz 43
De opamps werden nu ingesteld met een maximale versterking van 10. Dit komt neer op 20dB. Het scoopbeeld hieronder toont de versterking bij een ingangssignaal van -10dBm en 1kHz als frequentie.
Figuur 44: Versterking AD8021
Naast de versterking is het ook interessant om de bandbreedte te bepalen. De bandbreedte werd bepaald bij maximale versterking. Het GBP blijft echter constant dus kon deze meting ook bij lagere BB plaatsvinden. Echter werd dit niet gedaan opdat ook de maximale BB (door fysische beperkingen van de opamp) zou worden vastgelegd en deze ook uit de figuur zou af te leiden zijn. In feite legt men daarmee de maximale bandbreedte vast. Deze werd opgemeten bij een ingangssignaal van 10dBm. (de BB is de -3dB BB!)
Figuur 45: Maximale bandbreedte bij maximale versterking
Hier bekomt men aldus een bandbreedte van 20MHz. Wat ruimschoots voldoende is want de demodulator werkt bij een max. RF van 50MHz. Deze bandbreedte is afhankelijk van het gekozen filter (trimmer + condensator in parallel met trimmer). Wanneer de versterking wordt geregeld wordt hier in feit ook de –3dB frequentie gewijzigd. Als uitbreiding kan hier een oplossing voor worden gezocht.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 44
4.4.4
Specificaties van het totale systeem
Hieronder werden alle specificaties van het totale HFbord weergegeven. Gemaakte HF-bord: Tabel 3: Eigenschappen gemaakt HF-bord
Eigenschap Bandbreedte I-en Q signalen Maximale centrale frequentie Bandbreedte LNA Overall Bandbreedte Versterking LNA Versterking demodulator Versterking opamps Overall Versterking
Theoretisch Afhankelijk van uitgangsfilter 50MHz 100MHz 50MHz 13dB 0dB
Praktisch Afhankelijk van uitgangsfilter 70MHz 12,4dB 0dB
-∞ tot 20dB -∞ tot 33dB
-∞ tot 20dB -∞ tot 32,4dB
Evaluation bord: Tabel 4: Eigenschappen Evaluation bord
Eigenschap Bandbreedte I-en Q signalen Maximale centrale frequentie Bandbreedte LNA Overall Bandbreedte Versterking LNA Versterking demodulator Versterking opamps Overall Versterking
Cardoen Pepijn
Theoretisch Afhankelijk van uitgangsfilter 50MHz 100MHz 50MHz 13dB 0dB
Praktisch Afhankelijk van uitgangsfilter 55MHz 102MHz 55MHz 12,7dB 0dB
0dB
0dB 12,7dB
13dB
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 45
4.4.5
Controllerboard
De SPI-code kan nu worden gegenereerd door een simpele druk op de knop (PB4). Het is mogelijk om alle kanalen in te stellen naar wens (en deze al dan niet te disabelen). Wanneer de code werd ingesteld ziet deze er bijvoorbeeld als volgt uit:
CSL CLK DATA 4
3
2
1 ‘en’ 4
3
2
1 ‘en’
Figuur 46 : SPI-code (voorbeeld)
Uit deze code kan men heel wat informatie halen. De oscilloscoop schrijft het beeld van links naar rechts. Vandaar dat de eerst gedetecteerde bits dus links liggen. De MSB wordt eerst naar buiten geschreven, en kanaal 4 is het eerste kanaal dat wordt naar buiten geschreven. De code werd 2 maal naar buiten gestuurd. Men kan dus uit deze code halen dat: -Fase kanaal 4 = “1111” = 337,5° (4) -Fase kanaal 3 = “0000” = 0° (3) -Fase kanaal 2 = “1111” = 337,5° (2) -Fase kanaal 1 = “0000” = 0° (1) -Kanaal enabling: 1,2,3,4 = “1111” = alle kanalen actief (en) 4.4.6
Programmacode (µController)
Om de µcontroller te programmeren is het noodzakelijk een programmer van microchip voor handen te hebben. De code wordt dan via ICSP geprogrammeerd. Na alle connecties gemaakt te hebben. (Deze kan men terugvinden in het schema van de µcontrollerboard) kan men via MPLAB de programmacode laten compileren (ctrl + F10) en deze daarna programmeren.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 46
4.4.7
Programmacode (GUI)
De grafische User Interface werd ontwikkeld via Visual Basic, daar de layout reeds gemaakt werd voor de aanvang van het academiejaar. Na enkele dagen was de code geschreven die nodig is voor het aansturen van de demodulatoren. De GUI ziet er als volgt uit:
Figuur 47: GUI SPI Controller v1.0
De mogelijkheid bestaat erin om ieder kanaal apart in te stellen en te enablen/disablen. Ook is het mogelijk om alle kanalen via één controleblok in te stellen. Zodanig dat bijvoorbeeld alle kanalen snel terug op fase 0° kunnen worden gezet. Om verbinding te maken met de Controllerboard is het noodzakelijk om de USB-kabel te verbinden met de pc. Doordat op de controllerboard een ic staat van FTDI (FT232) zal dit board zich voordoen als een virtuele Seriële Poort. Wanneer er een COMpoort wordt gedetecteerd, zal deze dan ook automatisch worden weergegeven. Na het aanklikken van de gewenste poort (bij meerdere poorten) kan de data verzonden of ontvangen worden. Een ‘event logger’ houdt bij welke opdrachten op welke tijdstippen werden uitgevoerd, zodat achteraf nog kan worden nagegaan wat men precies heeft veranderd. Onder de ‘saved list’ vindt men opgeslagen instellingen van kanalen terug. De opgeslagen naam omvat de datum+tijd. (Dit laatste werd echter als uitbreiding gezien, en werd nog niet gerealiseerd.) In het menu ‘Properties’ kan men de seriële poort gaan instellen in volgende subvenster:
Figuur 48: GUI ‘port properties’
Na het instellen van de juiste parameters zal via de knop ‘Save en close’ alle ingestelde data worden weggeschreven. Via de knop ‘Get COM list’ Kan men de mogelijke COM poorten opvragen. Zo kan men bijvoorbeeld kijken welke poorten reeds beschikbaar zijn wanneer de USB kabel nog niet werd geconnecteerd, en zo dus uitmaken welke COM poort de virtuele COM poort is.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 47
De data werd via de seriële poort naar buiten geschreven met tussenpauzes van 50ms, opdat de microcontroller de data zou kunnen verwerken, en de poort terug ontvangensklaar kan gezet worden. Iedere byte bevat informatie over de fasewaarde van 1 kanaal, en werd in hex doorgestuurd als ‘karakter’. Met andere woorden het karakter ‘0’ in hex wordt dan ‘30’. De laatste byte bevat informatie over het Enablen/Disablen van de kanalen. In de 2de versie van SPI-controller is de binaire code weergegeven per kanaal, zodat het sneller duidelijk wordt of de code correct is weergeven op de led’s. Het naar buiten schrijven van deze code gebeurt dus op de volgende wijze:
SerialPort1.BaudRate.ToString(frmProperties.varry1) SerialPort1.DataBits.ToString(frmProperties.varry2) SerialPort1.PortName = comvar SerialPort1.Open() SerialPort1.Write(varx1) Sleep(50) SerialPort1.Write(varx2) Sleep(50) SerialPort1.Write(varx3) Sleep(50) SerialPort1.Write(varx4) Sleep(50) SerialPort1.Write(selvar1) Sleep(50) SerialPort1.Close()
Eerst worden alle parameters van de seriële poort dus ingesteld. Men kan dit doen door de juiste poort te selecteren in het vak ‘Available Ports’. De andere waarden worden ingesteld in het properties menu. Nu kan de poort worden geopend en de data worden verstuurd. De eerste 4 byte die dus worden geschreven zijn de data van de eerste 4 kanalen. Deze worden voorgesteld door de variablen varx1, varx2, varx3 en varx4. Daarna wordt ook nog een vijfde byte verzonden. Deze byte staat in voor de data omtrent het al dan niet gedisabled zijn van de kanalen. Op het laatst van deze transmissie is het belangrijk om nog 50ms te wachten zodat het µcontroller programma de tijd heeft alles mooi af te werken. Daarna kan de poort terug worden gesloten.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 48
4.4.8
Resultaten totale werking
Op onderstaande foto’s kan men de resultaten zien van de totale werking van het concept. Op de eerste foto ziet men hoe het eerste kanaal ingesteld wordt op een fase van 157,5°. Ook kan men zien dat de 3 eerste schakelaars (van rechts naar links) actief (hoog) zijn. Dit wordt ook ter verificatie op de LED’s weergegeven. Als men terug kijkt in de tabel van de SPI-codes, dan vindt men hiervoor een waarde van 157,5°.
Figuur 49: Werking µcontrollerbord
Men kan dit ook via de grafische User Interface gaan programmeren. Dit doet men door het juiste kanaal in te stellen (1), de USB connector in de pc te pluggen, en de juiste COM-poort te selecteren(2). Na het klikken op de knop ‘Transmit Data’ (3) wordt de juiste data dan naar de PICboard gestuurd. Tijdens het verzenden komt een statusbalk tevoorschijn, en kan men de led ‘receiving’ zien oplichten (4) op de picboard. 1
2
3
4
Figuur 50: Instellen µcontrollerbord
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 49
De opstelling gebeurde aan de hand van 4 kanalen. Door de vele problemen met de demodulator van het HF-bord werd geopteerd om de evaluationbord te gebruiken van Analog Devices. Dit bord is bijna hetzelfde als het HF-bord, daar het verschil gemaakt wordt bij de uitgangsopamps. Onderstaande figuur 51 toont de meetopstelling: SpectrumAnalyzer
FG:10MHz ref.
FG1: AM
FG2: 4LOP
Voeding
Figuur 51: Opstelling meting op totaal concept
De evaluationbord werd op onderstaande wijze aangesloten.
HF_IN1
I1+I2
FG1: AM Of (QAM)
SpectrumAnalyzer Q1+Q2
HF_IN2 FG2: 4LOP
HF_IN3 HF_IN4
I3+I4 Q3+Q4 Figuur 52: Foto van het evaluationbord
LNA-versterker
Cardoen Pepijn
Demodulator
8-kanaals IQ demodulator met beamformingsmogelijkheden
Uitgangsopamps
blz 50
Tijdens de metingen waren de toestellen als volgt ingesteld: FG1: Frequentie = 5MHz Amplitude = -10dBm AM ingang = 100kHz, 40% modulatiediepte FG2:
Frequentie = 20MHz Amplitude = +7dBm
FG3:
FG:
Frequentie = 10MHz Amplitude = 4Vptp
!OPGELET! Het uitgangssignaal van de eerste uitgang van de LNA werd doorgekoppeld naar alle ingangen van de AD8339.
Spectrum Analyzer:
Frequentie = 100kHz Amplitude = -10dBm
Startfrequentie: 20kHz Stopfrequentie: 300kHz ResolutieBB: 1kHz
Voeding: +5V en -5V Wanneer men het spectrum bekijkt van het AM-signaal op de spectrum Analyzer dan verkrijgt men volgend beeld:
Figuur 53: Voorbeeld van AM-signaal
In het midden vindt men de HF-draaggolf terug die in dit geval 5MHz is. Daarnaast vindt men ook 2 zijbanden terug. Deze zijbanden zijn gelijk aan de som en het verschil van de hoogfrequent draaggolf en het laagfrequente data signaal. Hier dus: 4,9MHz (= 5MHz – 100kHz) en 5,1MHz (= 5MHz + 100kHz). Dit signaal kan men zien als een QAM signaal, waarbij er niet verschoven geweest is in het AM-signaal. Dit signaal wordt dus binnengestuurd in de LNA-versterkers. Op de I1+ I2 uitgang vindt men dan volgend spectrum terug:
Figuur 54: Gedemoduleerd datasignaal
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 51
Men kan zien dat de 100kHz terug uit het AM-signaal werd gehaald door middel van demodulatie (zie hoofdstuk 1). Op het spectrum ziet men ook de 2de harmonische (200kHz). Deze werd vooral door de functiegenerator (FG3) gegenereerd, daar deze niet spectraal zuiver is. De 2de harmonische is echter 30dB onderdrukt. Op de uitgangen van de demodulator is nog een filter te kort die het teveel aan harmonischen zou moeten wegfilteren. Wanneer men dit signaal op een oscilloscoop bekijkt dan ziet men het volgende:
Figuur 55: Data signaal op oscilloscoop
Op de figuur is dan duidelijk de HF-draaggolf nog lichtjes zichtbaar. Normaal moet hiervoor een filter worden geplaatst op de uitgangen maar dit werd had een te hoge kantelfrequentie op het evaluationbord. Dit zou interessant zijn naar uitbereiding toe de volgende jaren. Wanneer 2 uitgangen (vb. I1 en I2) 180° ten opzichte van elkaar worden gedraaid, en deze uitgangen daarna worden gesommeerd, dan zal de totale spanning gelijk zijn aan 0. Deze proef werd uitgevoerd en het spectrum van de uitgang werd opgemeten.
Figuur 56: Sommeerfout van de opamps
Hier ziet men dus de optelfout dat de opamps maken tijdens het sommeren. Deze fout is echter minimaal en toont de laagfrequent data met een onderdrukking van -67dB of ook nog: (30) Of met andere woorden, het gemeten signaal is 2239 keer kleiner dan het ingestuurde signaal. Bij het disabelen van het kanaal was het uitgangssignaal kleiner dan -100dBm.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 52
Het is nu natuurlijk de bedoeling dat de fasen kunnen worden bijgeregeld vanaf de µcontrollerbord. Onderstaand scoopbeeld toont de uitgangen I1+I2(geel) en I3+I4(groen). De fase verschuiving werd ingesteld op 0° voor beide uitgangen.
Figuur 57: Signaal bij 0° fasedraaiing
Bemerk opnieuw de hoogfrequente vermenigvuldigingscomponent aanwezig op de laagfrequente sinus. Wanneer men de faseverschuivingen voor 1 van de uitgangen instelt op 180° (m.a.w. voor I1 én I2, of I3 én I4), dan bekomt men onderstaand scoopbeeld:
Figuur 58: Signaal bij 180° fasedraaiing
Hier ziet men dus dat de uitgangen inderdaad 180° ten opzichte van elkaar werden verschoven.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 53
Om de metingen op een goede manier te doen verlopen was het noodzakelijk om de 2 functiegeneratoren, die de signalen voorzien, te synchroniseren met elkaar. Dit gebeurde aan de hand van een externe generator van 10MHz. Deze generator gaf een sinus af met als amplitude 4Vptp en kon dan worden verbonden met de externe trigger-ingang van de 2 generatoren, en zo konden (na instelling in het menu) deze generatoren gesynchroniseerd worden. Om te weten hoe goed de generatoren met elkaar gesynchroniseerd zijn kan men beide uitgangen op een oscilloscoop aansluiten en deze in xy-mode plaatsen. Bij een perfecte synchronisatie zonder faseverschuivingen zou men een rechte lijn verkrijgen die van linksboven naar rechtsonder zou moeten gaan. Bij deze meetopstelling werd volgende figuur verkregen:
Figuur 59: xy-mode van 2 FG
Het is dus geen perfecte lijn wat benadrukt dat hier een faseverschuiving optreedt. Bij het loskoppelen van de referentie generator verkreeg men een vierkant waarin alle mogelijke combinaties mogelijk zijn om de signalen in fase te doen verschuiven (Zie figuur). Bij het verlengen van 1 van de bnc-kabels zou men dan steeds dichter bij een perfecte cirkel moeten komen (= 90°). Dit werd uiteraard uitgevoerd en onderstaande figuur geeft het resultaat hiervan weer:
Figuur 60: FG meer uit fase
Dankzij deze metingen was het dus mogelijk om te weten of de generatoren echt gesynchroniseerd waren, en wat de faseverschuiving was tussen beide generatoren. Deze figuren worden ook wel Lissajou-figuren genoemd.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 54
Wanneer de twee functiegeneratoren wel met elkaar gesynchroniseerd zijn, maar ze niet in fase zijn met elkaar, dan treedt het verschijnsel op dat het product van beide niet meer juist zal zijn. Dit kan men aantonen op onderstaande figuur:
Figuur 61: Uitgangssignaal bij fasefout aan de ingangen
Hier ziet men dat het uitgangsignaal (roze) geen mooie sinus is maar vervormd blijkt te zijn. Deze vervorming is te wijten aan de faseverschuiving tussen ingang en locale oscillator. Wanneer men dit wiskundig bekijkt dan kan men het volgende constateren: Ingangsignaal = sin( ) ∗ cos ( ) Uitgangssignaal wordt = sin( + Wanneer men dit berekend voor bijvoorbeeld
(31) ) ∗ (sin( ) ∗ cos( )) =
(32)
dan bekomt men volgend verloop:
Figuur 62: Theoretisch signaal, ontstaan door fasefouten
Dit is precies zoals verwacht werd. De ‘kappen’ in het signaal op de scoopfiguur worden veroorzaakt doordat de demodulator wil ‘inspringen’ op de stijgende flank aan de ingang. Hierdoor gebeurd een aanpassing (en deze is te zien als een sprong).
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 55
5. Problemen en (mogelijke) Oplossingen Het eerste probleem dat optrad tijdens deze masterproef, was dat ontwerpen op hoogfrequent gebied niet eenvoudig was. Er moest aandacht besteedt worden aan symmetrie, korte afstanden, en vooral, om alles zo dicht mogelijk bij elkaar te plaatsen. Om dit te doen had was een pcb nodig die industrieel gemaakt wordt, omdat de afstanden te klein worden om ze nog manueel te kunnen maken. Hierdoor alleen ontstonden tal van problemen. Een voorbeeld is de LNA-versterker. Door de kleine afstanden en moeilijk te solderen LNA versterker ontstonden foutjes in de signalen die deze op de uitgangen vertoonde. Deze konden worden weggewerkt door het ingangsfilter wat te veranderen zodat deze een lagere kantelfrequentie had. Een tweede probleem was dat de uitgangsopamps na de demodulator oscilleerden. Dit kwam door een laagfrequente koppeling. Na elco’s op de voedingslijnen te monteren was deze koppeling weg, en werkten deze terug normaal. Een derde probleem lag bij het demodulator ic. Deze weigerde te werken. Dit kwam waarschijnlijk doordat dit ic nauwelijks nog manueel te solderen was. Ook moest dit ic worden gekoeld langs de onderzijde. Na vele pogingen was er één ic die “werkte” maar door de vele pogingen om het ic te doen werken waren de resultaten onbetrouwbaar. Om toch het microcontrollersysteem te kunnen testen werd dan beslist om het evaluationbord aan te schaffen. Hierdoor kon ook worden gecontroleerd waar de fout zat op het hoogfrequentbord. Een betere oplossing zou zijn om uit te gaan van het bestaande evaluationbord, opdat dit bord op industriële wijze werd vervaardigd. Wanneer men dit bord zou aanpassen wordt de kans op een succesvolle onderzoeksopstelling veel groter. Bij een volledig werkende toepassing kan men dan een volledige pcb (laten) maken die alle onderdelen bevat. Hierdoor is men zeker van alle eigenschappen van het systeem.
6. Uitbreidingsmogelijkheden Daar het systeem nu werkt op 4 kanalen is het natuurlijk nuttig deze met nog een 4 kanalen uit te breiden, zodat het volledige onderzoekssysteem de 8 kanalen beschikt. Verder kan nog uitgebreid worden aan dit systeem, zodat het een volledige adaptive beamreceiving systeem wordt. Dit kan als volgt gebeuren: De uitgangen van de demodulatoren op de evaluationbords kunnen worden losgekoppeld en doorverbonden naar een nieuwe pcb. Hierop kan men dan opamps voorzien, die een digitaal regelbare versterking hebben, en die geschakeld kunnen sommeren. De som kan dan naar een A/D convertor worden gestuurd. Dit alles wordt gestuurd vanuit een 2de µcontroller. Deze kan de code van de A/D convertor interpreteren, en stuurt dan nieuwe data door naar de bestaande µcontroller (er werden hiervoor extra in- en uitgangen voorzien) zodat deze dan nieuwe fasewaarden kan instellen. Zodoende heeft men een regelkring gerealiseerd die er voor zorgt dat men bijvoorbeeld steeds probeert maximum signaal te creëren aan de uitgang. Hierdoor heeft men een adaptive beamreceiving systeem gebouwd. Deze techniek kan bijvoorbeeld gebruikt worden in andere technologieën. Daarbij wordt o.a. gedacht aan GSM. Deze techniek kan ervoor zorgen dat er steeds maximale signaalwinst is, wanneer de beller zich beweegt ten opzichte van de zender op plaatsen met weinig ontvangst.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 56
7. Besluiten en persoonlijke ervaringen Er kan van deze masterproef eerst en vooral besloten worden dat de gevraagde technische specificaties werden behaald. Het systeem dat opgezet werd voldoet dus aan de eerder gestelde eisen, en werkt nauwkeurig. De hoogfrequent pcb die ontwikkeld werd werkte echter niet volledig waardoor er genoodzaakt was om met de evaluationbord verder te werken. De reden hiervan is dat de gebruikte ic’s niet meer manueel te solderen waren. Bij de minste soldeerfout kan het ic stuk gaan, en dit ic moest dan ook nog gekoeld worden aan de onderzijde wat heel wat problemen met zich meebracht. Een wijze les hieruit is dat wanneer de pcb’s industrieel gemaakt worden, deze ook industrieel moeten worden bestukt. Door tijdsgebrek was het echter niet mogelijk om het systeem uit te breiden tot 8 kanalen. Dit blijft echter wel nog mogelijk in de toekomst, en kan als volgende masterproef aangeboden worden. Ook de uitbreidingen beschreven in hoofdstuk 6 kunnen worden gebruikt. Moest er verder worden uitgebreid wordt dan ook ten sterkste aangeraden om de evaluation bord uit te breiden en later, eens dit alles werkt, een totaal systeem te maken op industriële wijze. Hierdoor is het steeds mogelijk om te experimenteren met de parameters van het systeem, en kan het stap voor stap worden opgebouwd, waarbij fouten en dergelijke uitgesloten kunnen worden, alvorens het systeem op de markt komt. Dit zou dus een groot werkend prototype kunnen worden. Verder kan er ook worden besloten dat het onderzoeken en uitdokteren van het totale systeem niet altijd even eenvoudig was. Er moesten vele stappen ondernomen worden, waarbij het soms wat minder en anders eens wat beter ging. Tijdens dit onderzoek werd dan ook veel bijgeleerd op basis van meettechniek en pcb ontwerp. Bij ieder prototype werden fouten ontdekt waar eerder geen rekening mee gehouden was. Ideaal zou echter geweest zijn moest deze masterproef door meerdere personen worden uitgevoerd, daar dit voor één persoon achteraf redelijk veel werk bleek. Een goede en strikt te volgen planning was dan ook noodzakelijk.
Deze masterproef heeft mij op de proef gesteld qua theoretische en praktische kennis. Daar ik zeer veel bijgeleerd heb tijdens dit onderzoek kan ik besluiten dat mijn praktische kennis alleen maar is toegenomen. Niet alleen op hoogfrequentgebied, maar ook op gebied van software en microcontrollers. Daar ik dit nog nooit had gedaan op grootschalige basis voor ik aan deze masterproef begon, was dit voor mij een grote uitdaging. Ook het schrijven van een GUI leek in het begin een moeilijke taak. Tijdens deze masterproef heb ik dan ook geleerd om alles stap voor stap aan te pakken, en met kleine beetjes en stukjes alles tot een werkend geheel op te bouwen.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 57
8. Literatuurlijst [1] L. C. Godara, “Applications of antenna arrays to mobile communications, Part I: Performance improvement, feasibility, and system considerations,” Proc. IEEE, vol.85, no.7, pp.1031–1060, 1997.
[2] L. C. Godara, “Application of Antenna Arrays to Mobile Communications, Part II: Beam-Forming and Direction-of-Arrival Considerations” Proc. IEEE, vol.85, no.7, pp.1031–1060, 1997.
[3] J-Y. Park, Y. Wang, T. Itoh, “A 60 GHz integrated antenna array for high-speed digital beamforming applications”, IEEE MTT-S Digest, June 2003
[4] S. Chen, L. Hanzo, and N. N. Ahmad, “Adaptive minimum bit error rate beamforming assisted receiver for wireless communications,” in Proc. ICASSP 2003, Hong Kong, China, Apr. 2003, vol. IV, pp. 640–643.
[5] A. Tarighat, M. Sadek, and A. H. Sayed, “A multi user beamforming scheme for downlink MIMO channels based on maximizing signal-toleakage ratios,” in Proc. IEEE International Conference on Acoustics, Speech, and Signal Processing, vol. 3, Philadelphia, PA, 2005, pp. 1129 – 1132.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 58
9. Planning Alvorens aan deze masterproef te beginnen was het de bedoeling om een planning op te stellen. Aan de hand van deze planning moest taken worden uitgevoerd. Hieronder vindt men de oorspronkelijke planning terug, en deze die werkelijk werd uitgevoerd. Tabel 5: Deadlines
September:
Studie van de gebruikte ic’s en Studie van de technologieën. technologieën.
Oktober:
Ontwerp van een functioneel schema en een prototype PCB voor 4 kanalen (nog geen µcontroller gedeelte). Schrijven van programma code op een evaluation board (pic18f4550).
Ontwerp van het schema voor de HFbord voor 4 kanalen. Schrijven van programma code op een evaluation board (pic18f4550).
November:
Realisatie van het prototype en metingen uitvoeren. Eventuele aanpassingen doorvoeren.+ Uitbreiding PCB naar 8 kanalen. (Definitieve PCB) Ontwerpen van de µcontroller board. Verder schrijven van software voor zowel µcontroller als GUI. Indienen PCB’s bij gespecialiseerd bedrijf. Software afwerken (µcontroller). Bestukken van PCB’s en afwerking software (GUI). Begin schrijven artikel.
Realisatie van het prototype. Eventuele aanpassingen doorvoeren. Reprototyping. Behouden van 4kanaals pcb.
December:
Januari:
Februari:
Maart:
April: Mei:
gebruikte
ic’s
en
Ontwerpen van de µcontroller board. Verder schrijven van software voor zowel µcontroller als GUI. Verder werken software software µcontroller
GUI
en
Indienen PCB’s bij gespecialiseerd bedrijf. Bestukken van PCB’s en afwerking software (GUI).
Testen van de volledige schakeling + begin schrijven Thesis + afwerking artikel. Afwerken thesis.
Begin schrijven Thesis. Testen van de schakeling. µcontroller code verder werken. Testen van de schakeling, schrijven van de thesis + µcontroller code. Eventuele inhaal van deadlines die Afwerken thesis + µcontroller code + verschoven werden. Testen van de totale schakeling.
Door enkele verschuivingen in de deadlines was het niet gemakkelijk om alles op tijd af te krijgen. Het artikel is niet meer geschreven geweest daar er onvoldoende tijd was. Gelukkig kon alles mooi afgewerkt worden omdat mei voorzien was om verschuivingen op te vangen. Tijdens het bedrijfsonderzoek zal men hier ook mee te maken krijgen, en zulke inhaal perioden incalculeren is een goede zaak.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 59
10.
Financiële Analyse
Tijdens de realisatie van deze masterproef moest ook het een en ander worden aangekocht. Hieronder staat beschreven wat de exacte kostprijs van deze masterproef is. Zo kan worden berekend wat de totale kostprijs zou kunnen zijn, moest het onderzoek uitgroeien tot een commercieel product. Tabel 6: Samenvatting van alle kosten
Aankoop Componenten Aankoop Pcb’s Aankoop evaluation board Onderzoeks onkosten
350,62 euro 178 euro 278,27 euro 20 euro
Totale kosten 827 euro Deze kosten lijken relatief hoog. Hiermee dient rekening gehouden te worden dat dit uiteraard om een onderzoek draait. Daar bij een onderzoek in een bedrijfsomgeving de kosten nog vele malen hoger liggen.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 60
11.
Bijlagen
In bijlage vindt men in volgorde: a. b. c. d. e. f. g. h. i. j.
Referenties van de gebruikte datasheets Programmacode van de GUI Programmacode van de µcontroller Schema van het LNA-versterkerboard Schema’s van het demodulatorboard Schema’s van het µcontrollerboard PCB van het LNA-versterkerboard PCB van het demodulator board PCB van het µcontrollerboard Handleiding van de µcontrollerboard
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 61
a. Referenties van de gebruikte datasheets -
AD8339 (Analog Devices) http://www.analog.com/static/imported-files/data_sheets/AD8339.pdf
-
AD8334 (Analog Devices) http://www.analog.com/static/imported-files/data_sheets/AD8331_8332_8334.pdf
-
AD8021 (Analog Devices) http://www.analog.com/static/imported-files/data_sheets/AD8021.pdf
-
DS90C401M (National Semiconductor) http://www.national.com/ds/DS/DS90C401.pdf
-
PIC18f4550 (Microchip) http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf
-
FT232BL (FTDI) http://www.ftdichip.com/Documents/DataSheets/DS_FT232R_V205.pdf
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 62
b. Programmacode van de GUI Form: Hoofdprogramma Public Class Form1 Dim var3 As String Dim boxkeuze As String Dim varchannelX As Byte Dim varchannel1 As Byte Dim varchannel2 As Byte Dim varchannel3 As Byte Dim varchannel4 As Byte Dim varchannel5 As Byte Dim varchannel6 As Byte Dim varchannel7 As Byte Dim varchannel8 As Byte Dim varchannel9 As Byte Dim varx1 As String Dim varx2 As String Dim varx3 As String Dim varx4 As String Dim varx5 As String Dim varx6 As String Dim varx7 As String Dim varx8 As String Dim varx9 As String Dim selvar1 As String Dim selvar2 As String Dim teller1 As Integer Dim teller2 As Integer Dim teller3 As Integer Dim teller4 As Integer Dim teller5 As Integer Dim teller6 As Integer Dim teller7 As Integer Dim teller8 As Integer Dim teller9 As Integer Dim selchannel1 As Double Dim selchannel2 As Double Dim selchannel3 As Double Dim selchannel4 As Double Dim selchannel5 As Double Dim selchannel6 As Double Dim selchannel7 As Double Dim selchannel8 As Double Dim selchannel9 As Double Dim selectbyte1 As Double = 0 Dim selectbyte2 As Double = 0 Dim sp As String Dim time As String Dim comlist As String Dim comselect As String = "0" Dim listboxvar As String Dim comvar As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load time = TimeOfDay ListBox1.Items.Add(time + " - Starting Program") tmrTimerPGB.Enabled = False
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 63
ComboBox1.SelectedItem ComboBox2.SelectedItem ComboBox3.SelectedItem ComboBox4.SelectedItem ComboBox5.SelectedItem ComboBox6.SelectedItem ComboBox7.SelectedItem ComboBox8.SelectedItem ComboBox9.SelectedItem
= = = = = = = = =
"0°" "0°" "0°" "0°" "0°" "0°" "0°" "0°" "0°"
Button21.Enabled = False Button22.Enabled = False Label25.Text = "COM port not connected, please select correct one!" End Sub Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked End Sub Private Sub Button22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button22.Click time = TimeOfDay ListBox1.Items.Add(time + " - Transmit Data") Dim var1 As Integer Dim var2 As Integer var2 = 0 var1 = 1 If var1 Then Label22.Text = "Transmitting Data" End If
tmrTimerPGB.Enabled = True selecter() SerialPort1.BaudRate.ToString(frmProperties.varry1) SerialPort1.DataBits.ToString(frmProperties.varry2) SerialPort1.PortName = comvar SerialPort1.Open() SerialPort1.Write(varx1) Sleep(50) SerialPort1.Write(varx2) Sleep(50) SerialPort1.Write(varx3) Sleep(50) SerialPort1.Write(varx4) Sleep(50) SerialPort1.Write(selvar1) Sleep(50) SerialPort1.Close() End Sub Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long) ' pause for 5 seconds
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click End End Sub
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 64
Private Sub Button21_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button21.Click time = TimeOfDay ListBox1.Items.Add(time + " - Receive Data") Dim var1 As Integer Dim var2 As Integer var2 = 0 var1 = 1 If var1 Then Label22.Text = "Receiving Data" End If tmrTimerPGB.Enabled = True End Sub Private Sub Label22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label22.Click End Sub Private Sub tmrTimerPGB_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrTimerPGB.Tick pgbDataTransfer.Visible = True pgbDataTransfer.Value += 1 If pgbDataTransfer.Value = 10 Then tmrTimerPGB.Enabled = False Label22.Text = "Completed" pgbDataTransfer.Value = 0 Label22.Text = "" pgbDataTransfer.Visible = False End If End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged time = TimeOfDay ListBox1.Items.Add(time + " - channel1 item changed") boxkeuze = "1" boxkiezen() varchannel1 = varchannelX Label24.Text = varchannel1 varx1 = (Hex(varchannel1)) If varchannel1 = 0 Then Label27.Text = "0000" End If If varchannel1 = 1 Then Label27.Text = "0001" End If If varchannel1 = 2 Then Label27.Text = "0010" End If If varchannel1 = 3 Then Label27.Text = "0011" End If If varchannel1 = 4 Then Label27.Text = "0100" End If If varchannel1 = 5 Then Label27.Text = "0101" End If If varchannel1 = 6 Then
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 65
Label27.Text End If If varchannel1 = Label27.Text End If If varchannel1 = Label27.Text End If If varchannel1 = Label27.Text End If If varchannel1 = Label27.Text End If If varchannel1 = Label27.Text End If If varchannel1 = Label27.Text End If If varchannel1 = Label27.Text End If If varchannel1 = Label27.Text End If If varchannel1 = Label27.Text End If
= "0110" 7 Then = "0111" 8 Then = "1000" 9 Then = "1001" 10 Then = "1010" 11 Then = "1011" 12 Then = "1100" 13 Then = "1101" 14 Then = "1110" 15 Then = "1111"
End Sub Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged time = TimeOfDay ListBox1.Items.Add(time + " - channel2 item changed") boxkeuze = "2" boxkiezen() varchannel2 = varchannelX Label24.Text = varchannel2 varx2 = (Hex(varchannel2)) If varchannel2 = 0 Then Label29.Text = "0000" End If If varchannel2 = 1 Then Label29.Text = "0001" End If If varchannel2 = 2 Then Label29.Text = "0010" End If If varchannel2 = 3 Then Label29.Text = "0011" End If If varchannel2 = 4 Then Label29.Text = "0100" End If If varchannel2 = 5 Then Label29.Text = "0101" End If If varchannel2 = 6 Then Label29.Text = "0110" End If
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 66
If varchannel2 = Label29.Text End If If varchannel2 = Label29.Text End If If varchannel2 = Label29.Text End If If varchannel2 = Label29.Text End If If varchannel2 = Label29.Text End If If varchannel2 = Label29.Text End If If varchannel2 = Label29.Text End If If varchannel2 = Label29.Text End If If varchannel2 = Label29.Text End If End Sub
7 Then = "0111" 8 Then = "1000" 9 Then = "1001" 10 Then = "1010" 11 Then = "1011" 12 Then = "1100" 13 Then = "1101" 14 Then = "1110" 15 Then = "1111"
Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged time = TimeOfDay ListBox1.Items.Add(time + " - channel3 item changed") boxkeuze = "3" boxkiezen() varchannel3 = varchannelX Label24.Text = varchannel3 varx3 = (Hex(varchannel3)) If varchannel3 = 0 Then Label30.Text = "0000" End If If varchannel3 = 1 Then Label30.Text = "0001" End If If varchannel3 = 2 Then Label30.Text = "0010" End If If varchannel3 = 3 Then Label30.Text = "0011" End If If varchannel3 = 4 Then Label30.Text = "0100" End If If varchannel3 = 5 Then Label30.Text = "0101" End If If varchannel3 = 6 Then Label30.Text = "0110" End If If varchannel3 = 7 Then Label30.Text = "0111" End If
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 67
If varchannel3 = Label30.Text End If If varchannel3 = Label30.Text End If If varchannel3 = Label30.Text End If If varchannel3 = Label30.Text End If If varchannel3 = Label30.Text End If If varchannel3 = Label30.Text End If If varchannel3 = Label30.Text End If If varchannel3 = Label30.Text End If End Sub
8 Then = "1000" 9 Then = "1001" 10 Then = "1010" 11 Then = "1011" 12 Then = "1100" 13 Then = "1101" 14 Then = "1110" 15 Then = "1111"
Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.SelectedIndexChanged time = TimeOfDay ListBox1.Items.Add(time + " - channel4 item changed") boxkeuze = "4" boxkiezen() varchannel4 = varchannelX Label24.Text = varchannel4 varx4 = (Hex(varchannel4)) If varchannel4 = 0 Then Label31.Text = "0000" End If If varchannel4 = 1 Then Label31.Text = "0001" End If If varchannel4 = 2 Then Label31.Text = "0010" End If If varchannel4 = 3 Then Label31.Text = "0011" End If If varchannel4 = 4 Then Label31.Text = "0100" End If If varchannel4 = 5 Then Label31.Text = "0101" End If If varchannel4 = 6 Then Label31.Text = "0110" End If If varchannel4 = 7 Then Label31.Text = "0111" End If If varchannel4 = 8 Then Label31.Text = "1000" End If
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 68
If varchannel4 = Label31.Text End If If varchannel4 = Label31.Text End If If varchannel4 = Label31.Text End If If varchannel4 = Label31.Text End If If varchannel4 = Label31.Text End If If varchannel4 = Label31.Text End If If varchannel4 = Label31.Text End If End Sub
9 Then = "1001" 10 Then = "1010" 11 Then = "1011" 12 Then = "1100" 13 Then = "1101" 14 Then = "1110" 15 Then = "1111"
Private Sub ComboBox5_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox5.SelectedIndexChanged time = TimeOfDay ListBox1.Items.Add(time + " - channel5 item changed") boxkeuze = "5" boxkiezen() varchannel5 = varchannelX Label24.Text = varchannel5 varx5 = (Hex(varchannel5)) End Sub Private Sub ComboBox6_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox6.SelectedIndexChanged time = TimeOfDay ListBox1.Items.Add(time + " - channel6 item changed") boxkeuze = "6" boxkiezen() varchannel6 = varchannelX Label24.Text = varchannel6 varx6 = (Hex(varchannel6)) End Sub Private Sub ComboBox7_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox7.SelectedIndexChanged time = TimeOfDay ListBox1.Items.Add(time + " - channel7 item changed") boxkeuze = "7" boxkiezen() varchannel7 = varchannelX Label24.Text = varchannel7 varx7 = (Hex(varchannel7)) End Sub Private Sub ComboBox8_SelectedIndexChanged(ByVal sender As
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 69
System.Object, ByVal e As System.EventArgs) Handles ComboBox8.SelectedIndexChanged time = TimeOfDay ListBox1.Items.Add(time + " - channel8 item changed") boxkeuze = "8" boxkiezen() varchannel8 = varchannelX Label24.Text = varchannel8 varx8 = (Hex(varchannel8)) End Sub Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click time = TimeOfDay ListBox1.Items.Add(time + " - All channels changed") boxkeuze = "9" boxkiezen() varchannel9 = varchannelX Label24.Text = varchannel9 ComboBox1.SelectedItem = ComboBox9.SelectedItem ComboBox2.SelectedItem = ComboBox9.SelectedItem ComboBox3.SelectedItem = ComboBox9.SelectedItem ComboBox4.SelectedItem = ComboBox9.SelectedItem ComboBox5.SelectedItem = ComboBox9.SelectedItem ComboBox6.SelectedItem = ComboBox9.SelectedItem ComboBox7.SelectedItem = ComboBox9.SelectedItem ComboBox8.SelectedItem = ComboBox9.SelectedItem End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If teller1 >= 1 Then If teller1 <= 2 Then teller1 = 0 End If time = TimeOfDay ListBox1.Items.Add(time + " - channel1 Enabled") Button2.Text = "Disable" GroupBox1.Enabled = True selchannel1 = 0 Else teller1 += 1 time = TimeOfDay ListBox1.Items.Add(time + " - channel1 Disabled") Button2.Text = "Enable" GroupBox1.Enabled = False selchannel1 = 1 End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If teller2 >= 1 Then If teller2 <= 2 Then teller2 = 0 End If time = TimeOfDay ListBox1.Items.Add(time + " - channel2 Enabled") Button3.Text = "Disable" GroupBox2.Enabled = True selchannel2 = 0 Else teller2 += 1
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 70
time = TimeOfDay ListBox1.Items.Add(time + " - channel2 Disabled") Button3.Text = "Enable" GroupBox2.Enabled = False selchannel2 = 1 End If End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click If teller3 >= 1 Then If teller3 <= 2 Then teller3 = 0 End If time = TimeOfDay ListBox1.Items.Add(time + " - channel3 Enabled") Button7.Text = "Disable" GroupBox4.Enabled = True selchannel3 = 0 Else teller3 += 1 time = TimeOfDay ListBox1.Items.Add(time + " - channel3 Disabled") Button7.Text = "Enable" GroupBox4.Enabled = False selchannel3 = 1 End If End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If teller4 >= 1 Then If teller4 <= 2 Then teller4 = 0 End If time = TimeOfDay ListBox1.Items.Add(time + " - channel4 Enabled") Button5.Text = "Disable" GroupBox3.Enabled = True selchannel4 = 0 Else teller4 += 1 time = TimeOfDay ListBox1.Items.Add(time + " - channel4 Disabled") Button5.Text = "Enable" GroupBox3.Enabled = False selchannel4 = 1 End If End Sub Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click If teller5 >= 1 Then If teller5 <= 2 Then teller5 = 0 End If time = TimeOfDay ListBox1.Items.Add(time + " - channel5 Enabled") Button15.Text = "Disable" GroupBox8.Enabled = True selchannel5 = 0 Else teller5 += 1 time = TimeOfDay ListBox1.Items.Add(time + " - channel5 Disabled") Button15.Text = "Enable"
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 71
GroupBox8.Enabled = False selchannel5 = 1 End If End Sub Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click If teller6 >= 1 Then If teller6 <= 2 Then teller6 = 0 End If time = TimeOfDay ListBox1.Items.Add(time + " - channel6 Enabled") Button13.Text = "Disable" GroupBox7.Enabled = True selchannel6 = 0 Else teller6 += 1 time = TimeOfDay ListBox1.Items.Add(time + " - channel6 Disabled") Button13.Text = "Enable" GroupBox7.Enabled = False selchannel6 = 1 End If End Sub Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click If teller7 >= 1 Then If teller7 <= 2 Then teller7 = 0 End If time = TimeOfDay ListBox1.Items.Add(time + " - channel7 Enabled") Button11.Text = "Disable" GroupBox6.Enabled = True selchannel7 = 0 Else teller7 += 1 time = TimeOfDay ListBox1.Items.Add(time + " - channel7 Disabled") Button11.Text = "Enable" GroupBox6.Enabled = False selchannel7 = 1 End If End Sub Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click If teller8 >= 1 Then If teller8 <= 2 Then teller8 = 0 End If time = TimeOfDay ListBox1.Items.Add(time + " - channel8 Enabled") Button9.Text = "Disable" GroupBox5.Enabled = True selchannel8 = 0 Else teller8 += 1 time = TimeOfDay ListBox1.Items.Add(time + " - channel8 Disabled") Button9.Text = "Enable" GroupBox5.Enabled = False selchannel8 = 1 End If
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 72
End Sub Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click If teller9 >= 1 Then If teller9 <= 2 Then teller9 = 0 teller1 = 0 teller2 = 0 teller3 = 0 teller4 = 0 teller5 = 0 teller6 = 0 teller7 = 0 teller8 = 0 End If Button17.Text = "Disable" Button2.Text = "Disable" Button3.Text = "Disable" Button7.Text = "Disable" Button5.Text = "Disable" Button15.Text = "Disable" Button13.Text = "Disable" Button11.Text = "Disable" Button9.Text = "Disable" GroupBox1.Enabled = True GroupBox2.Enabled = True GroupBox3.Enabled = True GroupBox4.Enabled = True GroupBox5.Enabled = True GroupBox6.Enabled = True GroupBox7.Enabled = True GroupBox8.Enabled = True selchannel1 = 0 selchannel2 = 0 selchannel3 = 0 selchannel4 = 0 selchannel5 = 0 selchannel6 = 0 selchannel7 = 0 selchannel8 = 0 time = TimeOfDay ListBox1.Items.Add(time + " - All channels Disabled") Else teller9 += 1 teller1 += 1 teller2 += 1 teller3 += 1 teller4 += 1 teller5 += 1 teller6 += 1 teller7 += 1 teller8 += 1 Button17.Text = "Enable" Button2.Text = "Enable" Button3.Text = "Enable" Button7.Text = "Enable" Button5.Text = "Enable" Button15.Text = "Enable" Button13.Text = "Enable" Button11.Text = "Enable"
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 73
Button9.Text = "Enable" GroupBox1.Enabled = False GroupBox2.Enabled = False GroupBox3.Enabled = False GroupBox4.Enabled = False GroupBox5.Enabled = False GroupBox6.Enabled = False GroupBox7.Enabled = False GroupBox8.Enabled = False selchannel1 = 1 selchannel2 = 1 selchannel3 = 1 selchannel4 = 1 selchannel5 = 1 selchannel6 = 1 selchannel7 = 1 selchannel8 = 1 time = TimeOfDay ListBox1.Items.Add(time + " - All channels Enabled") End If End Sub Private Sub boxkiezen() Select Case boxkeuze Case "1" var3 = ComboBox1.SelectedItem.ToString() Case "2" var3 = ComboBox2.SelectedItem.ToString() Case "3" var3 = ComboBox3.SelectedItem.ToString() Case "4" var3 = ComboBox4.SelectedItem.ToString() Case "5" var3 = ComboBox5.SelectedItem.ToString() Case "6" var3 = ComboBox6.SelectedItem.ToString() Case "7" var3 = ComboBox7.SelectedItem.ToString() Case "8" var3 = ComboBox8.SelectedItem.ToString() Case "9" var3 = ComboBox9.SelectedItem.ToString() Case Else End Select Select Case var3 Case "0°" varchannelX Case "22,5°" varchannelX Case "45°" varchannelX Case "67,5°" varchannelX Case "90°" varchannelX Case "112,5°" varchannelX Case "135°" varchannelX Case "157,5°" varchannelX Case "180°"
Cardoen Pepijn
= "0" = "1" = "2" = "3" = "4" = "5" = "6" = "7"
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 74
varchannelX Case "202,5°" varchannelX Case "225°" varchannelX Case "247,5°" varchannelX Case "270°" varchannelX Case "292,5°" varchannelX Case "315°" varchannelX Case "337,5°" varchannelX End Select End Sub
= "8" = "9" = "10" = "11" = "12" = "13" = "14" = "15"
Private Sub SetPropertiesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SetPropertiesToolStripMenuItem.Click frmProperties.Show()
comlist = frmProperties.ListBox1.SelectedItem If comlist = "COM3" Then
End If End Sub
Private Sub selecter() selectbyte1 = 0 selectbyte1 = selchannel4 * 2 selectbyte1 = (selectbyte1 + selchannel3) * 2 selectbyte1 = (selectbyte1 + selchannel2) * 2 selectbyte1 = (selectbyte1 + selchannel1) selvar1 = (Hex(selectbyte1)) selectbyte2 = 0 selectbyte2 = selchannel8 * 2 selectbyte2 = (selectbyte2 + selchannel7) * 2 selectbyte2 = (selectbyte2 + selchannel6) * 2 selectbyte2 = (selectbyte2 + selchannel5) selvar2 = (Hex(selectbyte2)) End Sub Private Sub AboutSPIControllerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutSPIControllerToolStripMenuItem.Click frmabout.Show() End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged End Sub
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 75
Private Sub GroupBox10_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox10.Enter End Sub Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged If comselect = 1 Then Button21.Enabled = True Button22.Enabled = True Label25.Text = "COM port connected succesfully!" comvar = ListBox2.SelectedItem Else Button21.Enabled = False Button22.Enabled = False Label25.Text = "COM port not connected, please select correct one!" End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick ListBox2.Items.Clear() For Each sp As String In My.Computer.Ports.SerialPortNames ListBox2.Items.Add(sp) Next If ListBox2.ToString.Contains("COM") Then comselect = "1" Else comselect = "0" End If
If comselect = "0" Then Button21.Enabled = False Button22.Enabled = False Label25.Text = "COM port not connected, please select correct one!" End If
End Sub Private Sub HelpToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HelpToolStripMenuItem2.Click Help.Show() End Sub
End Class
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 76
Form: Properties Public Class frmProperties Public varry1 As String Public varry2 As String Public varry3 As String Dim sp As String Public comlist As String
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click varry1 = ComboBox1.SelectedItem.ToString() varry2 = ComboBox2.SelectedItem.ToString() comlist = ListBox1.SelectedItem Me.Close() End Sub Private Sub frmProperties_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ComboBox1.SelectedItem = "9600" ComboBox2.SelectedItem = "8" End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click For Each sp As String In My.Computer.Ports.SerialPortNames ListBox1.Items.Add(sp) Next End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged comlist = ListBox1.SelectedItem End Sub End Class
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 77
Form: Help Public Class Help
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged If (ComboBox1.SelectedIndex = 0) Then Label2.Text = "U kiest het kanaal dat u wenst in te stellen en maakt uw keuze in de lijst." End If If (ComboBox1.SelectedIndex = 1) Then Label2.Text = "U kiest het kanaal dat u wenst te Enablen/Disablen en drukt op de knop 'Enable' of 'Disable'." End If If (ComboBox1.SelectedIndex = 2) Then Label2.Text = "U kiest een waarde rechts bij 'control' en klikt op 'set all'." End If If (ComboBox1.SelectedIndex = 3) Then Label2.Text = "U klikt onder 'control' op 'Enable/Disable'." End If If (ComboBox1.SelectedIndex = 4) Then Label2.Text = "Onder 'Available COMports' vindt u de mogelijke poorten, u kiest de gewenste." End If If (ComboBox1.SelectedIndex = 5) Then Label2.Text = "Na een COM-poort geselecteerd te hebben, drukt u op 'Transmit Data'." End If If (ComboBox1.SelectedIndex = 6) Then Label2.Text = "U kunt dit terugvinden in de logger (u kunt ook de status balk zien verschijnen)." End If If (ComboBox1.SelectedIndex = 7) Then Label2.Text = "Onder 'properties -> port properties' vindt u de mogelijke poorten terug." End If If (ComboBox1.SelectedIndex = 8) Then Label2.Text = "U vind in de 'event logger' steeds alle activiteiten terug." End If End Sub
End Class
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 78
c. Programmacode van de µcontroller Hoofdprogramma (µcontroller) //============ General Information ===================================== // Author: Cardoen Pepijn // Version: 15 // Last update: 18 mei 2010 // Title: µcontroller programma Masterproef 2009-2010 //============ Nota ==================================================== // dit programma hoort in de µcontroller 18f4550 van de masterproef 20092010 // "8-kanaals IQ demodulator met beamformingsmogelijkheden" te worden geplaatst //============= Includes =============================================== #include
#include "stdbool.h" #include <usart.h> #include <stdio.h> #include "leds.h" //============= Declaratie van zelfgedefiniëerde functies ============== void Init(void); void clock(void); void InitUart(void); void InitLCD(void); void LCDroutines(void); void initleds(void); void sendstring(char *string,char line); void sendlcddata(char LCDdata, char state); void HighPriorityInterruptSubroutine(void); void LowPriorityInterruptSubroutine(void); extern void _startup (void); //deze bovenstaande functie laat de PIC na reset starten vanaf adres 800 om niet in conflict met de bootloader te komen //er staat extern voor omdat deze functie in een ander bestand staat //======================================================================= // See c018i.c in your C18 compiler directory (C:\MCC18\src\traditional\startup) #pragma code _RESET_INTERRUPT_VECTOR = 0x000800 //p30 C18 User Guide void _reset (void) { _asm goto _startup _endasm } #pragma code //======================================================================= // Doorverwijzingen van locatie van interrupt naar // de zelfgeschreven interrupt subroutine... // Zie C18 compiler datasheet vanaf p25. #pragma code high_vector=0x000808 //Begin pragma code void interrupt_at_high_vector(void) { _asm goto HighPriorityInterruptSubroutine _endasm //Stukje assemblycode dat doorverwijst naar de passende interruptroutine } #pragma code //Einde pragma code #pragma code low_vector=0x000818 void interrupt_at_low_vector(void)
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 79
{ _asm goto LowPriorityInterruptSubroutine _endasm } #pragma code //============= Definitions of Ports versus Lables ======================== //Lables voor uitgangen en ingangen #define CLED1 PORTAbits.RA0 #define CLED2 PORTAbits.RA1 #define CLED3 PORTAbits.RA2 #define CLED4 PORTAbits.RA3 #define #define #define #define
FLED1 FLED2 FLED3 FLED4
PORTAbits.RA4 PORTAbits.RA5 PORTEbits.RE0 PORTEbits.RE1
#define #define #define #define
psb1 psb2 psb3 psb4
PORTDbits.RD4 PORTDbits.RD5 PORTDbits.RD6 PORTDbits.RD7
#define #define #define #define
SW1 SW2 SW3 SW4
PORTDbits.RD0 PORTDbits.RD1 PORTDbits.RD2 PORTDbits.RD3
#define #define #define #define
RSTS CLK CS1 DATA
PORTBbits.RB7 PORTAbits.RA3 PORTAbits.RA4 PORTAbits.RA5
//============= ENUM's ===================================================
//============ Constant Declarations ===================================== const unsigned char X = 0;
//============= Global Variable Declarations ============================= unsigned int FTELLER = 0x0000 ; unsigned char result = 0x00 ; unsigned char vlag = 0x00 ; unsigned int input = 0x00; char lcdtext[17] = "Nieuwe Fase = "; char lcdtext0[5] = "0"; char lcdtext1[5] = "22.5"; char lcdtext2[5] = "45"; char lcdtext3[5] = "67,5"; char lcdtext4[5] = "90"; char lcdtext5[6] = "112,5"; char lcdtext6[5] = "135"; char lcdtext7[6] = "157,5"; char lcdtext8[5] = "180"; char lcdtext9[6] = "202,5"; char lcdtext10[5] = "225"; char lcdtext11[6] = "247,5"; char lcdtext12[5] = "270"; char lcdtext13[6] = "292,5"; char lcdtext14[5] = "315"; char lcdtext15[6] = "337,5"; char lcdmenutxt1[17] = "Write SPI "; char lcdmenutxt2[17] = "Selecteer mode"; char lcdchanneltext[17] = "Kanaal Disabled";
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 80
char GUIwrite[17] = "Adapted by GUI"; unsigned int modeteller = 0; char LEDS = 0x00; char lcdDONE[17] = "DONE!"; unsigned char vlag2 = 0x00; unsigned char CTELLER = 0x00 ; unsigned char codex = 0; unsigned char code = 0; unsigned char code2 = 0; unsigned char code3 = 0; unsigned char code4 = 0; unsigned char fasex = 0; unsigned char vlag11 = 0x00; unsigned char vlag12 = 0x00; unsigned char vlag13 = 0x00; unsigned char vlag14 = 0x00; unsigned char vlag101 = 0x00; unsigned char vlag102 = 0x00; unsigned char vlag103 = 0x00; unsigned char vlag104 = 0x00; unsigned char kanaalenable1 = 0x00; unsigned int z = 0; unsigned int y = 0; unsigned int x = 0; unsigned char code1oud = 0x00; unsigned char channels = 0x00; unsigned char data = 0x00; unsigned char fasedata = 0x00; unsigned char fase = 0x00 ; unsigned char vlag3 = 0x00; unsigned char disable1 = 0x00; unsigned char disable2 = 0x00; unsigned char disable3 = 0x00; unsigned char disable4 = 0x00; int fasekanaal1 = 0x00 ; int fasekanaal2 = 0x00 ; int fasekanaal3 = 0x00 ; int fasekanaal4 = 0x00 ; char spi1 = 0x00; char spi2 = 0x00; char vlag5 = 0x00; char code1 = 0x00; char toggle1 = 0x00; char toggle2 = 0x00; char toggle3 = 0x00; char toggle4 = 0x00; char guiaan1 = 0; char guiaan2 = 0; char guiaan3 = 0; char guiaan4 = 0; char GUIcounter = 0x00; unsigned char enablex = 0; unsigned char spien12 = 0x00; unsigned char spix = 0x00; unsigned char spi_ok = 0x00; //============= Programma (= consists of functions )===================== //======================================================================= // Initialisatie voor de rest van het programma start //======================================================================= void Init(void) { //Configure I/O
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 81
//TRISX TRISA = TRISB = TRISC = TRISD = TRISE =
=> 1=Input, 0=output 0x00; 0x00; 0x00; 0xFF; 0x00;
//Configure Watchdog timer (p299) WDTCONbits.SWDTEN = 0 ;
//Disable WatchDogTimer
//Configure Interrupts (p99) RCONbits.IPEN = 0 ; Enable priority levels on interrupts (p110)
//reg RCON bit IPEN = 1 =
//de volgende twee instructies zijn van toepassing wanneer RCONbits.IPEN = 0 (Priority levels Disabled) INTCONbits.GIE = 0 ; //reg INTCON bit GIE = Global Interrupt Enable bit = 0 => Disable all interrupts sources (p101) INTCONbits.PEIE = 0 ; //reg INTCON bit PEIE = Pheripheral Interrupt Enable bit = 0 => Disable all Peripheral Interrupts (p101) //de voglende twee instructies zijn van toepassing wanneer RCONbits.IPEN = 1 (Priority levels Enabled) INTCONbits.GIEH = 0 ; //reg INTCON bit GIEH = Global Interrupt Enable High = 1 => Enable all high priority interrupts (p101) INTCONbits.GIEL = 0 ; //reg INTCON bit GIEL = Global Interrupt Enable Low = 1 => Enable all low priority interrupts (p101) //Configure Comparators CMCONbits.CM0 = 1 ; CMCONbits.CM1 = 1 ; CMCONbits.CM2 = 1 ;
//Comparatoren uitschakelen
//Configure the AD module ADCON0 &= 0b00000000 ; //ADCON0 = (Vorige waarde ADCON0 & 0b00000011) //bits7-6 are unimplemented (zie p261) //bit5-2 = CHS3-0 = Analog Channel select bits = 0000 = AN0 (RA0,pin 2) //bit1 = GO/DONE => met ANDfunctie doen we 1 zodat GO/DONE blijft wat het was //bit0 = ADON => met & functie doen we 1 zodat ADON blijft wat het was ADCON1 = 0b00001111 ;
//bits7-6 are unimplemented (p262) //bit5 en bit4 zijn voltage reference bits, hier gebruiken we die niet //bit3-0 = PCFG3-0 = AD Port config bits = 1110 = RA0 wordt AN0, al de rest blijft digitaal //ADCON2 = 0b00000110 ; Left justified (p263)
//bit7 = A/D Result select bit = 0 = //bit6 = unimplemented //bit5-3 = ACQT2-0 = AD
acquisition time bits = 000 = no acq time //bit2-0 = ADC2-0 = AD Conversion clock select bits = 110 = Fosc/64
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 82
// de chipselectlijn initieel hoog plaatsten CS1 = 1; //Configure the initial status of the I/O Ports PORTA = PORTE = PORTB = PORTC = 0x00; PORTD = 0xFF; } //======================================================================== // HighPriorityInterruptSubroutine //======================================================================== #pragma interrupt HighPriorityInterruptSubroutine void HighPriorityInterruptSubroutine (void) { } //======================================================================== // LowPriorityInterruptSubroutine //======================================================================== #pragma interrupt LowPriorityInterruptSubroutine void LowPriorityInterruptSubroutine (void) { } void InitUart (void) { /* Open the USART configured as defined in function */ OpenUSART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW,77); //low baudrate /* Make receive interrupt low priority */ IPR1bits.RCIP = 0;
printf(" Cardoen Pepijn MasterProef 2009-2010 \n\r"); } //======================================================================== // Hoofdprogramma //======================================================================== // subroutine die de SPI code naar buiten schrijft void spi_routine (char ver1, char ver2, char ver3) { CS1 = 0; // Chipselect laag maken CLK = 0; // Clocklijn laag maken DATA = 0x00; // Datalijn laag maken x=0; z=0; y = 0; while(z<8){ gebracht //MSB first out
Cardoen Pepijn
// hier worden de eerste 8 bit naar buiten // de 8 bit bestaan uit 2 keer 4 bit
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 83
x = (ver1 & 128)/128; tweede kanaal //DATA OUT (SDO) DATA = x; ver1 = (ver1 << 1); z = z++; while(y<2){ CLK= !CLK; y=y++; } y = 0; }
// 4bit van het eerste kanaal & 4bit van het
// Clock toggle
z=0; x=0; while(z<8){ //MSB first out vierde kanaal x = (ver2 & 128)/128; //DATA OUT (SDO) DATA = x; ver2 = (ver2 << 1); z = z++; while(y<2){ CLK= !CLK; y=y++; } y = 0; } z=0; x=0;
// hier wordt de 2de byte naar buiten gebracht // 4bit van het derde kanaal & 4bit van het
while(z<4){ gebracht //MSB first out
// hier wordt de derde byte naarbuiten
x = (ver3 & 128)/128; //DATA OUT (SDO) DATA = x; ver3 = (ver3 << 1); z = z++; while(y<2){ CLK= !CLK; y=y++; } y = 0; }
// Clock toggle
// deze bestaat uit de enable-bits.
// Clock toggle
z=0; x=0; DATA = 0x00; // De kloklijn wordt terug op nul geplaatst } // Deze subroutine zorgt voor de controle van het SPIgebeuren void spi_controle (void) { printf("SPI werd naar buiten geschreven. \n\r"); CS1 = 1; Delay10TCYx(5); spi_routine(spi1,spi2,spien12); CS1 = 1; Delay10TCYx(5);
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 84
CLK = 1; } // Deze subroutine controleerd de binnengelezen seriele code // die de data bits moet voorstellen void GUI_controle_fase (unsigned char codex){ // wanneer de code gelijk is aan een gekend karakter dan zal deze een // andere variable een nieuwe waarde geven if (codex == 0b00110000){ // Data = "0" fasex = 0x00;} if (codex == 0b00110001){ // Data = "1" fasex = 0x01;} if (codex == 0b00110010){ // Data = "2" fasex = 0x02;} if (codex == 0b00110011){ // Data = "3" fasex = 0x03;} if (codex == 0b00110100){ // Data = "4" fasex = 0x04;} if (codex == 0b00110101){ // Data = "5" fasex = 0x05;} if (codex == 0b00110110){ // Data = "6" fasex = 0x06;} if (codex == 0b00110111){ // Data = "7" fasex = 0x07;} if (codex == 0b00111000){ // Data = "8" fasex = 0x08;} if (codex == 0b00111001){ // Data = "9" fasex = 0x09;} if (codex == 0b01000001){ // Data = "A" fasex = 0x0A;} if (codex == 0b01000010){ // Data = "B" fasex = 0x0B;} if (codex == 0b01000011){ // Data = "C" fasex = 0x0C;} if (codex == 0b01000100){ // Data = "D" fasex = 0x0D;} if (codex == 0b01000101){ // Data = "E" fasex = 0x0E;} if (codex == 0b01000110){ // Data = "F" fasex = 0x0F;} } // Deze subroutine zorgt voor het controleren van de seriele data // die de enable bits moet voorstellen void GUI_controle_enable (unsigned char enablex){ switch(enablex){ case(0b00110000): // Data = "0" disable1 = 0; disable2 = 0; disable3 = 0; disable4 = 0; break; case(0b00110001): // Data = "1" disable1 = 1; disable2 = 0; disable3 = 0; disable4 = 0; break; case(0b00110010): // Data = "2" disable1 = 0; disable2 = 1; disable3 = 0; disable4 = 0;
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 85
break; case(0b00110011): // disable1 = 1; disable2 = 1; disable3 = 0; disable4 = 0; break; case(0b00110100): // disable1 = 0; disable2 = 0; disable3 = 1; disable4 = 0; break; case(0b00110101): // disable1 = 1; disable2 = 0; disable3 = 1; disable4 = 0; break; case(0b00110110): // disable1 = 0; disable2 = 1; disable3 = 1; disable4 = 0; break; case(0b00110111): // disable1 = 1; disable2 = 1; disable3 = 1; disable4 = 0; break; case(0b00111000): // disable1 = 0; disable2 = 0; disable3 = 0; disable4 = 1; break; case(0b00111001): // disable1 = 1; disable2 = 0; disable3 = 0; disable4 = 1; break; case(0b01000001): // disable1 = 0; disable2 = 1; disable3 = 0; disable4 = 1; break; case(0b01000010): // disable1 = 1; disable2 = 1; disable3 = 0; disable4 = 1; break; case(0b01000011): // disable1 = 0; disable2 = 0; disable3 = 1; disable4 = 1; break; case(0b01000100): // disable1 = 1;
Cardoen Pepijn
Data = "3"
Data = "4"
Data = "5"
Data = "6"
Data = "7"
Data = "8"
Data = "9"
Data = "A"
Data = "B"
Data = "C"
Data = "D"
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 86
disable2 = 0; disable3 = 1; disable4 = 1; break; case(0b01000101): // Data = "E" disable1 = 0; disable2 = 1; disable3 = 1; disable4 = 1; break; case(0b01000110): // Data = "F" disable1 = 1; disable2 = 1; disable3 = 1; disable4 = 1; break; } } // Hoofdprogramma void main(void){ unsigned int temp = 0; Init(); // Initialiseer de µcontroller InitUart(); // Initialiseer de USART InitLCD(); // Initialiseer de LCDdisplay while(1){ CS1 = 1; CLK = 1; // '5 stappen lus' waarbij de 5 datawoorden worden binnengelezen // die afkomstig zijn van de GUI. if(GUIcounter == 0){ // eerste datawoord if(DataRdyUSART()){ // Wanneer de data klaar is codex = ReadUSART(); // Lees de data binnen GUI_controle_fase (codex); // spring naar deze subroutine code1 = fasex; sendlcddata(0x01,0); //clear LCD sendstring(GUIwrite,1); // stuur text naar de LCD guiaan1 = 1; // Variable true zetten die de kanaalselectie aanspreekt USART_CONT_RX; // Terug goed zetten van de seriele poort USART_SINGLE_RX; GUIcounter = GUIcounter + 1; // Counter +1 zodat het voldende data woord } // hieronder wordt ontvangen else{guiaan1= guiaan2= guiaan3 = guiaan4 = 0;} } if(GUIcounter == 1){
// zelfde 'routine' als hierboven
if(DataRdyUSART()){ codex = ReadUSART(); GUI_controle_fase (codex); code2 = fasex; sendlcddata(0x01,0); //clear LCD sendstring(GUIwrite,1); guiaan2 = 1; USART_CONT_RX; USART_SINGLE_RX; GUIcounter = GUIcounter + 1;
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 87
} else{guiaan1= guiaan2= guiaan3 = guiaan4 = 0;} } if(GUIcounter == 2){
// zelfde 'routine' als hierboven
if(DataRdyUSART()){ codex = ReadUSART(); GUI_controle_fase (codex); code3 = fasex; sendlcddata(0x01,0); //clear LCD sendstring(GUIwrite,1); guiaan3 = 1; USART_CONT_RX; USART_SINGLE_RX; GUIcounter = GUIcounter + 1; } else{guiaan1= guiaan2= guiaan3 = guiaan4 = 0;} } if(GUIcounter == 3){
// zelfde 'routine' als hierboven
if(DataRdyUSART()){ codex = ReadUSART(); GUI_controle_fase (codex); code4 = fasex; sendlcddata(0x01,0); //clear LCD sendstring(GUIwrite,1); guiaan4 = 1; USART_CONT_RX; USART_SINGLE_RX; GUIcounter = GUIcounter +1; } else{guiaan1= guiaan2= guiaan3 = guiaan4 = 0;} } if(GUIcounter == 4){
// zelfde 'routine' als hierboven
if(DataRdyUSART()){ enablex = ReadUSART(); GUI_controle_enable (enablex); sendlcddata(0x01,0); //clear LCD sendstring(GUIwrite,1); guiaan1 = guiaan2 = guiaan3 = guiaan4 = 1; USART_CONT_RX; USART_SINGLE_RX; GUIcounter = 0; // teller terug op nul, dus volgende keer begint deze } // weer vanboven. else{guiaan1 = guiaan2 = guiaan3 = guiaan4 = 0;} } // vlaggen tijdens deze 'routines' zorgen ervoor dat deze slechts 1 keer wordt uitgevoerd if (psb4 && vlag ){ // Hier wordt de SPI geactiveerd door PB4 sendlcddata(0x01,0); //clear LCD sendstring(lcdmenutxt1,1); // Stuur text naar LCDdisplay spi_controle(); // Spring naar deze subroutine Delay10KTCYx(250); Delay10KTCYx(250); Delay10KTCYx(250); sendlcddata(0x01,0); //clear LCD sendstring(lcdDONE,1); // Stuur text naar LCDdisplay vlag = 0;
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 88
} else{ if (psb4 == 0) vlag = 1; } // Deze 'routine' zorgt ervoor dat de kanalen kunnen worden geselecteerd if(psb3 && vlag3){ CTELLER = CTELLER + 1; vlag3 = 0; } else{ if (psb3 == 0){ vlag3 = 1;} } if (CTELLER > 3) // Wanneer de kanaal teller gelijk is aan 3 deze resetten { CTELLER = 0; } result = 0; // stand van de schakelaars uitlezen en deze in de variable 'result' verwerken if (!SW1){result = result + 0x01;} if (!SW2){result = result + 0x02;} if (!SW3){result = result + 0x04;} if (!SW4){result = result + 0x08;}
if((result>15) || (result <0)) {result = 16;} /* Selects invalid choice message */ // een case doen op de stand van de schakelaars. switch(result) { case 0: // wanneer deze gelijk is aan '0' if(psb1 && vlag){ // Wanneer op 'enter' werd gedrukt printf("Nieuwe Fasewaarde= 0 degr \n\r"); // Stuur text naar de seriele poort sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); // Stuur text naar LCDdisplay sendstring(lcdtext0,2); // Stuur text naar LCDdisplay fase = 0x00; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break;
// variable 'fase' instellen
case 1: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 22,5 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext1,2); fase = 0x01; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; /* Jumps to the end of
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 89
the block */ case 2: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 45 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext2,2); fase = 0x02; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; /* Jumps to the end of the block */ case 3: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 67,5 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext3,2); fase = 0x03; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; /* Jumps to the end of the block */ case 4: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 90 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext4,2); fase = 0x04; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 5: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 112,5 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext5,2); fase = 0x05; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 6: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 135 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext6,2); fase = 0x06; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break;
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 90
case 7: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 157,5 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext7,2); fase = 0x07; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 8: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 180 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext8,2); fase = 0x08; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 9: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 202,5 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext9,2); fase = 0x09; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 10: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 225 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext10,2); fase = 0x0A; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 11: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 247,5 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext11,2); fase = 0x0B; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 12: if(psb1 && vlag){ // analoog als hierboven
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 91
printf("Nieuwe Fasewaarde= 270 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext12,2); fase = 0x0C; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 13: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 292,5 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext13,2); fase = 0x0D; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 14: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 315 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext14,2); fase = 0x0E; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 15: if(psb1 && vlag){ // analoog als hierboven printf("Nieuwe Fasewaarde= 337,5 degr \n\r"); sendlcddata(0x01,0); //clear LCD sendstring(lcdtext,1); sendstring(lcdtext15,2); fase = 0x0F; vlag =0;} else{ if(psb1 = 0){vlag=1;}} break; case 16: vooraf ingestelde break;
// wanneer de keuze niet gelijk is aan de // waarde -> STOP
} // hieronder is een '4lus systeem' opgezet om per kanaal vanalles te kunnen instellen if (CTELLER == 0 || guiaan1 ){ // kanaal 1 actief door PB3 of GUI if (psb2 && vlag101){ // wanneer PB2 werd ingedrukt disable1 = !disable1; // wordt dit kanaal gedisabled/enabled vlag101 =0; } else{
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 92
if (psb2 == 0){ vlag101 = 1;}} if (disable1){ // wanneer het gedisabled is toggle1 = !toggle1; // laat de variable 'toggle' toggelen if (toggle1 == 1){ // bij toggle = 1 gewoon data naar de leds LEDS = (0b10000000) | fasekanaal1; Delay10KTCYx(250);} if (toggle1 == 0){ // bij toggle = 0 "niks" naar de leds LEDS = (0b10000000) | 0b00000000; Delay10KTCYx(250);}} else{ // wanneer enabled: gewone werking LEDS = 0b10000000 | fasekanaal1 ; // opbouw van leddata if (psb1 && vlag11){ fasekanaal1 = fase; // bij enter wordt de fase LEDS = (0b10000000) | fasekanaal1 ; // toegekend aan dit kanaal vlag11 =0; } else{ if (psb1 == 0){ vlag11 = 1;}} } if(guiaan1){ // bij GUI aanspreking wordt de fase toegekend fasekanaal1 = code1; LEDS = (0b10000000) | fasekanaal1 ; guiaan1 = 0; } }
if (CTELLER == 1 || guiaan2 ){
// analoog als hierboven if (psb2 && vlag102){ disable2 = !disable2; vlag102 =0; } else{ if (psb2 == 0){ vlag102 = 1;}} if (disable2){ toggle2 = !toggle2; if (toggle2 == 1){ LEDS = (0b01000000) | fasekanaal2; Delay10KTCYx(250);} if (toggle2 == 0){ LEDS = (0b01000000) | 0b00000000; Delay10KTCYx(250);}} else{ LEDS = (0b01000000) | fasekanaal2 ; if (psb1 && vlag12 ){
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 93
fasekanaal2 = fase; LEDS = (0b01000000) | fasekanaal2 ; vlag12 =0; } else{ if (psb1 == 0){ vlag12 = 1;}} } if(guiaan2){ fasekanaal2 = code2; LEDS = (0b10000000) | fasekanaal1 ; guiaan2 = 0; } } if (CTELLER == 2 || guiaan3 ){ // analoog als hierboven if (psb2 && vlag103){ disable3 = !disable3; vlag103 =0; } else{ if (psb2 == 0){ vlag103 = 1;}} if (disable3){ toggle3 = !toggle3; if (toggle3 == 1){ LEDS = (0b00100000) | fasekanaal3; Delay10KTCYx(250);} if (toggle3 == 0){ LEDS = (0b00100000) | 0b00000000; Delay10KTCYx(250);}} else{ LEDS = (0b00100000) | fasekanaal3 ; if (psb1 && vlag13 ){ fasekanaal3 = fase; LEDS = (0b00100000) | fasekanaal3 ; vlag13 =0; } else{ if (psb1 == 0){ vlag13 = 1;}} } if(guiaan3){ fasekanaal3 = code3; LEDS = (0b10000000) | fasekanaal1 ; guiaan3 = 0; } } if (CTELLER == 3 || guiaan4 ){ // analoog als hierboven if (psb2 && vlag104){ disable4 = !disable4; vlag104 =0; } else{ if (psb2 == 0){ vlag104 = 1;}} if (disable4){ toggle4 = !toggle4;
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 94
if (toggle4 == 1){ LEDS = (0b00010000) | fasekanaal4; Delay10KTCYx(250);} if (toggle4 == 0){ LEDS = (0b00010000) | 0b00000000; Delay10KTCYx(250);}} else{ LEDS = (0b00010000) | fasekanaal4 ; if (psb1 && vlag14 ){ fasekanaal4 = fase; LEDS = (0b00010000) | fasekanaal4 ; vlag14 =0; } else{ if (psb1 == 0){ vlag14 = 1;}} } if(guiaan4){ fasekanaal4 = code4; LEDS = (0b10000000) | fasekanaal1 ; guiaan4 = 0; } } sendleddata(LEDS); // stuurt de data naar de LEDroutines // Bouwt de SPI variablen op, zodat deze byte naar buiten kunnen worden geschreven spi1 = (fasekanaal4 << 0x04) | fasekanaal3 ; // kanaal 4 + kanaal 3 spi2 = (fasekanaal2 << 0x04) | fasekanaal1 ; // kanaal 2 + kanaal 1 spien12 = (((!disable4 << 7) | (!disable3 << 6) |(!disable2 << 5) | (!disable1 << 4)) ) | ((!disable4 << 3) | (!disable3 << 2) |(!disable2 << 1) | (!disable1)); } }
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 95
Programma ‘Initleds’ //============ General Information ======================================= // Advanced Systems Development // Author: Cardoen Pepijn // Version: 1.1 // Last update: 18/03/2010 // Title: Initleds //============ Nota ====================================================== // write/read routines for Leds with 4094 shift register //======================================================================== #include <delays.h> #include "leds.h" void sendleddata(char LEDdata) { char temp = 8;
while (temp != 0) { if (LEDdata & 0x01) led_d = 1 ; else led_d = 0 ; led_clk_set; Nop(); led_clk_reset; LEDdata >>= 1; temp--; } //generate strobe puls led_str_set; Nop(); led_str_reset; Nop(); }
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 96
Programma ‘Initlcd’ //============ General Information ======================================= // Advanced Systems Development // Author: Hendrik Caron // Version: 1.1 // Last update: 05/11/2009 // Title: InitLCD //============ Nota======================================================= // Initialize LCD and set modes //======================================================================== #include <delays.h> #include <string.h> #include "lcd.h" //============= functiondeclaration ====================================== void sendlcddata(char LCDcdata, char state); void sendstring(char *string,char line); void InitLCD(void) { char text1[17] = "Masterproef ELA "; char text2[17] = "Cardoen Pepijn "; char text3[17] = "Kies nieuwe fase"; char text4[17] = "en druk 'PB1' "; unsigned int temp = 0; Delay1KTCYx(255); //power-up time //send initialisationcodes to lcd lcd_write; sendlcddata(0x38,0); Delay1KTCYx(50); sendlcddata(0x38,0); Delay1KTCYx(50); sendlcddata(0x38,0); Delay1KTCYx(50); //set lcd mode to automatic shift sendlcddata(0x06,0); Delay1KTCYx(50); //set cursor on sendlcddata(0x0C,0); Delay1KTCYx(50); //clear lcd sendlcddata(0x01,0); Delay1KTCYx(50);
sendstring(text1,1); sendstring(text2,2); for (temp = 1; temp <= 100; temp++) { Delay1KTCYx(255); } sendstring(text3,1); sendstring(text4,2); }
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 97
Programma ‘Lcdroutines’ //============ General Information ====================================== // Advanced Systems Development // Author: Hendrik Caron // Version: 1.1 // Last update: 05/11/2009 // Title: InitLCD //============ Nota ===================================================== // write/read routines for LCD with 4094 shift register //======================================================================= #include #include <delays.h> #include "lcd.h" void sendlcddata(char LCDdata, char state) { char temp = 8; if (state == 0) lcd_rs_reset; else lcd_rs_set; while (temp != 0) { if (LCDdata & 0x80) lcd_d = 1 ; else lcd_d = 0 ; lcd_clk_set; lcd_clk_reset; LCDdata <<= 1; temp--; } //generate strobe puls lcd_str_set; Nop(); lcd_str_reset; Nop(); //generate lcd_e puls lcd_e_set; Nop(); lcd_e_reset; } void sendstring(char *string,char line) { int i=0; if (line == 1) { //set cursor to line 1 sendlcddata(0x80,0); Delay1KTCYx(50); while(string[i] !='\0') { sendlcddata(*string,1); Delay1KTCYx(50);
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 98
string++; } } if (line == 2) { //set cursor to line 1 sendlcddata(0xC0,0); Delay1KTCYx(50); while(string[i] !='\0') { sendlcddata(*string,1); Delay1KTCYx(50); string++; } } }
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 99
Headerfile ‘Lcd.h’ //============ General Information ======================================= // Advanced Systems Development // Author: Hendrik Caron // Version: 1.1 // Last update: 05/11/2009 // Title: lcdheader file //============ Nota ====================================================== // //======================================================================== #define lcd_e_set #define lcd_e_reset
PORTBbits.RB3 = 1 PORTBbits.RB3 = 0
#define lcd_read #define lcd_write
PORTBbits.RB5 = 1 PORTBbits.RB5 = 0
#define lcd_rs_set #define lcd_rs_reset
PORTCbits.RC0 = 1 PORTCbits.RC0 = 0
#define lcd_d
PORTBbits.RB2
#define lcd_str_set #define lcd_str_reset
PORTBbits.RB1 = 1 PORTBbits.RB1 = 0
#define lcd_clk_set #define lcd_clk_reset
PORTBbits.RB0 = 1 PORTBbits.RB0 = 0
Headerfile ‘Leds.h’ //============ General Information ======================================== // Advanced Systems Development // Author: Cardoen Pepijn // Version: 1.1 // Last update: 18/03/2010 // Title: LEDheader file //============ Nota ======================================================= // //=========================================================================
#define led_d
PORTEbits.RE0
#define led_str_set #define led_str_reset
PORTEbits.RE2 = 1 PORTEbits.RE2 = 0
#define led_clk_set #define led_clk_reset
PORTEbits.RE1 = 1 PORTEbits.RE1 = 0
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 100
d. Schema van het LNA-versterkerboard C3
Cap 100nF C2
R1 247Ohm
Cap 18nF
R2 Res2 20
RF-OUT1P
Inductor 120nH
RF-OUT1N
C1
L1 RF-IN1
VCC
R3 Res2 20
VCC
L2 Inductor 120nH C7
P3
P4
1 2 3
1 2 3
Header 3
GND
Header 3
Cap 100nF
Cap 22pF GND
GND GND
GND
Inductor 120nH
49
50
51
52
53
54
49
50
51
52
53
54
6
43
7
42
8
41
9
40
10
39
11
38
12
37
13
36
14
35
15
34
16
33
48
U8 AD8334
47 46
VCC L3
45
Inductor 120nH C11 Cap 100nF
44 43 42 41
GND
40 39 38 37
VCC L4
36
Inductor 120nH C12 Cap 100nF
35 34 33
GND
32 32
31
30
R14 C34 Res2 Cap 0 100nF
31
30
29
28
27
26
25
24
23
22
21
20
19
C31 Cap 100nF C32 Cap 100nF
29
28
27
26
25
24
23
22
21
20
C30 Cap 100nF
C27
55
44
19
Cap 100nF
56
45
5
18
17
Inductor 120nH
46
18
RF-IN3
55
16
Cap 22pF C19
56
Cap 100nF
57
15
47
4
17
GND
C21 GND
57
C20
58
14
247Ohm C22 Cap 18nF
12 13
R8
58
Res2 20
59
RF-OUT3N
L6
11 Cap 100nF
60
GND
10 C23 Cap 100nF
Res2 20 R9
59
8
C24 R10
60
7
9 C26 RF-OUT3P Cap 100nF
61
C18 Cap 100nF
62
6 Cap 100nF
61
5
L8 Inductor 120nH
3
C17
Res2 20
62
RF-OUT2P C25 Cap 100nF
2
3 4
247Ohm
R6
C9 C10 Cap Cap 100nF 100nF
48 63
Inductor 120nH L7
Cap 100nF
RF-OUT2N Res2 20 R7
VCC
2
GND
C16 Cap 18nF R5
R4 Res2 C8 Cap 0 100nF
1 64
Cap 22pF GND
63
1
64
Cap 100nF C14 C15
GND
C4 Cap 100nF
C13
L5 RF-IN2
C6 Cap C5 100nF Cap 100nF
GND
C35 C36 Cap Cap 100nF 100nF GND VCC
C33
GND
GND
L9
GND
Cap 22pF C28
Cap 100nF C29
R11
RF-IN4 Inductor 120nH
Cap 100nF
Cap 18nF
R12 Res2 20
247Ohm
R13 Res2 20
L10 Inductor 120nH
Vcc GND
GND
VCC
RF-OUT4P
RF-OUT4N
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 101
e. Schema’s van het demodulatorboard
P5 1 2 3 4 5 6 VCC
H1
Header 6 P6
V+ 1 2 3 4 5
Header 5
GND
V-5
1 2 3 4 5 6
LOP 1 OUT1
Header 6
2 3 4 5
VCC
COAX-F
VCC
GND
5 4 3 2
V+
OUT3 1
COAX-F
GND
COAX-F
1
GND Designator AD8021 module
Designator AD8339module
1
Designator AD8334module
OUT2
5 4 3 2
GND
I2-OUTP Q2-OUTP
I2-INP Q2-INP
RF-OUT3P RF-OUT3N
RF-IN3P RF-IN3N
I3-OUTP Q3-OUTP
I3-INP Q3-INP
1
GND
RF-OUT4P RF-OUT4N
RF-IN4P RF-IN4N
I4-OUTP Q4-OUTP
OUT5 Q1 Q2 Q3 Q4
I4-INP Q4-INP
1
VGND
2 3 4 5 OUT8 COAX-F
GND
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
OUT7 COAX-F
1
GND
COAX-F
5 4 3 2
2 3 4 5
1
1
GND
COAX-F
5 4 3 2
V-
GND
LON-OUT LOP-OUT
LON-IN LOP-IN
-Vcc
GND
GND
GND
OUT6
-5V GND
COAX-F
5 4 3 2
RF-IN2P RF-IN2N
COAX-F OUT4
I1 I2 I3 I4
V+
RF-OUT2P RF-OUT2N
LOP
I1-INP Q1-INP
Vcc
I1-OUTP Q1-OUTP
SDO CSBG SLKG SDI RSTS
Vcc
RF-IN1P RF-IN1N
5 4 3 2
GND RF-OUT1P RF-OUT1N
GND
blz 102
RF-OUT1N
Vcc
RF-OUT1P
RF-OUT3P
GND
RF-OUT3N P1 1 2 3 4 5 6 7 8 9 10
GND
P2 GND
GND
Header 10
1 2 3 4 5 6 7 8 9 10 Header 10
GND RF-OUT2N
GND
RF-OUT2P
RF-OUT4P
GND
RF-OUT4N GND
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 103
VCC
L14 Inductor 120nH
P3 1 2 3
GND
C46
GND
GND
Header 3
Cap 100nF C45 Cap 100nF -5
GND Q1-OUTP
I1-OUTP
RF-IN1N
RF-IN1P
RSTS
SDI
GND
25
7
24
8
23
9
22
10
21
30
Q2-OUTP
29
C43 Cap 100nF VCC
I2-OUTP
28 27 26
LOP-IN
25
LON-IN
24 C42 23
GND
22
Cap 100nF
I3-OUTP
21
Q3-OUTP
-5
20
19
20
19
18
17
16
15
14
C47 Cap 100nF
GND C40
I4-OUTP
Q4-OUTP
RF-IN4N
RF-IN4P
-5
18
17
16
15
14
1 2 3
C41 GND
GND
Cap 100nF
SDO
Header 3
-Vcc
31
6
13
GND
31
26
13
GND
GND
32
5
GND
C39 Cap 100nF P4
Vcc
33
27
12
VCC
32
34
28
4
12
11
Inductor 120nH
33
29
L12 VCC
30
3
11
GND
34
10
RF-IN3N
35
9
RF-IN3P
36
8 C38 Cap 100nF
35
Inductor 120nH
36
L11
37
6 7
VCC
38
5
CSBG
37
4
SLKG
38
2
3 GND
39
40
1
2
RF-IN2P
39
40
1
RF-IN2N
U10 AD8339
L13 Inductor 120nH
Cap 100nF -5
GND
VCC
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 104
C64 2.2nF
C65 2.2nF
V+
V+ Cap R27
C50 GND
Cap R39
100nF Cap
Jumper
6
Cap 100nF
R48
Jumper
Res2 0
2 1
2 1
8 3
R42
GND
Q2 Res2 0
C71 5pF
4
4
V-
6
5
5
C52 5pF
6
4
8 3
5
I2
V-
C72 100nF
Cap
W19 Jumper
C53 Cap 100nF
W17 Jumper
GND
Cap
RPot SM U7 AD8021
Cap
7
W12
Res2 0
Cap
C68 100nF
Cap C69 2.2nF
C70 100nF
GND Q2-INP
6
GND
C67 5pF
V-
7
6
4
8 3
Q1 Res2 0
Cap R41
R30 5
8 3
6
V+
RPot SM U2 AD8021
2 1
7
Res2 0
7
2 1
R40 6
4
GND
GND
R24
8 3
5
W25 Jumper
C49 Cap 100nF
Cap R29
GND
2 1
4
4
V-
V+
I2-INP
8 3
Jumper
Cap
C54
Jumper
Res2 0
Q1-INP
C48 5pF
GND
C51 2.2nF
W3
2 1
5
I1 Res2 0
RPot SM U6 AD8021
Cap
5
W22 Jumper
W10
7
6
4
8 3
5
8 3
R47 R28
7
Res2 0
2 1
7
I1-INP
7
2 1
GND
RPot SM U1 AD8021
R23
W1
C66 100nF
GND
Cap
GND C55 2.2nF
C73 2.2nF
V+
V+ Cap R31
GND R25
R32
C75 5pF
V-
GND
Cap
Cap R45 C78 100nF
GND P10
R50
Jumper
Res2 0
2 1
R46
4
GND
6
Q4 Res2 0
V-
5
4
C60 5pF
6
4
8 3
5
8 3
Header 2
VC61 100nF
2 1
7
2 1
I4 Res2 0
RPot SM U9 AD8021
Cap 7
W16 Q4-INP
6
Cap
C76 100nF
Cap
V+
5
GND
6
Q3 Res2 0
GND
4
8 3
5
8 3
6
C77 2.2nF
R34
7
Res2 0
2 1
R44 6
4
2 1
GND
C57 Cap 100nF
RPot SM U4 AD8021
Cap 7
R26
8 3
5
W27 Jumper
C62 100nF
GND
2 1
4
4
V-
Cap
Cap R33
Jumper
8 3
C56 5pF
GND
V+
W7
Res2 0
I3 Res2 0
C59 2.2nF
I4-INP
2 1
5
W23 Jumper
6
RPot SM U8 AD8021
Cap
5
6
4
8 3
5
8 3
Jumper
R49
Jumper
7
Res2 0
2 1
GND
W13 Q3-INP
C74 100nF
7
2 1
7
I3-INP
RPot SM U3 AD8021
Cap 7
W6
Cap R43
C58 100nF
C79 5pF
C80 100nF
Cap
GND
Cap
GND
Cap VCC
V+
VCC
R36 Res2 3.48k
1
Vcc
LOP-OUT
VV-
R35 Res2 100
3
C63 4
2
U5 DS90C401M
LOP Cap 0.1uF
5
R37 Res2 1.5K
GND
GND
Cardoen Pepijn
4
2
5
LON-OUT
GND
3
1
V+
GND
R38 Res2 50
GND
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 105
f. Schema’s van het µcontrollerboard VCC
DI1
U6 1
R28 Res2 220
3 L7805
Diode 1N4001 C6 Cap Pol1 2.2uF
PWR2.5
P8 XTAL2net
P5 C7 Cap 0.1uF
1 2 3
C8 VCC Cap 0.1uF
2
1 3 2
D11 LED2
Y1
1
2
XTAL C1 Cap 100pF
5 4 3 2 1
J1
Header 5
XTAL1net C2 Cap 100pF
Header 3
GND VCC
RX
USB1
TX
GND
XTAL1net
30
TXnet USB1net
USB1OUT
C5 0.47uF 37
GND
USB2net
Cap
VCC
7 28
GND
OSC1/CLKI VUSB
RB0/AN12/INT0/FLT0/SDI/SDA RB1/AN10/INT1/SCK/SCL RB2/AN8/INT2/VMO RB3/AN9/CCP2/VPO RB4/AN11/KBI0/CSSPP RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD
VDD VDD VSS VSS
P17 AN1net AN2net
1 2 3
GND
RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT/RCV RA5/AN4/SS/HLVDIN/C2OUT OSC2/CLKO/RA6
Header 3
VCC
R10 Res2 1K
RD0/SPP0 RD1/SPP1 RD2/SPP2 RD3/SPP3 RD4/SPP4 RD5/SPP5/P1B RD6/SPP6/P1C RD7/SPP7/P1D
VCC SWDATAnet SWCLKnet SWSTRnet MCLRnet
R11 Res2 1K
25 26 27 18
MCLRnet PGMnet
RE0/AN5/CK1SPP RE1/AN6/CK2SPP RE2/AN7/OESPP MCLR/VPP/RE3
8 9 10 11 14 15 16 17
LCDCLKnet STROBEnet LCDDATAnet LCDENnet PGMnet LCDRWnet EX1net EX6net
32 35 36 42 43 44 1
LCDRSnet EX2net EX3net USB1net USB2net TXnet RXnet
38 39 40 41 2 3 4 5
SW1net SW2net SW3net SW4net SW5net SW6net SW7net SW8net
EX1net EX2net EX3net
GND
1 2 3
VCC
Header 3
RP1 RPot SM
VCC
LCDDATAnet LCDCLKnet STROBEnet
2 3 1 15
VCC
10 9
D CP STR
D0 D1 D2 D3 CD4094 EO D4 D5 OS' D6 OS D7
4 5 6 7 14 13 12 11
P2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
CO6 Component_1
8
GND
AN1net AN2net AN3net AN4net EX4net EX5net XTAL2net
GND
RC0/T1OSO/T13CKI RC1/T1OSI/CCP2/UOE RC2/CCP1/P1A RC4/D-/VM RC5/D+/VP RC6/TX/CK RC7/RX/DT/SDO
19 20 21 22 23 24 31
Vcc
6 29
P6
NC/ICCK/ICPGC NC/ICDT/ICPGD NC/ICRST/ICVPP NC/ICPORTS
16
USB2OUT
GND
U1 12 13 33 34
RXnet
RESET
USB3
RE SET IN GND
USB2 VOL TAGE
MHDR1X4
USB0 VCC
1 2 3 4
VCC
MCLRnet RSTOUTnet
Designator USBtoRS232 P1
EX6net EX1net
MCLRnet
GND
Header 16
LCDRSnet LCDRWnet LCDENnet P7 EX6net 1 EX5net 2 EX4net 3 4 AN4net 5 AN3net 6
PIC18F4550-I/PT
GND
Header 6 S1 SW-PB
S2 SW-PB
GND
VCC
R22 Res2 1K
R23 Res2 1K
R24 Res2 1K
R25 Res2 1K
L8net
R21 Res2 1K
L7net
GND
R26 Res2 1K
R27 Res2 1K
8
VCC
R20 Res2 1K
L6net
CO5 Component_1 L1net L2net L3net L4net L5net L6net L7net L8net
L5net
10 9
4 5 6 7 14 13 12 11
L4net
15
D0 D1 D2 D3 CD4094 EO D4 D5 OS' D6 OS D7
L3net
VCC
D CP STR
L2net
Max6816
2 3 1
L1net
Max6816
CO4A Component_1
Vcc
CO3A Component_1
16
Max6816
SW8net
CO2A Component_1
SW7net
Max6816
SW6net
CO1A Component_1
SW5net
SW4net
SW3net
SW2net
GND
SW1net
GND
SWDATAnet SWCLKnet SWST Rnet
VCC
D3 LED2 S3 SW-PB
S4 SW-PB
S5 SW-PB
S6 SW-PB
S7 SW-PB
S8 SW-PB
S9 SW-PB
S10 SW-PB
R12 Res2 1K
R13 Res2 1K
R14 Res2 1K
R15 Res2 1K
R16 Res2 1K
R17 Res2 1K
R18 Res2 1K
R19 Res2 1K
GND
D4 LED2
D5 LED2
D6 LED2
D7 LED2
D8 LED2
D9 LED2
D10 LED2
GND
GND
GND
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 106
VCC
VCC
R6 Res2 470
R3 GND Res2 100K
VCC USB1OUT
VOLTAGE
C4
C3 Cap 0.1uF
USB2OUT
6
USB0
GND 8
Res2 R2 27 Res2 27
USB2 USB3
GND
7 Rx
5 4
VCC Res3 1K R50
Res2 1K
27
1
28 32 1 2 31
1
2
2
X2 Resonator
3
USBDM USBDP
RSTOUT# RESET# XTIN
TXD RXD RTS# CTS# DTR# DSR# DCD# RI# TXDEN TXLED# RXLED#
XTOUT EECS EESK EEDATA TEST
PWRCTL PWREN# SLEEP#
25 24 23 22 21 20 19 18
RX TX VCC D1
16 12 11 14 15 10
LED2 D2
R51 MCLRnet Res3 1K
R8 Res2 1K R9
VCC LED2
Res2 1K
GND 17 GND 9 AGND 29
3 4
Switch1 SW DIP-2
3
GND
3V3OUT VCCIO VCC VCC AVCC
GND
R1 USB1
U2 FT232BL
13 26 3 30
Cap 0.1uF
2 1
GND
Cardoen Pepijn
GND
GND
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 107
g. PCB van het µcontrollerboard
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 108
h. PCB van het LNA-versterkerboard
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 109
i. PCB van het demodulatorboard
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 110
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 111
j. Handleiding Programmerboard Bediening Om een goede werking te verzekeren is het noodzakelijk eerst de SPI-connector aan te sluiten alvorens de USB-connector (of de voeding) aan te sluiten. De jumper rechts van de stabilisator dient naar boven te staan bij voeding via USB. (Bij Externe voeding moet men deze onderaan plaatsen). De witte microswitches dienen ten allen tijde naar beneden te staan. Faseschakelaars PB4 PB3 PB2 PB1
USB-poort
RESET
SPI-out
Geselecteerde Kanaal
Geselecteerde Fase
Handleiding Bij het opstarten verschijnt de vermelding dat dit een masterproef is. Daarna komt de volgende tekst tevoorschijn ‘Kies nieuwe fase en druk ‘PB1’. Het is belangrijk om nu eenmalige ‘PB1’ in te drukken om het programma te activeren. Vanaf nu staat de µController in de RUN mode.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 112
Manuele Bediening Nu kan men met PB1 de gekozen fase (die met de schakelaars werd ingesteld) toekennen aan het op dat ogenblik geselecteerde kanaal. (bij de toekenning verschijnt op het display de nieuwe fase) Het geselecteerde kanaal kan men zien op de linkse 4 LED’s. (vlnr: kanaal1,kanaal2,kanaal3,kanaal4) Wanneer men van kanaal wil veranderen kan men dit doen door op ‘PB3’ te drukken. Wanneer het laatste kanaal werd geselecteerd en er nogmaals op ‘PB3’ wordt gedrukt, dan wordt kanaal 1 terug actief. Ook kan men de fase van elk kanaal terugvinden op de rechtse 4 LED’s. Deze LED’s tonen de binaire kanaalcode die terug te vinden is in tabel 1 van de masterproef tekst. De kanalen kunt u disabelen met de drukknop ‘PB2’. Wanneer u dit doet zult u merken dat de fasebits van desbetreffend kanaal zullen knipperen. Om terug te enablen drukt u nogmaals op ‘PB2’. !OPGELET! Tijdens gedisablede toestand kan er geen nieuwe fase worden toegekend aan het kanaal. Wanneer men het desbetreffende kanaal disabled, en de kanaalcode is gelijk aan ‘0000’ dan zal men dit disablen dus niet kunnen merken. Wanneer dit gebeurd, zal het duidelijk worden dat er geen nieuwe code kan worden toegekend aan dit kanaal. Met ‘PB4’ kunt u de code naar buiten schrijven op de SPI-bus. Er blijft na dit gedaan te hebben ‘DONE’ op de display staan tot u opnieuw een fase toekent aan een kanaal via ‘PB1’ (Om te werken met de volgende 4 kanalen dient men de drukknop links van de reset in te drukken. Daarna gaat de indicatieled oplichten, en weet men dat de laatste 4 kanalen geactiveerd zijn.) Dient nog geprogrammeerd te worden!! Bediening via GUI Voor volgende stappen is het noodzakelijk de usbdriver te installeren die men terugvindt op de volgende webpagina: http://www.ftdichip.com/Drivers/VCP.htm. Wanneer u HyperTerminal Opstart met de volgende instellingen:
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 113
Dan zult u merken dat een controle wordt gedaan op de goede werking door de uitgevoerde handeling naar buiten te sturen en deze op het scherm zichtbaar te maken. Dit ziet u bijvoorbeeld hieronder:
Om te werken met de GUI is het noodzakelijk deze eerst op de pc te kopiëren. Opdat deze toepassing zou kunnen werken moet .Netframework aanwezig zijn op de pc. Na het .exe te kopieëren en dit programma opgestart te hebben krijgt u volgend scherm:
Om data te kunnen versturen is het noodzakelijk dat u eerst de gewenste COM-poort selecteert. Zo weet het programma waar het de data moet naartoe zenden. Na dit gedaan te hebben kan data worden ingesteld en verzonden (klikken op de knop ‘Transmit Data’).
!BELANGRIJK! Wanneer een kanaal gedisabled is, mag de fasewaarde NOOIT worden veranderd! Wanneer men dit toch doet kan het programma ongewenste resultaten vertonen. Wanneer men èn een fase èn een disable instelt, zal dit dus gebeuren, hierna moet er worden gereset! Dus steeds eerst de data sturen van het kanaal, en daarna een 2de maal sturen of het kanaal al dan niet gedisabled/enabled moet zijn.
Cardoen Pepijn
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 114
PCB connectie: Hieronder vindt men de connectiviteit van de pcb terug. Alle in- en uitgangen werden aangeduid. RF_IN1
RF_IN2
I1
Q1
I2 Q2 Voeding
LOP Q4 I4
RF_IN3
Cardoen Pepijn
RF_IN4
I3
Q3
8-kanaals IQ demodulator met beamformingsmogelijkheden
blz 115