Software Defined Radio: de “zachte” kant
Jan van Katwijk
Even voorstellen ●
●
●
●
Typische jaren 50/60-er: Radio's bouwen met buizen en stevige 1 Watt weerstanden –
MG/KG: van 1 tot N buizen
–
FM (Radio Electronics)
In de jaren 70 en 80 aandacht voor gezin en werk –
Minicomputers: PDP-8, PDP-9, PDP-11
–
Veel programmeerwerk: Algol 60, Lisp, BCPL , C en Ada
Begin jaren '90 kleine opleving van radiotechniek –
Aanschaf van een Plessey PRG155A
–
programma's voor decoderen van weerkaarten (JVFax, ...), RTTY en PSK onder DOS (seriele poort).
Al snel weer geabsorbeerd door werk, dus ...
Even voorstellen (II) ●
●
Vanaf 2009 tijd voor een hobby: pensioen –
Begonnen met een eenvoudige radio met transistoren: componenten te klein,
–
Serie artikelen (Signals samples and stuff (QEX 1998)) en boek (What every engineer should known about DSP):
–
Dus maar wat gaan programmeren: spectrumscope, filters, etc
Tools: –
Laptop met Linux, ● ●
–
Qt voor de GUI, Portaudio voor de geluidskaart.
Dus werd het C en C++
Even voorstellen (III) Al snel een spectrumscope om via de geluidskaart naar CD's te kijken, ● In 2009 interface naar “Elektor” kaart: een radio om de korte golf te beluisteren am, usb, lsb (resultaat vergelijkbaar met de “gewone” Plessey), ● In 2009/2010 uitgebreid met verschillende Modes (RTTY, PSK, etc), ● In 2011 uitgebreid met file handling en pmSDR kit, ● Januari 2012 eerste versie op pmsdr site, ● In 2011/2012 FM decoders erbij en de software cross-compiled voor Windows, <www.sdr-j.tk> gaat “up”, ● In 2012/2013 uitgebreid met “DAB” sticks en DAB, ● In 2014 uitbreiden met DRM decoder en porten naar Raspberry. ●
Huidige Stand van Zaken ●
32 bits set voor Windows en Linux –
SW radio met support voor ● ● ●
–
Swbackend met support voor ● ●
–
File and soundcard input, Alle beschikbare decoders.
AM/FM radio met support voor ●
●
Elektorkaart (0 .. 30 Mhz), Pmsdr (0 .. 165 Mhz), dabsticks (24 .. 2000 MHz) voor Windows: soundcard-based Winrad-compatible dll's, Analoge en digitale modes (am ssb rtty, (b)psk, mfsk, cw, hell, amtor(b),....).
Elektorkaart (< 30 MHz), pmSDR (0 .. 165 Mhz), Dabsticks (24 .. 2000 Mhz) en Mirics dongle
64 bits set voor Windows en Linux –
FM radio met support voor Dabsticks en Mirics dongle
–
DAB radio met support voor DABsticks en Mirics dongle
–
Eenvoudige spectrumviewer
SW ontvanger
FM ontvanger
Spectrum viewer (Mirics dongle)
DAB decoder
Demo tijd ●
Demo 1: DAB: 64 bits Mode II
●
Demo 2: DAB: 64 bits Mode I
●
Demo 3: Swreceiver: 32 bits: lsb
●
Demo 4: Swreceiver: 32 bits: psk
●
SDR ●
●
●
●
50-er jaren: systemen met analoge dataverwerking, digitaal/mechanisme verwerking 70-er jaren: analoge dataverwerking met digitale backends 80-er jaren: analoge dataverwerking met digitale backends en digitale control 00-er jaren: (bijna) volledig digitale dataverwerking met digitale control
SDR ●
●
●
●
●
Er vindt dus een verschuiving plaats waarbij zo VROEG ALS MOGELIJK de analoge data omgezet wordt in digitale data, waarna de verdere bewerking digitaal is Verdere digitale verwerking kan met dedicated hardware (denk aan filteren, convolutional en Reed Solomon decoding en FFT's) of met een PC, mijn voorkeur is een PC Ultieme SDR: antenne direct aan AD converter, alle bewerking digitaal –
USRP biedt high speed AD conversie (tot in de Ghz)
–
VLF direct aan de geluidskaart (wel protectie nodig)
Meeste SDR: downconversie en analoge output voor soundcard (of externe AD converter) (“Normale” geluidskaart: tot 192KS/seconde (16/24 bits)) Duurdere SDR: downconversie en “eigen” sampler.
Eenvoudigste hardware ●
●
●
Ontwerp van Kainka: Downconversie naar Zero IF Werkt ook met 402N spoel, afstemcondensator en (bijna) willekeurige transistor Ook leuk voor de buren
Kenmerk serieuze Hardware ●
Programmeerbare VCO (bijvoorbeeld Si570 als gebruikt bij o.a. pmSDR
●
Programmeerbaar bandfilter
●
I/Q samples als output –
Hetzij analoog, dan bijv. Via de geluidskaart de computer in
–
Hetzij eigen AD converter, bijv DABstick
–
Twee oscillatoren, zelfde freq, 90 graden in fase gedraaid, bij de downconversie naar Zero IF
I/Q Samples ●
●
Nyquist: een signaal met een breedte van N Hz kan volledig worden beschreven met 2* N equidistante samples per seconde I/Q samples: –
I is de Inphase (cos) component, Q is de Quadratuur (sin) component
–
Met N (equidistante) I/Q samples per seconde kan een signaal met een breedte van N hz volledig worden beschreven.
–
6 dB per Bit
Real vs I/Q samples ●
●
Duidelijk is te zien dat bij het gebruik van “mono” samples er een spiegeling optreedt. Bij gebalanceerde I/Q samples is die spiegel weg.
Bestaande hardware ●
●
●
●
●
●
●
●
●
●
●
●
●
Pappradio Pre-built 150 kHz – 30 MHz (210 MHz using harmonics) External ADC required (I/Q output) ? USB $85 http://pappradio.de/ http://code.google.com/p/libpappradio/
Yes Yes ?
Soft66AD / Soft66ADD / Soft66LC Pre-built 2.5–30 MHz (70 MHz with Soft66ADD) External ADC required (I/Q output) 0/1 USB Yes Unofficially ? $18 http://zao.jp/radio/soft66ad/ easySDR USB Dongle Pre-built 64–1,700 MHz 48, 96 kHz 0/1 USB http://microsat.com.pl/product_info.php?products_id=35 FUNcube Dongle
Pre-built 64–1,700 MHz
96 kHz
0/1 USB
Yes No No $110
Yes Yes Yes $160
FUNcube Dongle Pro+ Pre-built 0.15–240MHz, 420-1,900 MHz 192 kHz 0/1 USB http://www.funcubedongle.com/ FiFi-SDR Pre-built 200 kHz – 30 MHz 96 kHz (integrated soundcard) 2012-09-03) http://o28.sischa.net/fifisdr/trac SDR-IQ PnP 0.1 kHz – 30 MHz 66.666 MHz http://www.rfspace.com/RFSPACE/SDR-IQ.html
1/1 ?
USB
0/1 USB
http://www.funcubedongle.com/ Yes Yes Yes $200
Yes Yes ? $150 (€120;[1] converted
Yes Yes Yes $525
SDR-IP PnP 0.1 kHz – 34 MHz 80.0 MHz 1/1 ? http://www.rfspace.com/RFSPACE/SDR-IP.html
Ethernet Yes Yes Yes $2999
NetSDR PnP 0.1 kHz – 34 MHz 80.0 MHz 0/1 ? http://www.rfspace.com/RFSPACE/NetSDR.html
Ethernet Yes Yes Yes $1,450
SDR-1 Kit and pre-built 530 kHz – 30 MHz up to 192kHz depending on soundcard 0/1 USB http://www.electronicsisfun.com/sdr-1/ website is gone Elektor SDR Kit and pre-built 30 kHz – 30 MHz Soundcard ADC: 48, 96, and 192 kHz http://www.elektor.com/magazines/2007/may/software-defined-radio.91527.lynkx
Yes No No $200
0/1 USB
Yes Yes Yes $145
Elektor AVR SDR Kit and pre-built ? ? ? ? ? ? ? $160 http://www.elektor.com/magazines/2012/march/avr-software-defined-radio-%281%29.2084135.lynkx DRB 30 Pre-built 30 kHz – 30 MHz http://www.nti-online.de/edirabox.htm
External ADC required (I/Q output) ? LPT parallel port Up to XP ? ? $390
Goedkope Hardware ●
DABsticks: –
Downconversie van 24 .. 2000 Mhz, per Hz instelbaar
–
Interne AD converter
–
Veel (schema's voor) upconverters (Ne62/605) voor 0 .. 50 MHz ==> 100 .. 150 Mhz
●
Softrock,
●
PappRadio (0.. 30 Mhz, 0 .. 210 Mhz, 85 Euro)
●
Elektor (0 .. 30 Mhz, ca 100 Euro)
●
PmSDR (0 .. 55 Mhz, 0 .. 165 Mhz, 250 Euro)
●
En nog vele anderen
Een Radio in Software
Basis softwarecomponenten ●
Aansturen hardware
●
AD/DA handling voor input/output (soundcard)
●
Frontend processing:
●
●
–
Filters en FFT's
–
Mengtrappen
–
Versterker (incl. AGC)
Baseband processing: –
Van waves naar bits
–
Van bits naar data
–
Van data naar output
Control GUI met scopes, metertjes en knoppen
Externe bibliotheken voor Linux EN Windows
●
Voor hardware control: –
Winrad compatible dll's voor Windows
–
Aanpassingen voor Linux: ● ●
● ●
Kainka had een open source Pascal prog voor de elektorkaart Voor de Si570 aansturing van pmSDR: software van Gerrit Polder, PA3BYA + bestaande software van pmSDR zelf Voor de DABsticks: osmocom Voor de Mirics: gebaseerd op Miroslav Slugen
●
Voor geluidskaart: portaudio o.i.d
●
Voor usb: libusb
●
Qt, Qwt voor GUI achtige dingen
●
FFTW voor FFT's
●
Samplerate en libsndfile voor filehandling
Software ●
Winrad: een soort oervader voor Windows software voor SDR –
Connectie met devices via “dll”.s, min of meer de standaard
–
Afgeleiden zijn (oa): ● ●
WinRadHD HDSDR
●
Rocky
●
SDR#
●
Flex Radio
●
SDR-RADIO.com
●
WRPLUS
●
PowerSDR-SR40
●
Perseus SDR software
●
En nog veel meer
Software (II) ●
Bijzonder is Gnu Radio –
Een generieke infrastructuur met honderden componenten om alle mogelijke vormen van telecomapplicaties samen te stellen
–
Componenten voor control, frontend processing and baseband processing
–
Wijd verbreid in de research wereld
–
USRP is een hardware device
Samples en de Computer ●
Input via stereo-soundcard: 48-192K –
I component via “left”, Q component via “right”
–
Samennemen tot value type “complex”
●
Aantal bits bepaalt precisie: 6 db per Bit
●
Clock wel eens een probleem
●
–
Jitter -> niet gebalanceerde I/Q waarden
–
Snelheid: 96000 of 96001?
Programmatische ondersteuning –
Portaudio (en anderen) bieden een tamelijk eenvoudige C gebaseerde API, uniform over windows, Linux en Osx.
Wat als de samples binnen zijn? ●
Samples zijn niet meer (of minder) dan getalwaarden en dus kan je – –
Bewaren in geheugen en opslaan in bestanden Alle mogelijke berekeningen: ● ●
●
●
–
Optellen en aftrekken Vermenigvuldigen met reele getallen (versterken en verzwakken, geen vermogensversterking!!!). Precisie is aandachtspunt!! Vermenigvuldigen met andere samples (met andere complexe getallen): mixen Integreren (optellen) en differentieren (aftrekken)
Weer naar een geluidskaart (output) sturen
Oscillatoren en mengtrappen ●
●
Oscillator in Software: –
Fase = fasehoek * 2 * PI / sampling speed
–
OscillatorSample = Complex (cos (Fase), sin (Fase))
–
Fasehoek = (Fasehoek + gekozen frequentie) % samplingspeed
Mengtrap in software: –
●
Outputsample = OscillatorSample * inkomend sample
Met F1 ,complex signaal, O1, een complex oscillatorsignaal geeft F1 * O1 altijd een somsignaal
Filters ●
Filters halen informatie/data weg van een samplestroom door slim data te middelen:
●
Bijvoorbeeld: output = (s1 + s2 + s3) / 3
●
Of: output = 0.9 * s1 + 0.1 * output
●
Zie bijvoorbeeld: What every engineer should know about DSP, Steven Smith
Filters (II) ●
●
Finite Impulse Response filters: –
Een gemiddelde bepalen van product van een aantal gegeven parameters en een aantal inkomende samples (convolutie)
–
Altijd stabiel, wel hoge ordes nodig voor goede steilheid
–
Max demping ca 65 dB, afh van modelkeuze
–
Bekende modellen: Hanning, Hamming, Blackman, Kaiser
Infinite Impulse Response filters: –
Een gemiddelde bepalen van product van een aantal gegeven parameters, een aantal inkomende samples en een aantal eerder berekende filterwaarden.
–
Veel lagere ordes brengen goede steilheid
–
kan (numeriek) instabiel worden
–
Bekende modellen: butterworth, chebyshev, elliptic
11-de orde filters
Filters in de sdr-j SW ●
●
●
FFT filter voor selectie subband (511 taps) Lowpass filter lagere orde bij decimeren Tweede filter (511 taps) voor selectie usb/lsb etc
●
Decoder filters
●
TIJD VOOR FILTERDEMO
Output frontend = input decoder ●
Een stroom samples, naar keuze 6 – 12 Ks/s –
● ●
Zo gekozen dat decimeren met geheel getal kan
Gefilterd!!! Koppeling decoders en frontend zo los mogelijk, klaar voor verdere decodering –
Analoog (am, fm, ssb)
–
CW
–
Een aantal andere modes ●
(B|Q)Psk, mfsk, rtty, hell, amtor (b), .....
AM Detectie ● ●
Zero IF Elimineren van de omhullende (envelope) door sqrt (I ^ 2 + Q ^ 2)
SSB decoderen
●
●
●
USB (LSB) decoding is eigenlijk het herstellen van het complete signaal door een 90 graden in fase gedraaid signaal bij het reele input signaal op te tellen (af te trekken) 90 graden draaien: Hilbert filter Een Hilbert filter is een speciaal (maar niet ingewikkeld) FIR filter.
CW decoderen ●
●
●
●
We filteren wat We tellen het aantal samples met een abs waarde groter dan een drempel We schatten continu de lengte van een dot en een dash in samples Als we de letterscheiding ook goed schatten is het terugkrijgen van letters eenvoudig
Decoderen van RTTY ●
●
●
We weten dat de fasehoek tussen opvolgende samples groter is als de frequentie hoger is Dus weten we welke samples bij een mark en welke bij een space horen en kunnen we de marks en spaces bepalen We kunnen zelfs de freq offset bepalen
Psk decoderen ●
●
●
●
We weten hoeveel samples en in een bit gaan. We pakken twee bits en synchronizeren daarop We kijken naar de fase(sprongen) om de bits te bepalen Verder: digitale bewerking van de bitrij
Toekomst ●
●
●
●
De wereld wordt steeds meer digitaal: –
Experimenteren met de PC blijft leuk
–
Moderne PC kan DAB (2048000 samples/sec, 100 FFT's per seconde, etc) goed aan
–
Met Mirics tot >> 6 Ms
MicroPC's, Raspberry etc: software moet daar zeker naar geporteerd worden (DAB draait zeker niet!!) Ofdm voor amateurbanden? Bestaat al wel, biedt zeker perspectieven Belangrijkste is dat het leuk hobbyen blijft.
Over de software? ●
Hoeveel software? –
Meeste software zit in niet-signaalverwerkende delen, bijv. Control, spectrumscopes aansturen, e.d.: ● ● ●
●
Pmsdr control 1800 regels Dabstick 940 regels (gebruikt bestaande lib) Scopes ca 1000 regels
–
Filters: paar honderd regels C++
–
FFT: geleend van FFTW
–
Oscillator: 10 regels, een PLL gemiddeld 20 regels
–
AM decoder (incl ssb) 100 regels, Rtty-decoder 706 regels, (B|Q)psk 670 regels
–
FM decoder: 7500 regels overall,
–
DAB decoder: ca 9500 regels overall
Dus al met al: valt wel mee!!!
Dank U