De bouw van een Software Defined Radio Johan Maas, PA3GSB Ugchelen
[email protected]
De bouw van een Software Defined Radio De afgelopen tijd heb ik me bezig gehouden met een relatief nieuw fenomeen de 'Software Defined Radio' (SDR). Een SDR is een radio waarbij alle elementaire radio functies zoveel mogelijk door een software algoritme worden uitgevoerd. De werking van een SDR radio wordt dus bepaald door software. Het grote voordeel van een SDR radio is de grote flexibiliteit en goede reproduceerbaarheid. Met flexibiliteit bedoel ik de mogelijkheid om (heel simpel en snel) een speciaal filter te bouwen of het introduceren van een nieuwe mode. Hiervoor hoeft slechts de software te worden aangepast en zijn verder geen hardware wijzigingen noodzakelijk. Met reproduceerbaarheid bedoel ik dat het speciale filter of de nieuwe mode simpel gekopieerd kan worden waarbij de kopie exact dezelfde werking heeft als het origineel. Hierbij een beschrijving van de algemene werking van een SDR radio beschrijven. Wat zijn de elementaire functies en welke keuzes kunnen hier gemaakt worden. Verder wil ik een globale bouwbeschrijving geven van de door mij gebouwde SDR radio. De beschrijving blijft globaal, het zal geen schema's of print lay-outs bevatten. De SDR radio is gebouwd op basis van vrij beschikbaar internet informatie, waar nodig wordt hieraan gerefereerd. Tevens zijn internet referenties opgenomen, deze referenties verwijzen naar vrij (dus zonder kosten) aanwezige gereedschappen (software tools) die ik gebruik heb bij de bouw. Kwaliteitsaspecten van een SDR, zaken zoals zijband onderdrukking, IP3, dynamisch gedrag, etc. worden niet besproken. Door 'gewoon' te beginnen en door modulair te bouwen wordt ervaring opgebouwd en kan altijd naar verbeteringen worden gezocht die per module kunnen worden uitgeprobeerd.
Theoretische opbouw Een SDR transceiver kent net zoals de klassieke 'hardware' transceiver een ontvangst en zendmode. Voor de ontvangsten zendmodes wordt voor een SSB signaal de benodigde bewerkingen beschreven: Ontvangstmode
Blokschema 1 Theoretische Opbouw SDR Radio (Ontvangst mode)
Pagina 1 - 14
De bouw van een Software Defined Radio
In blokschema 1 is de theoretische opbouw van een SDR radio in ontvangstmode weergegeven. In de ontvangstmode moet het analoge antenne signaal worden omgezet in een gedemoduleerd analoog Laag Frequent (LF) signaal. Deze omzetting verloopt in een aantal stappen. De omzetting, van analoge naar digitale vorm moet worden verzorgd door een Analoog Digitaal Converter (ADC). Uit deze digitale datastroom moet de informatie weer terug te winnen zijn die aan de zendende kant is toegevoegd (=demodulatie). Deze bewerkingen worden door zogenaamde Digital Signal Processing (DSP) software routines uitgevoerd. Vervolgens wordt de bewerkte digitale informatie door een Digitaal Analoog Converter (DAC) omgezet in een LF analoog signaal. Dit signaal wordt vervolgens door een LF versterker op niveau gebracht en door een luidspreker of via een koptelefoon hoorbaar gemaakt. Zendmode
Blokschema 2 Theoretische Opbouw SDR Radio (Zend mode) In blokschema 2 is de theoretische opbouw van een SDR radio in de zendmode weergegeven. In de zendmode wordt het analoge microfoon signaal omgezet in een gemoduleerd analoog HF signaal. Deze omzetting verloopt net zoals in de ontvangstmode in een aantal stappen. De omzetting, van het analoge microfoon signaal naar de digitale representatie wordt verzorgd door een Analoog Digitaal Converter (ADC). Deze digitale datastroom wordt volgens de ingestelde modulatiemode bewerkt (=modulatie). Deze bewerkingen worden net als in de ontvangstmode door zogenaamde Digital Signal Processing (DSP) software routines uitgevoerd. Vervolgens wordt de bewerkte digitaal gemoduleerde informatie door een Digitaal Analoog Converter (DAC) omgezet in een gemoduleerd analoog zend signaal.
Pagina 2 - 14
De bouw van een Software Defined Radio
Praktische opbouw De omzetting, in de ontvangstmode, van het analoge antenne signaal naar de digitale vorm zou idealiter gebeuren door het antenne signaal direct op de ADC aan te bieden. Echter, de huidige (betaalbare) ADC's zijn nog niet instaat om deze omzetting uit te voeren. In de ontvangstmode moet het HF signaal eerst worden omgezet naar een bruikbare frequentie voor een ADC, het zogenaamde down mixing. Net als voor de ontvangstmode geldt dat de in de zendmode te gebruiken DAC’s niet instaat zijn om direct het kunstje uittevoeren. Voor de zendmode moet dus het relatief lage frequentie signaal wat door de DAC wordt gemaakt worden omgezet naar de gewenste (uitgang)frequentie, het zogenaamde up mixing. In de praktijk moeten we naast de frequentieomzetters ook een frequentie afstemming bouwen. Het hebben van een afstemming alleen is echter niet genoeg, om voldoende selectiviteit te verkrijgen. Het is tevens noodzakelijk om bijbehorende band filters te bouwen.
Pagina 3 - 14
De bouw van een Software Defined Radio
Bouwbeschrijving De hier beschreven SDR zend ontvanger is gebaseerd op de SDR1000 hardware. In het tijdschrift QEX is deze hardware uitgebreid beschreven, in een 4-tal artikelen onder de titel 'Software defined radio for the masses' [1]
Blokschema 3 Opbouw van de SDR Transceiver
Het blokschema 3 geeft de opbouw weer van de door mij gerealiseerde SDR. Voor de opbouw van een software radio is, kijkend naar de het schema, nog heel wat hardware nodig. Het schema is verdeeld in de volgende hoofdblokken: • PC • Frequentie Omzetting • Afstemming • Bandpas filters en Pre-Amplifier • Power Amplifier Pagina 4 - 14
De bouw van een Software Defined Radio
PC De PowerSDR software heeft naast de SDR1000 hardware een PC nodig met het windows XP besturingssysteem. In figuur 1 is de gebruikers interface te zien van de software. Dit programma ondersteunt zowel de ontvangst als de zendmode. De broncode is als open source beschikbaar gesteld [1]. Voor het uitvoeren van aanpassingen is wel Visual Studio 2003 .Net noodzakelijk. Naast de software is ook een volledige bedieningshandleiding beschikbaar. Voor de verdere (performance) eisen die aan de PC gesteld moeten worden is op de website [1] de nodige informatie te vinden.
Figuur 1 PowerSDR Gebruikers Interface
De software maakt gebruik van de in de computer aanwezige geluidskaart, de geluidskaart verzorgt de analoog naar digitaal conversie en digitaal naar analoog conversie. De PowerSDR software ondersteund een aantal specifieke geluidskaarten maar kan ook overweg met elke andere aanwezige kaart. In mijn PC is een standaard 16 bits geluidskaart aanwezig en ook deze kaart levert al hele leuke resultaten op. De zaterdag QRP ronde is zelfs met een loopantenne goed te volgen. Verder verzorgt de PowerSDR software de uitvoering van de DSP routines. Deze DSP routines verzorgen de modulatie en demodulatie functies. De aansturing van de SDR1000 hardware wordt door de parallelle poort verzorgt. Ik heb echter gekozen voor een seriële aansturing. De seriële poort van de PC zorgt voor de verbinding met de microcontroller. Het voordeel van een seriële- t.o.v. een parallelle- aansturing is de besparing van het aantal benodigde microcontroller poorten , de seriële aansturing ‘kost’ slecht een tweetal microcontroller poorten. De controller verzorgt op basis van, de door de PC verstuurde opdrachten de afstemming, de bandfilter omschakeling en de RX-TX omschakeling. De gehele sturing vindt plaats vanuit de PC. Door de seriële aansturing van de SDR hardware moeten wel een aantal software aanpassingen worden uitgevoerd in de PowerSDR software. Pagina 5 - 14
De bouw van een Software Defined Radio Een van de aanpassingen is dat in de set-up de mogelijkheid is gecreëerd om in het set-up scherm te kiezen voor een seriële poort i.p.v. de parallelle poort , zie figuur 2. Daarnaast moet ook de software interface module, de code die verantwoordelijk is voor de SDR1000 hardware aansturing, worden aangepast. Deze aanpassing zorgt voor een flinke vereenvoudiging van de software code.
Figuur 2 Aangepaste PowerSDR setup scherm
Pagina 6 - 14
De bouw van een Software Defined Radio
Frequentie Omzetting De hier beschreven SDR zend ontvanger, die gebaseerd is op de SDR1000 hardware [1], maakt gebruik van een alternatieve frequentie omzetter, namelijk een kwadratuur mengtrap.Voor de ontvangstmode wordt deze frequentie omzetter ook wel de QSD Quadrature Sampling Detector genoemd. Voor de zendmode wordt hetzelfde principe van frequentie omzetting gebruikt en wordt wel de QSE Quadrature Sampling Exciter. Het leuke van deze detector is dat (waarschijnlijk) een Nederlander OM D.H. Van Graas (PA0DEN) deze manier van mengen voor het eerst beschrijft. De kwadratuur mengtrap is ook bekend onder de naam Tayloe detector De kwadratuur mengtrap maakt gebruik van directe (selectieve) omzetting. In dit type omzetter wordt geen (duur) kristal filter gebruikt, en kan dus worden gezien als een voordeel. Een nadeel is dat de frequentie omzetting moet worden uitgevoerd met een dubbel oscillator signaal; het in fase en het kwadratuur signaal (90 graden fase verschil). In het engels worden deze de 2 signalen de In-phase and Quadrature signalen genoemd, kortweg de IQ signalen. Een directe conversie ontvanger bevat geen kristalfilter en kent geen zijband onderdrukking, door nu gebruik te maken van de IQ signalen is het m.b.v. DSP routines toch mogelijk om een van de zijbanden te onderdrukken. In het tijdschrift QEX is de benodigde basisband uitgebreid beschreven in een 4-tal artikelen onder de titel 'Software defined radio for the masses' [1] Naast de in de QEX voorgestelde hardware basisband omzetter zijn hier natuurlijk ook de nodige varianten op te verzinnen. Tasic Sinisa-Tass beschrijft op zijn web site een mengtrap gebaseerd op de bekende elektronische schakelaar de 4066 [2].
Afstemming In de QEX artikelen wordt de frequentie afstemming verzorgt door een DDS chip, de AD9854AST van Analog Devices [3]. Dit complexe IC bevat de benodigde I en Q uitgang. De yahoo groep ‘dds-vfo’ is met name actief met het maken van DDS (=Direct Digital Synthesis) frequentie afstemmingen. Het is mogelijk om een frequentie afstemmings eenheid zelf te bouwen met behulp van een bouwpakket [4]. De frequentie afstemming kan ook worden opgebouwd door een VCO met b.v. een PLL; de Infase en het Quadrature signaal kan dan verkregen worden door gebruik te maken van een Johnson Counter. De afstemming kan bijvoorbeeld in stappen van 10 KHz worden uitgevoerd de fijnafstemming binnen deze 10 KHz kan verder door de software worden verzorgd. Dus ook hier is nog de nodige ruimte om lekker te experimenteren. De 'normale' componenten uit de junk-box (zo wordt de knutsel doos door de old timers geloof ik genoemd) kunnen dus gebruikt worden en zijn er geen speciale SMD componenten nodig. De controller bestaat uit een seriële poort driver (max232) en een pic microcontroller (16F628). Het programma in de microcontroller is geschreven in JAL (Just Another Language). De JAL compiler is gemaakt door Wouter van Ooijen en als open source beschikbaar gemaakt [5]. Voor vragen of opmerkingen is op de yahoo site een group aanwezig; de jallist. Via zijn webshop [5] zijn diverse bouwpakketten en onderdelen verkrijgbaar. JAL is een zogenaamde HighLevel Language, het maken van een programma kost slechts een fractie van de tijd die nodig is als het programma in machine code wordt geschreven. Het is in JAL eenvoudig om diverse software routines te verzamelen in een bibliotheek en deze routines overnieuw te gebruiken in de diverse projecten.
Pagina 7 - 14
De bouw van een Software Defined Radio In figuur 3 is een deel van de voor dit project gemaakte JAL code te zien. procedure AD9854_sendData(byte in data) is -- the procedure starts with the msb!! var byte mask mask = 0x80 for 8 loop if (data & mask) != 0 then AD9854_Data = high Else AD9854_Data = low end if AD9854_setClock mask = mask / 2 end loop
-- set data
-- clock data into dds -- rotate the mask bit to the right
end procedure Figuur 3 Het versturen van data naar de AD9854 chip geschreven in JAL In de microcontroller heb ik m.b.v. JAL een command interperter gebouwd. Deze interperter luistert op de seriële poort naar besturing commando's. In het volgende overzicht worden de commando's beschreven die de PC naar de controller stuurt en dus in de interperter zijn geïmplementeerd, zie tabel 1. Interface PC - SDR Commando Data Initialisatie DDS <'1'> Nvt DDS Frequentie Tuning Word <'2'>
(msb eerst) Transmit (TX) Mode <'3'> Nvt Receive (RX) Mode <'4'> Nvt BandPasFilter (BPF ) <'5'> - Niet gebruikt. - 6 meterband - 10 + 12 meterband - 15 + 17 meterband - 30 meterband - 20 meterband - 40 meterband - 80 meterband Versie (test) <'v'> Retour bericht vanuit controller: SDRadio v0.2 by [email protected] Tabel 1 PC – SDR Commando’s
Met name het commando 'v' is handig. Hiermee is met HyperTerminal, dit programma wordt met windows XP meegeleverd, te controleren of de koppeling van PC met de controller werkt. Stel hiervoor hyperterminal in met de volgende parameters: 9600 baud 8 data bits en geen parity controle (9600/8/N).
Pagina 8 - 14
De bouw van een Software Defined Radio In figuur 4 is het resultaat van het commando weergegeven.
Figuur 4 Opvragen van de versie informatie en tevens connectie controle Voor de QSD en QSE heb ik printjes laten maken, zie foto 1. De schema’s en de printlayouts zijn getekend m.b.v. EAGLE (=Easily Applicable Graphical Layout Editor). Dit schematekenpakket is verkrijgbaar op het internet [6] en kan als light edition vrij worden gebruikt.
Foto 1 Gemonteerde QSD en QSE schakeling
Pagina 9 - 14
De bouw van een Software Defined Radio Naast de controller en de omzetters bevat dit bouwblok ook de frequentie afstemmings module; zie foto 2
Foto 2 Afstemming (IQ-DDS) en RS232 verbinding
De door mij gemaakte frequentie afstemmings module maakt gebruik van de reeds eerder genoemde AD9854 chip. Deze chip is voorzien van een klok oscillator van 125 MHz. De SDR1000 hardware is uitgerust met een 200Mhz klok oscillator. In de PowerSDR software moeten we deze 'hard'gecodeerde waarde (in de handleiding wordt een optie genoemd om deze klok oscillator frequentie via de user interface te wijzigen; in werkelijkheid blijkt deze optie (helaas) niet aanwezig) dus wijzigen. Ik was reeds in het bezit van het 125Mhz kristal, het is hier wellicht handiger om te kiezen voor een 200 MHz kristal, het scheelt in ieder geval een aanpassing in de PowerSDR broncode. In de SDR1000 hardware wordt de AD9854 via een parallelle sturing ingesteld. Ook hier wordt weer gebruik gemaakt van de seriële aansturings mogelijkheid van de AD9854. Net zoals bij de aansturing vanuit de PC bespaart de seriële aansturing ook hier een aantal microcontroller poorten.
Pagina 10 - 14
De bouw van een Software Defined Radio
BandPass Filters & Pre-Amplifier Deze schakeling is gebaseerd op de SSB-2 Trx van PA0SSB; zie onder andere de website [7] voor verdere informatie. Voor de aansturing van de BAND filters en de tx/rx omschakeling is een control signaal aangebracht. Het control signaal bestaat uit 3 signalen (strobe, clock en de data) en de massa. De control signalen worden serieel doorgegeven via een niet inverterende buffer (SN74LS07) met opencollector . De buffer werkt op 5V, aan de opencollector zijn weerstanden aangesloten die aan de andere kant verbonden zijn met de 12 Volt. Deze sturen zo de HEF4094 die op 12 volt draait, de data wordt serieel binnengeklokt en worden dmv een strobe pulese op de uitgang beschikbaar gemaakt. Deze 12 Volt is nodig om de pin diodes voldoende in geleiding te krijgen zodat het gewenste signaal niet (extra) wordt gedempd. Op deze manier is het mogelijk om 8 bandfilters te schakelen. I.p.v. een extra control signaal schakel ik via bit 8 de tx/rx schakeling. Foto 3 geeft een idee hoe deze omschakeling is gebouwd.
Foto 3 Control Signalen; Omschakelen TX-RX en schakelen Bandpass Filters
Op de foto 4 is slechts een bandfilter te zien namelijk die voor de 80 meterband, de resterende filters moeten nog geplaatst worden.
Pagina 11 - 14
De bouw van een Software Defined Radio
Foto 4 Bandpass Filtes en Pre-Amplifier (TX)
Power Amplifier Hiervoor heb ik meerdere schakelingen gemaakt. Zo heb ik een 4 Watt versie die werkt op basis van IRF610 Hexfet. De andere versie is tevens opgebouwd op basis van drie IRF610 Hex Fets. Twee fets zijn in balans opgenomen en de andere fet wordt als driver genbruikt. Ook deze schakelingen zijn gebaseerd op de door PA0SSB gepubliceerde bouwsels.
Opbouw Voor al de zelfbouw blokken (dus exclusief de PC) kunnen (blikken)doosjes gebruikt worden. De doosjes zijn 4 cm hoog. Op de helft van de hoogte is een dubbelzijdige printplaat gemonteerd. Dit door de print aan het blik vast te solderen. Op deze manier is het dus mogelijk om aan beide zijde schakelingen aan te brengen. Op deze manier is het mogelijk om modulair te bouwen zonder dat het aantal externe verbindingen tussen de verschillende functies uit de hand loopt. De hoogfrequent signalen worden d.m.v. BNC pluggen en coax kabeltjes van het ene naar het andere doosje doorgegeven. De control signalen worden door middel van een 9 polige sub-D connector doorgegeven. De voedingsspanningen worden door een 25 polige connector naar binnen gevoerd; 12 pinnen zijn doorverbonden en zijn bestemd voor de massa. Voor elke benodigde spanning worden 2 of 3 pennen gebruikt.
Pagina 12 - 14
De bouw van een Software Defined Radio
Afregeling Door toleranties in de analoge hardware kan onbalans ontstaan tussen het I en het Q kanaal. Deze onbalans kunnen we in de software simpel corrigeren. In het engels wordt dit fenomeen IQ Imbalance genoemd. Deze onbalans zorgt voor een mindere onderdrukking van de andere zijband, in het engels Image Rejection genoemd. Deze imbalance geldt zowel voor de ontvangst als zendmode. Deze onbalans moet dus voor de RX en TX mode afzonderlijk worden afgeregeld. In de PowerSDR software is voor het afregelen van de imbalance een voorziening aanwezig.
Resultaten Inmiddels zijn op 80 meter met 4 Watt, meerdere verbindingen gemaakt. Mijn antenne bestaat uit een draad van ongeveer 10 meter die ik schuin vanaf de dakkapel naar beneden gespannen. De rapporten van verschillende zelfbouwende OM’s waaronder de eerste verbinding op 13 maart 2006 met Jan PA0SSB, Cor PA0HRT en Jaap PA3CVS zijn zeer bemoedigend. De modulatie is van goede kwaliteit en blijkt goed over te komen bij de tegenstations. De ontvangst prestaties zijn goed te noemen, met name de ruisonderdrukking en de automatische notch en de flexibele instelbare doorlaatband (door PA0SE zo mooi omschreven als een schuifdeur systeem) zijn hele mooie en zeer goed werkende opties die je zonder allerlei ingewikkelde hardware constructies als het ware in de software cadeau krijgt. Met name het spectrum overzicht geeft een nieuwe dimensie aan het radio luisteren. Ik heb tot op heden geen last gehad van de PC afkomstige storing, het is me in ieder geval niet opgevallen tijdens het gebruik van de radio, dit zonder overigens enige maatregel te nemen. Een galvanische scheiding tussen de PC en de bijbehorende SDR hardware is ook niet in gebruik.
Overige software De gebouwde hardware is verder geschikt voor andere software programma’s. Zo kunnen de programma’s SDRadio [8], Winrad [8], Rocky [9] en M0KGK SDR Decoder [10] eenvoudig worden aangesloten. In tegenstelling tot de PowerSDR software is in de genoemde programma’s het niet mogelijk om de hardware afstemming te verzorgen. Om toch te kunnen afstemmen is een simpel programma (Visual Basic) gemaakt (ergens op het internet gevonden en aangepast voor mijn doel) dat via de seriële poort de afstemming uitvoert, in figuur 5 is de user interface te bewonderen.
Figuur 5 Externe afstemming
Pagina 13 - 14
De bouw van een Software Defined Radio
Tot Slot In dit artikel is een overzicht gegeven van de bouw van een Software Defined Radio. Bij het bouwen is gebruik gemaakt van op internet vrij beschikbare middelen. Door de hardware modulair op te bouwen is een radio gemaakt die op verschillende punten verbeterd kan worden. Ik hoop dat dit artikel inzicht geeft in de werking van een SDR radio en aanzet tot eigen experimenten met de radio van de toekomst. Indien gewenst is het mogelijk alle vrij gebruikte software ontwikkeltools, gevonden artikelen, schema’s en zelf geschreven software te bundelen op een CD. Ik wens een ieder veel plezier met de hobby. Johan PA3GSB Referenties [1] http://www.flex-radio.com FlexRadio Systems; Op deze site is informatie over de SDR-1000 hardware te vinden en kan ook de PowerSDR software worden opgehaald. [2] http://yu1lm.qrpradio.com/ Siniša Tasić – Tasa; Tasic beschrijft zijn SDR hardware die gebaseerd is op DIL chips. [3] http://www.analog.com Analog Devices; Voor meer informatie over de DDS Chips (met name voor AD9854) [4] http://www.kangaus.com Op deze website is meer informatie over een bouwpakket te vinden voor het bouwen van een IQ-DDS (op basis van de AD9854) Voor ondersteuning is de vogende nieuwsgroep actief: http://groups.yahoo.com/group/dds-vfo [5] http://www.voti.nl Wouter van Ooijen; Wouter is de bedenker en maker van JAL. Tevens verkoopt hij via zijn website allerlei onderdelen en bouwpakketten. [6] http://www.cadsoft.de Schema tekenpakket EAGLE (=Easily Applicable Graphical Layout Editor) kan hier worden opgehaald. De light edition kan zonder betaling worden gebruikt. De print kun je dan op basis van de aangemaakte eagle board files bv laten maken in Bulgarije(http://www.olimex.com ). [7] http://www.ssbtrx.nl/ De site die al de informatie bevat over de SSB-2 HF-Transceiver; In de SDR Radio is met name de Banpass en de preamplifier als uitgangspunt gebruikt. Het omschakelen per band wordt uitgevoerd met pin diodes ipv relais. [8] http://www.weaksignals.com Op deze site zijn meerdere software producten te vinden zoals SDRadio en Winrad geschreven door Alberto I2PHD. Deze software wordt actief ondersteund op de actieve nieuwsgroep http://groups.yahoo.com/group/soft_radio [9] http://www.dxatlas.com/rocky/ Op deze site is het programma ‘Rocky’ van Alex, VE3NEA, te vinden. [10] http://www.m0kgk.co.uk/sdr/index.php Op deze site is het programma ‘M0KGK SDR Decoder’ van Duncan, M0KGK,
Pagina 14 - 14