Software Defined Radio


Elektuur | 16 mei 2007 | Fotografie Elektuur

Dit artikel is eerder verschenen in Elektuur 5/2007

Een Software Defined Radio bevat maar weinig hardware. Dat wordt gecompenseerd door uitgekiende software. Dit SDR-project toont aan wat er mogelijk is op dit gebied. We bouwen hier een universele ontvanger voor 150 kHz tot 30 MHz, geschikt voor AM- en DRM-ontvangst van omroepzenders, maar ook voor het ontvangen van amateur-stations.

Het doel van dit project is het bouwen van een ontvanger met een grote lineariteit en een zuiver fasegedrag. Er is vooral gelet op eigenschappen die belangrijk zijn voor DRM-ontvangst. Deze ontvanger heeft dan ook een uitstekende signaal/ruisverhouding. Bij de ontvangst van DRM-stations worden waarden van ruim 30 dB bereikt. Het werkingsprincipe van de ontvanger staat garant voor een extreem vlakke filterkarakteristiek. Dat is niet alleen gunstig voor DRM-ontvangst, maar zorgt ook bij de ontvangst van AM-zenders voor een klank die bijna even goed is als bij FM-ontvangst. Er zijn namelijk zenders die het met de bandbreedtebegrenzing van 9 kHz (MG) of 10 kHz (KG) niet zo nauw nemen. Bij normale ontvangers is daar niets van te horen, doordat de middenfrequentfilters de bandbreedte alsnog begrenzen. In een SDR-ontvanger kan gemakkelijk een grotere bandbreedte gekozen worden.
Naast die instelbare bandbreedte beschikt de software ook over een notchfilter en andere extra instelmogelijkheden. Er kunnen zowel AM-, DRM-, SSB als CW-signalen mee ontvangen worden.

Wie graag een grotere gevoeligheid wil in de hogere amateur-banden, kan gemakkelijk één van de omschakelbare ingangen gebruiken en daar een extra voorversterker op aansluiten. Op de ontvangerprint zelf zit een bescheiden HF-frontend dat voor ontvangst van omroepzenders ruim voldoende is. Als de antenne maar lang genoeg is, is vrijwel alles dat boven het ruisniveau uitkomt te ontvangen.


Hardware-eisen

Voor de meeste SDR-programma’s is een Windows XP computer vereist om probleemloos te kunnen werken. De belangrijkste eis aan de hardware is een geluidskaart die geschikt is voor SDR. We hebben een kleine schakeling ontwikkeld voor het testen van de geluidskaart. Het Software Defined Radio-schema kan gratis van de Elektuur-website worden gedownload. Zonder succesvolle test heeft het geen zin om aan deze SDR-ontvanger te beginnen.


Alles via USB

De ontvanger wordt bestuurd via de USB-poort en betrekt daaruit ook zijn voeding. Er is dus geen aparte netvoeding nodig. Als USB-interface is in de ontvanger (figuur 1) gekozen voor de FT232R. Deze moderne USB-naar-serieel-converter kan het zonder kristal stellen, omdat hij beschikt over een nauwkeurige interne RC-oscillator. Deze chip (IC4) wordt hier in bit-bangmode bangmode als snelle parallelle poort gebruikt. Er zijn acht datalijnen beschikbaar die vrij aangestuurd kunnen worden. Twee van deze lijnen worden als I2C-poort gebruikt en stellen de ontvangstfrequentie in. Drie lijnen worden gebruikt om een multiplexer aan te sturen die 1 van de 8 beschikbare ingangen kiest, met of zonder filter. Twee andere lijnen dienen voor het omschakelen van de middenfrequentie van de ontvanger. De ontvanger kan zo compleet op afstand bediend worden. We kunnen het oude HF-tijdperk met zijn vele knoppen en schakelaars defi nitief vaarwel zeggen...

Er is in het bijzonder gelet op een goede ontkoppeling van de voedingsspanning. Eén van de redenen daarvoor is dat de USB-chip FT232RL intern werkt met frequenties die ook via de antenne-ingang ontvangen moeten worden. Er mogen dus geen hoogfrequente stoorsignalen van het ene onderdeel naar het andere doorstralen. Maar het is werkelijk verbazend hoe goed de ontkoppeling van de chip zelf is. Op de poortlijnen zijn nauwelijks nog hoogfrequente stoorsignalen te ontdekken. Daardoor kan de hoogfrequente ingangsmultiplexer HC4051 rechtstreeks vanuit de poortlijnen aangestuurd worden, zonder dat er sporen van het kloksignaal van de processor in de signaallijnen terecht komen.

De interne spanningsregelaar van 3,3 V in de FT232R zorgt voor de voedingsspanning van de programmeerbare klokgenerator CY27EE16, daarom is er geen aparte spanningsregelaar meernodig. De rest van de schakeling (figuur 1) werkt op 5 V. Er worden meerdere, onafhankelijk van elkaar gefilterde voedingsspanningen gemaakt. Dat dient voor de hoogfrequente ontkoppeling, maar ook voor het tegengaan van laagfrequente overspraak. Dat laatste is vooral belangrijk voor de hoogfrequent- voortrap van de ontvanger, waarvan het signaal via de mixer in het middenfrequentgedeelte terecht komt. Daarom is op deze plek (VCC_HF) een grote elco geplaatst om de rust te handhaven.

Programmeerbare VFO

De SDR heeft een oscillatorfrequentie nodig die vier keer zo groot is als de frequentie van het ingangssignaal, zodat het met de juiste faseverschillen door vier gedeeld kan worden. Om signalen tot 30 MHz te kunnen ontvangen, moet de oscillatorfrequentie dus tot 120 MHz kunnen gaan. In moderne hoogfrequentontwerpen wordt vaak een DDS-oscillator gebruikt, maar voor frequenties tot 120 MHz worden voor een DDS het stroomverbruik en de kosten hoog en blijft de oscillator moeilijk beheersbaar. Daarom is hier gekozen voor een programmeerbare klokgenerator met interne PLL. Veel Elektuur-lezers zullen de CY27EE16 al kennen uit het maartnummer van 2005. Deze oscillator is eigenlijk ontworpen voor gebruik in digitale schakelingen, maar heeft ook in hoogfrequentschakelingen al vaak zijn nut bewezen. Hij bereikt wel niet de frequentieresolutie van een DDS-oscillator, maar de fasestabiliteit van het uitgangssignaal is van vergelijkbare kwaliteit. Het bescheiden stroomverbruik is in deze toepassing belangrijk, omdat we niet te veel stroom uit de USB-poort mogen trekken.

De chip wordt geprogrammeerd via de lijnen SCL en SDA van de I2C-bus. Intern werkt de VCO met een frequentie van 100...400 MHz. De VCO wordt gestabiliseerd met behulp van een PLL en een 10-MHz-kristal. Via delers bereikt het uitgangssignaal de uitgangen. Er is hier gekozen voor de uitgang Clock5. Op die  aansluiting is een kloksignaal beschikbaar tussen 600 kHz en 120 MHz dat voor verdere verwerking naar de delers van het type 74AC74 gaat.

De mixer maakt gebruik van een dubbele mengtrap die bestaat uit in totaal vier analoge schakelaars van het type HC4066. Deze worden aangestuurd met twee in fase verschoven oscillatorsignalen die door de delers 74HC74 worden gemaakt. Als de programmeerbare klokgenerator bijvoorbeeld 24 MHz opwekt, dan wordt de mengtrap aangestuurd met 6 MHz. De ontvanger verwerkt dan een bereik van ±24 kHz rondom de middenfrequentie van 6 MHz.

Heel belangrijk is de faseverschuiving van exact 90 graden tussen de beide kloksignalen. Afwijkingen daarin veroorzaken een slechtere onderdrukking van spiegelfrequenties. Wanneer als analoge schakelaars geïntegreerde switches zoals de 74HC4053 of de 74HC4052, gebruikt worden, dan ontstaan er fasefouten vanwege de doorlooptijden van de interne logica. Bij elke ontvangstfrequentie hebben die weer een ander effect. Bij de hier gekozen oplossing met vier simpele schakelaars van het type HC4066 treden zulke effecten niet op, omdat alle vier de fasen op dezelfde manier behandeld worden. Omdat de deler 74AC74 als synchrone deler geschakeld is, zijn ook daarvan geen fasefouten te verwachten. De ontvanger blijkt dan ook een gelijke spiegelfrequentie-onderdrukking van ca. 40 dB te hebben voor alle frequenties tot 15 MHz. Vanaf ongeveer 20 MHz neemt de spiegelfrequentieonderdrukking merkbaar af, maar omdat in dat frequentiegebied de zenders niet zo dicht bij elkaar liggen, valt daar goed mee te leven.

Signaalverwerking

De ontvanger heeft meerdere ingangen. De ingangskeuze gebeurt met een ingangsmultiplexer 74HC4051 (IC6). De antenne-ingang ANT is via filters met de eerste drie ingangen verbonden. In de eerste stand van de ingangskeuzeschakelaar (breedband) wordt alleen een spoel (L6) gebruikt, die laagfrequent-signalen kortsluit. In de tweede stand (middengolf) is er een laagdoorlaatfilter met een afsnijfrequentie van 1,6 MHz, waarbij R12 de resonantieverschijnselen dempt. Dit filter voorkomt dat de middengolfontvangst verstoord wordt door de menging van harmonischen met kortegolfstations. In de derde stand wordt gebruik gemaakt van een simpel RChoogdoorlaatfilter dat het signaal van sterke middengolfzenders uitfiltert. Een andere ingang (PC1) is beschikbaar voor het aansluiten van een externe afgestemde kring of voorversterker. Verder zijn er nog drie vrije ingangen, bedoeld voor toekomstige uitbreidingen. De ingangsfilters op de print kunnen gezien worden als een soort basisuitrusting die in de meeste gevallen wel voldoet. Maar het is bijvoorbeeld denkbaar om extra steile laagdoorlaatfilters te gebruiken voor een nog betere onderdrukking van hogere harmonischen. Een andere mogelijkheid is het aansluiten van externe afgestemde kringen, waartussen dan met de multiplexer gekozen kan worden.

De actieve ingang wordt door de multiplexer doorgeschakeld naar uitgang COM (pen 3). Aan beide kanten van de multiplexer zijn koppelcondensatoren aangebracht. Via een weerstand van 1 MΩ naar de source-aansluiting van de BF245 wordt een voorspanning van 2,5 V op de schakelaar gezet. Dit voorkomt vervorming bij sterke ingangssignalen. (Zulke vervormingen ontstaan wanneer sterke signalen door de beveiligingsdioden aan de aansluitpennen worden begrensd.)

Op ingang A7 is een kalibratiesignaal beschikbaar dat afkomstig is van uitgang Clock-3 (Test-Clk) van de programmeerbare kristaloscillator. De oscillator wekt een blokgolf op met een frequentie van 5 MHz en een amplitude van 3,3 Vtt. Dat komt overeen met een signaalsterkte van S9 + 40 dB. Met dit signaal kan de in de software geïntegreerde veldsterktemeter zonder problemen gekalibreerd worden.

De JFET BF245 aan de uitgang van de multiplexer werkt als impedantie-omzetter. Daardoor wordt het HF-signaal met 100 kΩ relatief hoogohmig afgesloten. Zodoende kan bijvoorbeeld op ingang In2 een afgestemde kring met een hoge kwaliteitsfactor aangesloten worden. Op de laagohmige uitgang van deze sourcevolger staat een DC-niveau van ca. 2,5 V. Het signaal wordt vanaf hier via de mengtrap en de volgende opamp doorgevoerd naar de uitgang. Het is dan ook belangrijk dat op dit signaal geen laagfrequente stoorsignalen aanwezig zijn. Daarom wordt de voeding van dit gedeelte, VCC_HF, bijzonder goed gebufferd. De FET zelf zorgt voor een verdere ontkoppeling tussen het signaal en de voedingsspanning. Maar ook van de gate mag geen signaal komen dat in het middenfrequentgebied onder 24 kHz valt. Daarom ligt er direct aan de antenne-ingang een HFspoel die bijvoorbeeld 50-Hz-bromsignalen kortsluit naar de massa.

Vanaf de source-aansluiting gaat het signaal via twee weerstanden van 100 Ω naar de beide mengtrappen voor het I- en Q-signaal. Deze weerstanden verbeteren de symmetrie van de mengtrap omdat er toch een zekere spreiding is in de ON-weerstand van de analoge schakelaars. De mengtrap zelf bestaat uit enkelvoudige analoge schakelaars van het type HC4066, die samen een omschakelaar vormen. Ook hier ligt het DC-niveau op ca. 2,5 V, zodat de schakelaars een signaal tot 5 Vtt kunnen verwerken zonder overstuurd te raken. 

De MF-versterker bestaat uit twee exact gelijke trappen die elk een versterking van 40 dB leveren. Bij de keuze van het type opamp is de versterkingsbandbreedte (GBW) bij een voedingsspanning van 5 V van belang om bij signalen rond 20 kHz en een versterkingsfactor van tien maal nog zonder fasefouten te kunnen werken. Bij testen in het prototype van de auteur bleek de TL084 voor deze toepassing goed genoeg. Als voor IC5 een voetje gebruikt wordt, kan ook geëxperimenteerd worden met andere (snellere) opamps.

De ingangstrap werkt als een verschilversterker. De dimensionering van de weerstanden is niet geoptimaliseerd voor de beste common mode rejection, maar wel voor een zoveel mogelijk gelijke ingangsweerstand op de inverterende en de niet-inverterende ingang. Experimenten hebben aangetoond dat het voor een goede fasereinheid en daarmee een goede spiegelfrequentieonderdrukking vooral belangrijk is dat de vier uitgangen van de mengtrap met exact dezelfde impedantie worden afgesloten. De ingangsimpedantie is ongeveer 5 kΩ op alle ingangen. Bij de niet-inverterende ingang is de belastingsweerstand van 4,7 kΩ in het schema te zien. Op de inverterende ingang zien we weerstanden van 10 kΩ. Doordat het signaal op dit punt precies in tegenfase is met het signaal op de uitgang, wordt die waarde door het tegenkoppelcircuit echter gehalveerd, zodat we uitkomen op 5 kΩ. Dat geeft voldoende gelijkheid in de impedantie van de beide ingangen.

De condensatoren van 2,2 nF vormen, samen met de inwendige weerstand van de analoge schakelaars, in de mengtrap en de voorschakelweerstanden van 100 Ω eenvoudige laagdoorlaatfilters met een kantelpunt op ca.100 MHz. Dit houdt HF-resten weg uit het LF-gedeelte van de schakeling. Het kantelpunt van deze filters ligt ver boven het ontvangstbereik, zodat de toleranties van de condensatoren geen fasefouten tot gevolg zullen hebben. Er kunnen dus zelfs keramische condensatoren gebruikt worden. Ook voor alle andere condensatoren in de signaalweg, die werken als hoogdoorlaatfilters met een kantelpunt van ca. 300 Hz, is een tolerantie van 10 à 20% geen probleem.

De laatste trap heeft een tienvoudige versterking (20 dB), maar deze kan met behulp van de analoge schakelaar worden teruggebracht tot een factor 1 (0 dB). Het signaal kan verzwakt worden met een waarde van 0 dB, -10 dB of -20 dB. Op die manier kan de software oversturing voorkomen. Omdat het ingangscircuit goed bestand is tegen oversturing, is deze verzwakkingstrap aangebracht bij de uitgang van de ontvanger. Dit is te vergelijken met een versterkingsregeling van een MF-trap.

Opbouw

Op de print (figuur 2) zijn zoveel mogelijk normale onderdelen gebruikt, geen SMD’s. Alleen de LSI-chip FT232RL en CY27EE16 zijn helaas uitsluitend verkrijgbaar in een SSOP-behuizing met een penafstand van 0,65 mm. In figuur 4 is de opgebouwde print van het prototype te zien. Het is het beste om als eerste de beide SMD-chips te plaatsen. In de praktijk is gebleken dat het verstandig is om eerst de pennen aan de hoekpunten te solderen en daarna alle andere pennen. Een teveel aan soldeertin is met desoldeerlitze gemakkelijk te verwijderen. Zorgvuldige controle van het soldeerwerk met een vergrootglas voorkomt nare verrassingen naderhand.

De normale componenten kunnen zonder problemen gemonteerd worden. Er zijn geen bijzondere HF-onderdelen en geen afregelpunten. De condensatoren C12 en C13 moeten nog niet meteen geplaatst worden. De CY27EE16 heeft namelijk interne (instelbare) condensatoren die misschien al voldoende zijn om een frequentie van 10 MHz te bereiken. Alleen als voor het gebruikte kristal grotere condensatoren nodig zijn, worden C12 en C13 geplaatst.

Als alles opgebouwd is, moeten met een ohmmeter toch minstens de aansluitingen van de USB-bus gecontroleerd worden op kortsluitingen, om de pc niet in gevaar te brengen. Aansluiten en afstemmen Voor het aansluiten van de ontvanger op de USB-poort moet eerst een driver voor de FT232R geïnstalleerd worden. Deze is te downloaden van de website van de fabrikant, maar wordt ook meegeleverd met de software die bij dit artikel hoort.

De automatische installatie met het programma CDM_Setup.exe zorgt er voor dat eventuele eerder geïnstalleerde FTDI-drivers worden verwijderd. Daarna vindt Windows de juiste driver automatisch als de schakeling wordt aangesloten op de USB-poort. De pc krijgt daarmee een extra virtuele COM-poort. We hoeven in dit geval niet eens te weten welk nummer deze virtuele poort krijgt, omdat de software de FT232R rechtstreeks aanspreekt. De acht datalijnen van de chip worden door FTD2XX.dll bestuurd alsof het een parallelle poort is. Ook alle timing-problemen sluiten we daarmee uit. De vele noodzakelijke niveauveranderingen op de I2C-lijnen kunnen rustig in een buffer geladen worden en dan snel achter elkaar op de datalijnen worden gezet. Met het programma ElektorSDR.exe kunnen alle functies van de ontvanger aangestuurd worden (figuur 3). Het is beschikbaar als download op de Elektuur website in uitvoerbare vorm en in de vorm van Delphi-broncode. In de download is ook een README-bestand beschikbaar dat de initialisatie en ingebruikname bespreekt.

Onderdelenlijst

Weerstanden:
R1,R7,R19 = 100 Ω
R2,R3 = 330 Ω
R4 = 100 Ω
R5,R8,R13,R17,R20 = 100 k
R6,R10,R14,R22 = 10 k
R9,R21 = 4k7
R11,R23 = 27 k
R12,R15,R18 = 470 Ω
R16 = 1 M
R24 = 1 k
R25 = 4Ω7

Condensatoren:
C1,C2,C5..C7,C10,C11,C16,C17,C19...
C21,C25...C28,C30,C32...
C34,C36,C38,C39,C40 = 100 n
C3,C4,C9,C15 = 4μ7/16 V radiaal
C8,C18 = 10 n
C12,C13 = 10 p
C14 = 470 μ/16 V radiaal
C22,C24,C35,C37 = 2n2
C29 = 220 p
C31 = 100 p

Halfgeleiders:
IC1 = 74AC74
IC2,IC7 = 74HC4066
IC3 = CY27EE16 (Cypress)
IC4 = FT232R (FTDI)
IC5 = TL084CN met voetje (zie tekst)
IC6 = 74HC4051
T1 = BF245

Zelfinducties:
L1...L4 = 10 μH
L5 = 47 μH
L6 = 2,2 mH

Diversen:
K1 = USB-B-Bus voor printmontage
K2 = stereo-jack-chassisdeel 3,5 mm,voor printmontage
K3 = 2-polige printkroonsteen, steek 5 mm
PC1 = soldeerpen
X1 = 10-MHz-kristal
print 070039-1 leverbaar via ThePCBShop
Software 070039-11 (zie www.elektuur.nl)

Voor dit project is tevens een compleet opgbouwde en geteste print leverbaar, EPS 070039-91

Decoder-software

Bijna alle functionaliteit van de ontvanger wordt bepaald door het decoderprogramma op de pc. In het overzicht [1] is te zien dat er verschillende programma’s beschikbaar zijn. Een eerste test kan bijvoorbeeld met SDRadio [2] gedaan worden. Meer mogelijkheden bieden DREAM [3] en G8JCFSDR [4].

In elk geval is het belangrijk dat de geluidskaart op de goede manier is ingesteld (dit wordt beschreven in de README-file in de download 07039-11.zip, welke te vinden is op de SDR pagina bij Elektuur).

Verdere aanwijzingen over de software zijn te vinden op de desbetreffende websites en in de Elektuurartikelen uit de literatuurlijst. Ook op de homepage van de auteur (www.bkainka.de) en op de Elektuur-site is nog meer informatie te vinden. Tenslotte wijzen we belangstellenden erop dat op de website bij dit artikel ook nog een gratis document beschikbaar is waarin de gebruikte modulatietechniek in het kort wordt uitgelegd.

Weblinks:
[1] www.nti-online.de/diraboxsdr.htm
[2] www.sdradio.org/
[3] http://sourceforge.net/projects/drm
[4] http://www.g8jcf.dyndns.org/

Literatuur
Burkhard Kainka: DREAM-team – Software voor de DRM-ontvanger, Elektuur april 2004.

Een opgebouwde en geteste print is te bestellen via de Elektuur webshop.