• No results found

Dit en volgend lab leert je de ins en outs van digitale modulatie zoals dit gebeurt in apparaten van je draadloze deurbel tot aan je wifi-router.

N/A
N/A
Protected

Academic year: 2022

Share "Dit en volgend lab leert je de ins en outs van digitale modulatie zoals dit gebeurt in apparaten van je draadloze deurbel tot aan je wifi-router."

Copied!
11
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Opdrachten week 5 – Digitale Modulatie

Dit en volgend lab leert je de ins en outs van digitale modulatie zoals dit gebeurt in apparaten van je draadloze deurbel tot aan je wifi-router.

Leerdoelen

Aan het einde van dit lab ben je in staat om:

• GNU Radio te gebruiken met data streams;

• een ASK, PSK en FSK signaal te genereren;

• deze signalen te demoduleren;

• de constellatieplot te gebruiken met PSK;

• uit te leggen welke tekortkomingen in deze modulatietechnieken zitten.

Voorbereiding op de les

• Er is geen voorbereiding nodig.

(2)

Opdrachten

Als eerste is het goed om uit te zoeken hoe GNU Radio werkt met datatypes als bytes. Wat zijn datastreams, wat zijn tags, wat zijn PDU’s etc. Wanneer we een beter begrip hebben wat deze datastreams zijn en hoe we deze kunnen omzetten naar floats en terug, dan kunnen we overgaan op modulatiemethoden om de data ook echt over te sturen.

Figuur 1: Instellingen bij opdracht 5.1.

5.1

In GNU Radio zijn er meerdere methoden om data te gebruiken in een schema. De twee handigste zijn het Vector Source blok en het File Source blok. Deze twee blokken kunnen bytes uitsturen. In eerste instantie wordt alleen het Vector Source blok gebruikt, omdat hiermee makkelijk kan worden aangeven wat uitgestuurd moet worden. Later wordt een bestand gebruikt als databron.

• Eerst wordt gekeken naar het Vector Source blok. Plaats dit in een nieuw schema.

Het blok kan een vector van data doorsturen, bijvoorbeeld een vector van 3 bytes.

Of van 10 complexe getallen. Of van 4 floats.

Configureer het blok om de ascii codes van ’ELE’ door te sturen als 3 bytes:

(0x45,0x4c,0x45). Zie figuur 1. Voor verdere opdrachten is het handig voor jezelf om even op te schrijven hoe die bitreeks eruit ziet.

(3)

• Om de bytes die Vector Source doorstuurt ook echt om te zetten naar samples die uit enen en nullen bestaan, zal het Unpack K bits blok toegepast worden.

Dit blok pakt K bits van de input byte en converteert dat naar K bytes aan de uitgang. De least significant bit (LSB) van elke uitgangsbyte is dan gelijk aan de respectievelijke ingangsbit.

Dus 0x63 met K is 3 levert drie bytes aan de uitgang van 0x01, 0x01, 0x00.

Vervolgens kunnen deze bytes omgezet worden naar een floating point signaal met uchar to float blok. Pas dit toe en hang dit aan een throttle blok met een time sink, zie figuur 2. In opdracht 2.1 zijn zelf ASK signalen gemaakt door een blokgolf te vermenigvuldigen met een draaggolf. Waarom is het signaal wat je hebt geplot niet geschikt als message voor dezelfde modulatietechniek? 1

Bytes om te versturen. "ELE"

Options Title: Werken met data Author: VersD Output Language: Python Generate Options: QT GUI

Variable Id: samp_rate Value: 32k

Throttle Sample Rate: 32k UChar To Float

Unpack K Bits K: 8 Vector Source

Vector: 69, 76, 69 Tags:

Repeat: Yes

QT GUI Time Sink Number of Points: 1.024k Sample Rate: 32k Autoscale: No

Figuur 2: Schema bij opdracht 5.1.

• Als wordt gewerkt op een sample-rate van 1 MHz en het informatiesignaal is bijvoorbeeld 4 kHz (4000 bits per seconde), hoeveel samples zijn er dan in een bit? Het schema van figuur 2 resulteert in 1 sample voor elke bit aan data, terwijl meerdere samples-per-bit nodig zijn. Om het aantal samples-per-bit te verhogen zal er interpolatie toegepast moeten worden. Met interpoleren worden nieuwe samples toegevoegd, met waarde 0. Vervolgens wordt het nieuwe signaal (met dus een hogere sample-rate) gefilterd met een FIR filter. Om nu inderdaad een blokgolf te genereren kun je een FIR filter toepassen met de waarde 1 voor elk coëfficiënt. Bouw figuur 3.

Bytes om te versturen. "ELE"

Options Title: Werken met data Author: VersD Output Language: Python Generate Options: QT GUI

Variable Id: samp_rate Value: 1M

Variable Id: spb Value: 250

Throttle Sample Rate: 1M UChar To Float

Unpack K Bits K: 8 Vector Source

Vector: 69, 76, 69 Tags:

Repeat: Yes

Import Import: numpy

Interpolating FIR Filter Interpolation: 250 Taps: numpy.ones(spb) QT GUI Time Sink

Number of Points: 1.024k Sample Rate: 1M Autoscale: No

Figuur 3: Schema bij opdracht 5.1.

• Het signaal is nu geschikt als message voor ASK modulatie. Voordat de modulator wordt gebouwd is er nog 1 ding wat handig kan zijn: tags. Voeg na de vector source een Stream to Tagged Stream blok in en vertel het om elke 3 vectoren een tag toe te voegen. De naam van de tag kan vervolgens in de time scope worden gezien aan het begin van elke 3 bytes. De scope kan ook triggeren op deze tag zodat altijd het begin van de 3 bytes in de scope gezien zal worden. Dit is handig om het overzicht te houden in de plots!

1 Hint: Gebruik de Stem Plot optie van de Time Sink.

(4)

Amplitude Shift Keying

5.2

Nu een blokgolf is gecreëerd uit de data, is het tijd deze ASK te moduleren. Doe dit volgens de methode van opdracht 2.1. Neem het laatste nummer van je studentnummer als informatiesignaalfrequentie in kHz+1 kHz en zorg er dus voor dat het aantal samples-per-bit klopt! Kies een draaggolf-frequentie zodanig dat er tenminste 3 volle perioden van de draaggolf in een bit zichtbaar zijn. Maak een watervalplot van het ASK signaal en leg uit hoe je aan de plot kunt zien dat het om ASK modulatie gaat.

Vergeet niet een Throttle blok toe te voegen zolang nog niet met echte hardware wordt gewerkt!

Conclusie opdracht 5.2

5.3

Maak ook een demodulator met een filter om de band te selecteren en de top-detector van ?? om weer een blokgolf te krijgen. Het filter zal een faseverschuiving introduceren dus de tag bevindt zich niet op dezelfde plek als bij de modulatie.

5.4

Als het klopt heb je bij opdracht 5.3 dezelfde blokreeks ontvangen als dat je verstuurt hebt bij opdracht 5.2. Nu blijft echt het tegenovergestelde probleem over: de sample- rate van de ontvangen blokreeks is veel hoger dan van ons originele informatiesignaal.

Hoe bepaal je nu welke samples van de blokreeks horen bij het informatiesignaal?

• We hebben een vorm van clock recovery2nodig. Gebruik een AGC, DC Blocker blok en een Symbol Sync blok om dit te tewerkstellen. Het Symbol Sync blok benadert de klokfrequentie op basis van het aantal flanken wat wordt waargenomen, vindt tevens de juiste fase en gebruikt het gegenereerde kloksignaal om de juiste samples uit de input naar de output te sturen. Hierbij voert het dus effectief ook decimatie uit, wat dus een lagere sample-rate oplevert aan de uitgang. Je mag de standaard instellingen van het Symbol Sync blok behouden, maar voor een eerste inschatting van de sample-rate moet je voor samples per symbol het aantal samples-per-bit invullen.

Het is belangrijk voor het Symbol Sync blok dat de ingang een gemiddelde heeft van 0. Hier zorgt het DC blocker blok voor. Geef dit blok voldoende samples om dat voor elkaar te krijgen (bijv. 10k).

2 Zie EMS20 theorie. Omdat geen kloksignaal wordt meegestuurd moeten we de frequentie en fase zien te achterhalen van het kloksignaal, om de samples correct om te zetten naar bits.

(5)

Om aan de ontvangende kant dadelijk een signaal te krijgen wat redelijk constant blijft, onafhankelijk van de signaalsterkte, kunnen we het Automatic Gain Control blok toepassen. Stop dit voor het DC blocker blok.

Vergelijk de uitgang van het Symbol Sync blok met de uitgang van het ’uchar to float’ blok. Komt dit overeen? Let hierbij op dat de taglocatie aan de uitgang verschoven zal zijn t.o.v. de ingang. Kijk naar de algemene vorm van het signaal om te zien of het overeen komt.

5.5

Uiteindelijk zouden we dezelfde bytes weer terug willen krijgen als die we verstuurt hebben. Voor nu kun je een binary slicer (comperator) blok gebruiken in conjunctie met een Pack K Bits. De uitgangsbytes kunnen we bekijken als karakters via een terminal.

Gebruik een TCP Sink en stel de modus in als Server. Open, na het starten van het schema, een telnet terminal (telnet, putty, tera-term etc.) en stel het in op localhost met de gekozen poort (standaard 2000). Omdat de ontvangende kant niet weet waar onze bitstroom start of eindigt zul je hoogstwaarschijnlijk andere karakters zien dan

’ELE’. Zie bijv. figuur 4.

Dit lossen we op in het volgende lab.

Figuur 4: Voorbeeld ontvangst bij opdracht 5.5.

5.6

Probeer nu de data door te sturen naar je groepsgenoot. Gebruik een Local Oscillator frequentie van 433,3 MHz opgehoogd met het laatste cijfer van je studentnummer keer 200 kHz. Deze zendfrequentie geldt voor alle opdrachten tijdens dit lab. Wat zijn je bevindingen?

(6)

Conclusie opdracht 5.6

Frequency Shift Keying

ASK modulatie, en dan met name de versie die in opdracht 5.2 is toegepast, wordt veel gebruikt bij simpele draadloze apparaten. Denk aan je deurbel, autosleutel, garageopener etc. FSK modulatie lijkt in deze binaire vorm erg op ASK modulatie.

Bij Frequency Shift Keying worden er verschillende frequenties gebruikt om symbolen te creëren. Bij een databit van 0 kun je bijvoorbeeld een draaggolf van 50 kHz uitsturen en voor een 1 kun je 200 kHz uitsturen. Er zijn twee manieren om dit te doen:

• Optie 1: Je genereert twee draaggolven. Draaggolf 1 vermenigvuldig je met de message. Draaggolf twee vermenigvuldig je met de inverse van de message. De twee ASK signalen tel je bij elkaar op.

• Optie 2: gebruik een VCO zoals is gezien bij FM modulatie. De truc is hierbij databits te vermenigvuldigen met een factor en bij een offset op te tellen. De offset geeft dan de VCO frequentie voor een 0 en de offset+1·factor geeft dan de frequentie voor een 1.

Demodulatie van het signaal kan vervolgens ook met een FM demodulator worden gedaan.

In opdrachten 5.7 tot 5.10 zul je beide modulatietechnieken gebruiken.

5.7

Gebruik modulatietechniek 1 om een FSK signaal te creëren. Neem het laatste nummer van je studentnummer als informatiesignaalfrequentie in kHz+1 kHz, en zorg er dus voor dat het aantal samples-per-bit klopt! Maak de frequentie van draaggolf-1 10x groter dan je informatiesignaalfrequentie en de frequentie van draaggolf-2 30x zo groot.

Geef een wiskundige onderbouwing over welke frequenties er in het gemoduleerde signaal zouden moeten zitten. Je mag bij deze onderbouwing ervan uitgaan dat de message een simpele blokgolf betreft met een dutycycle van 50 procent.

(7)

Conclusie opdracht 5.7

5.8

Demoduleer het FSK signaal met behulp van de demodulator die je bij opdracht 4.1 hebt gemaakt.

5.9

Zend/ontvang nu een signaal naar je groepsgenoot met FSK.

5.10

Maak nu de FSK modulator met behulp van een VCO en herhaal opdrachten 5.8 en 5.9.

• Zijn er duidelijke verschillende tussen de twee methoden?

• Hoe ziet een FSK signaal eruit in de watervalplot?

Conclusie opdracht 5.10

(8)

Phase Shift Keying

Nu zullen we ons gaan verdiepen in PSK modulatie.

5.11

Eerst kijken we naar de binaire vorm van PSK (BPSK) zoals uitgevoerd in opdrachten 2.3 en 2.4. Gebruik de opgedane kennis van opdrachten 5.1 tot 5.3 om nu zelf een PSK modulator te bouwen volgens hetzelfde principe als bij lab 2. Neem het laatste nummer van je studentnummer als informatiesignaalfrequentie in kHz+1 kHz en zorg er dus voor dat het aantal samples-per-bit klopt! Maak de frequentie van de draaggolf 10x groter dan je informatiesignaalfrequentie. Zorg ervoor dat je de informatiebitreeks omzet naar een complex signaal voordat je gaat moduleren.

• Hoe ziet het spectrum eruit? Komt dit overeen met de bevindingen van opdrach- ten 2.3 en 2.4? Wat gebeurt er als je het Float to Complex blok achter de modulator zet? Verklaar de verschillen.

• Probeer het gemoduleerde signaal te plotten in een constellatieplot. Waarom zie je niet twee stippen zoals je zou verwachten? Los dit op.3 Zorg er wel voor dat het Float to Complex blok weer voor de modulator staat.

• Hoe ziet het BPSK signaal in een watervaldiagram eruit? Kun je onderbouwen waarom het zo eruit ziet.

Conclusie opdracht 5.11

5.12

Demoduleer het signaal nu volgens de principes van opdracht 2.4 om het verzonden informatiesignaal weer terug te halen. Omdat er nu slechts twee fasen worden toege- past zul je zien dat de I en Q delen weinig verschillen. Je kunt een Complex to Real blok toepassen om enkel het reële deel te gebruiken voor verdere verwerking.

3 Tip: Het gaat niet om de fase van elk afzonderlijke sample, maar om het verschil tussen de samples.

(9)

5.13

Probeer nu het BPSK signaal te zenden/ontvangen naar/van je groepsgenoot. Voor het afstellen van de productdetector is het fijn om in een time scope te kunnen zien wanneer je goed zit. Je kunt nu de frequentie van de productdetector aanpassen totdat je een vergelijkbare plot hebt als in figuur 5

• Wat zijn je bevindingen?

• Waarom is het bij PSK zo lastig correct in te stellen?

• Wat gebeurt er na een aantal minuten met de instelling?

Conclusie opdracht 5.13

Figuur 5: Ontvangen BPSK signaal met een message van 4 kHz, antennes dicht bij elkaar.

Niet heel goed afgesteld.

Het is erg lastig om exact de juiste frequentie te vinden bij de ontvanger. Gelukkig zijn hier oplossingen voor bedacht, waaronder de costas-loop. De costas-loop werkt als een phase-locked-loop om de juiste draaggolf frequentie te vinden en verschuift de gevonden draaggolf naar DC. Voeg een Costas Loop blok toe achter je productdetector.

Geef het een loop bandwidth van 1002π radialen per seconde en een order van 2. Probeer het zenden en ontvangen opnieuw. Zie figuur 6 voor wat je nu zou moeten krijgen.

• Voer het ontvangende schema een paar keer uit. Je zult zien dat soms de bitreeks is geïnverteerd. Waarom?

• Wat is de maximale afstand waarop je kunt ontvangen met de costas-loop?

• Wat zou er nu gebeuren als je een paar minuten wacht?

(10)

Figuur 6: Ontvangen BPSK signaal met een message van 4 kHz, met costas-loop. Boven uitgang na AGC blok, onder uitgang van het symbol sync blok.

Conclusie opdracht 5.13

(11)

Het ontvangen van een PSK signaal brengt een aantal problemen met zich mee. Deze problemen zullen moeten worden opgelost voordat kan worden gekeken naar bijv. QPSK modulatie. In het volgende lab zullen de oplossingen aan bod komen.

Referenties

GERELATEERDE DOCUMENTEN

Het is namelijk de sociale professional die werkt met de meiden, die moet weten wie het meisje is, waar haar krachten liggen, wat haar zorgen zijn en welke behoeften zij heeft om

Op de vraag in hoeverre iemand er bezwaar tegen had dat zijn persoonlijke gegevens en aankoopgedrag voor dit doel werden gebruikt, antwoordde 48 procent ‘(totaal) niet’, 23

Het vergoeden, verstrekken of ter beschikking stellen van deze arbo-voorzieningen in de werkruimte thuis vallen onder de zogenaamde gerichte vrijstellingen en hoeft dus niet

stelblokje, rondom afpurren geisoleerde kantplank dikte: 110mm isolatie met 15mm

Dan als de duisternis wijkt voor het licht, {problem}} (bis.) Lauwheid voor moed en ontwikkeling zwicht, } (bis.) Dan davert als juichtoon vol vuur en vol gloed, } (bis.) Ons Vrank

Aan de andere kant, de 32-bits BGP-peers wanneer ze met de 16-bits BGP-sprekers communiceren, negeren de 16-bits spraakrouters deze nieuwe mogelijkheid en opereren hun BGP-sessie

Geen samenkomst in leerteam wel uitwerken opdrachten per parallel/unit 1-2 Leerteam beredeneerd aanbod. Leerteam

Omdat de titels op de Leeslijst voor ons slechts een begin zijn en het hier niet hoeft te stoppen, koppelen we elk boek aan één of twee andere, verwante boeken. Die boeken hebben