Selbstbau-Projekt SDR-Tisch-Empfänger ToneSDR

Will euch hier mal mein Gerät vorstellen. Es handelt sich um einen SDR-Doppel-Super, bei dem ein DSP-Board
die Rechenarbeit übernimmt. Es gibt zwar viele Bausätze, die man nur bestücken sowie eine fertige tolle
Software auf dem PC installieren muß. Aber das war mir zu einfach. Deswegen habe ich neben der Hardware
auch die Software selber entwickelt. Der Weg ist halt das Ziel.
Die erste Version war ein Einfachsuper mit dem beliebten SI570, die aber einige Nachteile hatte: starkes Knacken
bei Frequenzwechsel, hoher Aufwand für Vorselektion, schlechte Kalibrierbarkeit zu Spiegelfrequenz-Unterdrückung,
Empfang im Mittel/Langwellen wegen Oberwellen nicht möglich. Das Problem mit dem Frequenzwechsel hatte ich
aber softwaremässig durch Gleiten der ZF/BFO-Frequenz (variable ZF) eingermassen gelöst.
Der Doppel-Super kennt diese Probleme nicht. Da mit einer relativ hohen 1. ZF von 25 MHz gearbeitet wird, ist der
Aufwand bei der Vorselektion gering (dazu später) und man kann die Empfangs-Frequenz von 0 Hz bis 30 MHz durchdrehen.

Hier ein par Bilder von dem hässlichen Gerät:

Das Gerät sieht zwar nicht so toll aus, aber es soll ja auch nur ein Studien-Objekt sein. Die Empfangseigenschaften sind
gar nicht so schlecht. Die Grenz-Empfindlichkeit (Rauschen ohne Antenne) liegt über dem gesamten Bereich von 0...30MHz
mit eingeschalteten Vorverstärker bei etwa 0.3 uV an 50 Ohm (S1). Die Großsignal-Festigkeit ist dank dem AD831
hervorragend. Die Spiegelfrequenz-Unterdrückung der 2.ZF liegt nach Kalibrierung bei besser -70dB (dazu später).

Die Empfänger-Elektronik ist auf 3 Platinen verteilt +  DSP-Board.  Das DSP-Board ist ein Sharc ADSP21489-EZ-Board
von Analog Devices, welches ich teuer erwerben musste. Als Display kommt ein EDIP240 (auch nicht billig) zum Einsatz.
Mit beiden Komponenten bin ich nicht wirklich zufrieden, da gibt es besseres und billigeres. Aber es funktioniert !

Das Zusammenspiel der einzelnen Komponenten hier grob als Block-Bild aufgezeigt:

PreSelection:

Dank der hohen 1.ZF von 25 MHz und Abwärtsmischung würde ein Tiefpass-Filter ab 30 MHz vollkommen genügen. Um die
Großsignalfestigkeit aber weiter zu erhöhen, habe ich mit Hilfe von Bandpässen den Gesamtfrequenz-Bereich in kleinere
Segmente unterteilt. Jeder Bandpass wird in Abhängigkeit von der eingestellten Empfangsfrequenz automatisch von der
Software geschaltet (über I2C-Interface). Außerdem ist ein zuschaltbarer 20 dB-Vorverstärker vorhanden um gegebenfals
die Eingangs-Empfindlichkeit erhöhen zu können. Die Filter (3 und 5polig) sind in SMD-Bauweise realisiert (mit SMD-Spulen
und Kondensatoren). Habe damit sehr gute Erfahrungen gemacht, denn die Spulen-Verluste fallen hier nicht so sehr ins
Gewicht (zusätzliche Dämpfung 3...6 dB). Die Filter-Eigenschaften stimmen ziemlich genau mit der Berechnung und Simulation
(natürlich mit ToneCirc, auch Kopplungen berücksichtigt) überein. Die Filterbänke werden über Kleinst-Relais auf der
Unterseite der Platine geschaltet. Bei einer früheren Version hatte ich die Umschaltung mit PIN-Dioden realisiert. Das hatte
aber Nachteile: Großsignalfestigkeit schlecht (Diode mischt starke Eingangs-Signale zu IM-Produkten), Störsicherheit
schlechter (über die Betriebsspannung können Störungen an den Eingang gelangen), Übersprechen, höhere Verluste.

1. Mischer

Um auf die 1. ZF von 25 MHz zu kommen, wird ein Doppel-Balance-Mixer AD831 eingesetzt. Dieser Chip hat sehr gute
Großsignal-Eigenschaften. AD gibt hier 24 dbm für IP3 an. Ich konnte noch keine Großsignal-Effekte feststellen. Selbst
bei Empfang unter 100 kHz sind keinerlei IM-Produkte von starken LW/MW-Sendern zu hören (mit PIN-Dioden im
Preselektor war das nämlich der Fall). Dafür zieht er aber eine Menge Leistung (100mA bei 9V) und erhitzt sich ziemlich
stark.
Es findet eine Abwärtsmischung statt, also DCO-Frequenz immer 25 MHz höher als die Empfangsfrequenz.

VFO:

Für den Variablen Oszillator wird der DDS-Chip AD9951 eingesetzt. Er bekommt seinen Takt vom 100 MHz Fest-Oszillator.
Aufgrund der internen Vervierfachung arbeitet dieser Chip mit einer Sample-Frequenz von 400 MHz. Bedingt durch den
14Bit-DA-Wandler und dem nachgeschalteten Image-Filter ist das Ausgangs-Signal von hoher Sinus-Qualität.
Beim Umschalten der Frequenz wird nur ein kleiner definierter Phasensprung (proport. zur Frequenz-Änderung) erzeugt.
Beim SI570 musste bei Frequenzwechsel die PLL immer neu aufsetzen, wodurch ein undefinierter Phasensprung entstand.
Deswegen das laute Knacken selbst bei 1Hz Änderungen. Im INet habe ich einige Schaltpläne mit dem AD9951 gefunden,
wo die IO-Update und Chip-Select Leitungen getrennt bedient wurden. Das ist aber überhaupt nicht notwendig, man kann
beide zusammenlegen (bei CS LH-Flanke wird das IO-Update gleich miterledigt). Die RESET-Leitung ist dagegen sehr
wichtig, da beim Einschalten des Geräts dem AD9951 undefinierte Befehle gesendet werden.

ZF-Bandpass-Filter:

Dieses Filter dient nur dazu, Mischprodukte zu verhindern, die die Oberwellen am 2. Mischer erzeugen könnten. Es
würde auch ein Tiefpass genügen, aber sollte so viel wie möglich herausfiltern. Dieses Filter ist auch komplett mit
SMD-Bauteilen (Spulen/Kondensatoren) realisiert. Die zusätzliche Dämpfung liegt etwa bei 4...6 dB. Da der AD831
eine zusätzliche Vertärkung von 12 dB macht, ist das aber kein Problem.

Teiler und 4-Quadranten IQ-Mixer:

Zu diesen Schaltungen findet man im Netz viele Beispiele. Deswegen nur kurze Auslassung: Der Teiler erzeugt aus der
100 MHz-Frequenz des Quarz-Oszillators 4 um jeweils 90° phasenverschobene Rechteck-Signale mit einer Frequenz von
25 MHz. Dank der 4:1-Teilung ist das Tastverhältniss der Ausgangs-Signale exact 50:50 % unabhängig vom Eingangs-
Tastverhältniss. Theoretisch werden dadurch alle geraden Oberwellen (50, 100... MHz) eliminiert. Mittels dieser 4 Signale
findet nun im Schalter-Mischer 74HC4066 eine IQ-Mischung der 1.ZF (25MHz+-) zur 2.ZF (24kHz+-) statt.
Die beiden Signale (I,Q) werden dann noch verstärkt und den AnalogZuDigital-Wandlern (ADC's) zugeführt.

Quarz-Festfrequenz-Oszillator 100 MHz:

Den habe ich gekauft. Er ist mit einem Metallgehäuse umschlossen. Erstaunlicherweise schwingt er genau auf der
angegebenen Fequenz von 100 MHz +- 100 Hz. Da alle Frequenzen von diesen einen Oszillator abgeleitet werden,
kann man leicht Frequenzabweichungen software-mässig herauskalibrieren. Auch die Frequenz-Stabilität ist
hervorragend (nach einem halben Jahr bei Zimmer-Temp. noch keine Nachkalibrierung erforderlich).

Netzteil/Stromversorgung:

Warum führe ich das hier noch auf ? Ist doch die einfachste Sache !
Also ich habe 5 Anläufe gebraucht bis ich das richtige Netzteil gebaut hatte. Das Problem ist nämlich, dass eine
Stromversorgung in diesem empfindlichen Empfänger folgende Eigenschaften haben muss:
- verschiedene Spannungen 9V / 6V / 5V bei hohen Strömen (für DSP-Board/Display 5V/1A)
- geringe Wärmeentwicklung
- keinerlei Störungen auf die Betriebsspannungs-Leitung, und keine Ausstrahlungen
Es ist mir natürlich nicht gelungen die beiden ersten Punkte gleichzeitig zu erfüllen. Als letzter Ausweg blieb dann nur
noch ein Schaltregler. Aber diese Dinger machen ja Störungen ! Ich habe dann den LM2576 genommen um die 5V zu
erzeugen, und siehe da: Breitbandstörungen (S8) bis in die höchsten KW-Bänder. Herausgebaut und den Eingang des 
Schaltreglers noch zusätzlich mit einem 100nF-Kondensator (SMD/Vielschicht) ganz kurz abgeblockt. Seitdem 
Friedhofs-Ruhe auf allen Bändern, keinerlei Abstrahlung mehr. 
Wenn man es richtig macht, können Schaltregler also sehrwohl für solche Zwecke eingesetzt werden. Und auf der
DSP-Board sind ja auch noch 2 dieser Schaltregler verbaut.

DSP-Software / Signalverarbeitung:

Die softwareseitige Signalverarbeitung findet im DSP wie hier dargestellt statt:

Die Software übernimmt im Wesentlichen folgende Aufgaben: Spiegelfrequenz-Unterdrückung, Filterung (Nah-Selektion),
Demodulation, Gain-Control/S-Meter sowie Steuerung der angeschlossenen Hardware-Komponenten.
Alle Filter sind als FIR-Filter algorithmiert. Mit dieser Art von Filtern lassen sich sehr genau beliebige Ampliduten/Phasen-
Transfer-Funktionen realisieren, also auch Hilbert-Transformatoren oder Korrektur-Filter.
Die Bandpass-Filter in der ZF als auch in der NF (CW) haben eine über alle Frequenzen genau gleiche Gruppenlaufzeit
machen also im Durchlass-Bereich keinerlei Phasenverzerrungen. Bei einem schmalen CW-Filter macht sich das im
Gegensatz zum Analog-Filter durch weniger Klingeln bemerkbar. Die Bandpass-Filter sind rattenscharf was mit einem
Analog-Filter nicht mal annähernd zu erreichen wäre. In der Regel kann die Qualität der digitalen Signalverarbeitung
nicht von einem analogen System erreicht werden (wenn man alles richtig macht) !!!
Man kann die digitale Signalverarbeitung verstehen auch wenn man in dieser Hinsicht kein Experte ist. Man muss auch
keine Ahnung von Programmierung haben. Einfach im Blockbild die Delay's wegdenken (die gleichen nur die Gruppen-
Laufzeit der gegenüberliegenden Hilbert-Filter aus). Dann muss man nur noch wissen, dass ein Hilbert-Filter Sinussignale
bei jeder beliebigen Frequenz um genau 90° phasenverschiebt. Mit ein wenig Trigonometrie (Additionstheoreme) kann dann
die Funktionsweise der Demodulatoren und der Spiegelfrequenz-Unterdrückung verstanden werden.
Zur Spiegel-Frequenz-Unterdrückung: Diese wird erreicht durch Phasenverschiebung des Q-Signals gegenüber dem
I-Signal und nachfolgende Addition. Das funktioniert aber nur exact wenn beide Kanäle in der Hardware absolut gleich sind.
Die Symmetrie der Komponenten für die Erzeugung der 2.ZF (Teiler, 74HC4066, NF-Verstärker, ADC's) ist leider nicht
genau genug. Das kann aber mittels eines speziellen Korrektur-Filters im Q-Zweig breitbandig herausgerechnet werden.
Deswegen habe ich eine kleine extra Software für den DSP geschrieben. Bevor diese gestartet wird, muss ein Sinus-Signal
definierter Frequenz (Signalgenerator) an den Antennen-Eingang gelegt werden. Nach dem Start dieser Software wird dann
der gesamte Frequenzbereich (0....48 kHz) sozusagen gescant und danach mit einer IFT und Windowing die FIR-Koeffizienten
für das Korrektur-Filter errechnet. Diese werden dann im Flash für die weitere Nutzung gespeichert. Dieses Korrektur-
Filter sorgt dann im Betrieb für das Herrausrechnen der Unterschiede zwischen linken und rechten Kanal über dem gesamten
Bereich von 0...48 kHz (fs = 96 kHz). Damit wird eine recht stabile Spiegelfrequenz-Unterdrückung von besser 70 dB erreicht.
Da am Eingang des Schaltermischers immer 25 MHz (1.ZF) anliegen, gilt das für den gesamten Empfangsbereich.
Das von der Spiegelfrequenz befreite Signal gelangt dann zum ZF-Filter. Dieses wird abhängig von der Modulationsart (SSB,
CW, AM, FM) , des Seitenbandes (LSB, USB) sowie Bandbreite (Narrow, Wide) bei jedem Umschaltvorgang neu berechnet
(die FIR-Koeffizienten). Die Seitenband-Unterdrückung erreicht sagenhafte 100 dB bei 100 Hz. Dieses Signal wird dann der
entsprechenden Demodulations-Einheit zugeführt. Für SSB/CW/AM1 wird das analytische Signal quadratur-gemischt mit
der BFO-Frequenz von 24 kHz. Diese Art der Mischung erzeugt absolut sauber nur die Differenz-Frequenz. Für AM2/FM
wird der Betrag des analytischen Signals berechnet, was einer exakten AM-Demodulation entspricht. Bei FM wird das
Signal vorher durch ein Rampen-Filter in ein AM-Signal umgewandelt. Zur Rechenzeit-Einsparung wird das Signal dann
dezimiert (DownSamplimg um Faktor 8), um NF-relevante Filter bzw. Algorithmen auszuführen. Dann bleibt nur noch der
Weg über den DAC und einen kleinen LP-Verstärker zu KH/Lautsprecher.
Zur AGC: Diese arbeitet multiplizierend und nicht integrierend/summierend wie in Analog-Empfängern, weshalb Sie absolut
linear (Level-Unabhängig) arbeitet. Die Regelgeschwindigkeiten können dabei beliebig und exakt eingestellt werden. Das
daraus abgeleitete S-Meter habe ich kalibriert (im Rahmen der Preselektor-Welligkeit entstehen frequenzabhängige
Abweichungen).

Empfangs-Beurteilung:

Zur Antenne: Koax-Kabel 1,50m bis zum Fenster, dann Balun (1:9) an Draht (etwa 15m) aus 10m Höhe abgespannt zur Wiese.
Störpegel: Bis Mittags S2...S4 auf allen Bändern, dann langsam ansteigend bis auf S7 (160m/80m/40m), S4/S5 (20/10m).
Störungen halten dann bis in die frühen Morgenstunden an. Schon erstaunlich wie lange viele Fernseher laufen !
Auf 160m Abends bis tief in die Nacht oft Störungen bis S9+10dB. Das muß ein Rentner-Fernseher (Plasma) sein.
Ausserhalb der Amateur-Bänder: hinundwieder lautes Klicken/Knallen vom PLC des Nachbarn.
Wie schon oben gesagt, die Grenzempfindlichkeit von 0.3 uV ist kaum ausnutzbar, da müsste man schon auf dem weiten Lande
leben.

Leiterplatten-Fertigung:

Also ich designe meine kleinen sehr filigranen Boards mittels Eagle, für die großen groben Dinger (Netzteil) nehme ich die
Software Target. Herstellung meiner zweilagigen Boards findet dann mit Laserdrucker-Ausdruck auf Folie und Belichtungs-Methode
statt. Die Board mit dem AD9951 habe ich ausnahmsweise mal herstellen lassen, mit dem 0.5mm Pitch-Abstand des AD9951
hat selbst mein Laser-Drucker (600dpi) schon Probleme. Aufgelötet habe ich aber selber (schwöre) mit der "erstmal anlöten, dann
mit Entlötlitze abziehen"- Methode mit Hilfe einer ganz normalen 1mm-Lötspitze. Und ich habe nun wahrlich keine ruhige Hand !!

Weiterentwicklung:

Ich habe noch vor, die sperrige DSP-Board als auch das nicht gerade kontrastreiche und langsame Display herauszuschmeissen.
Mir schwebt dann so ein Gumstix-Board vor, das ist sehr klein, mit einem TI-ARM-Prozessor ausgestattet und kann unter Linux/
Ubuntu betrieben werden. Ausserdem kann passend dazu gleich noch ein hochauflösendes Touch-Farb-Display dazubestellt werden.
Werde berichten !

Wer Fragen oder Anregungen hat, bitte hier Kontakt aufnehmen.

hier gehts zu Neumann's Simu-Progrämmchen