| Passwort vergessen?
Sie sind nicht angemeldet. |  Anmelden

Sprache auswählen:

Wumpus-Gollum-Forum von "Welt der Radios".
Fachforum für Sammler, Interessierte, Bastler
Sie sind nicht angemeldet.
 Anmelden

Software Defined Radio
  •  
 1 2 3 4
 1 2 3 4
05.01.18 21:34
HB9 

WGF-Premiumnutzer

05.01.18 21:34
HB9 

WGF-Premiumnutzer

Re: Software Defined Radio

Hallo zusammen,

die wilden Schwingungen sind jetzt beseitigt, somit wartet die Hardware nur noch auf den neuen DDS-Chip, der ist noch auf dem Anflug.

Auf der Software-Seite habe ich einen ersten Versuch mit FFT für eine Panorama-Anzeige gemacht, das sieht vielversprechend aus. Die Rechenleistung reicht bei 1024 Punkten (ergibt eine Frequenzauflösung von 2kHz) für über 10 Updates pro Sekunde und ist somit voll echtzeitfähig. Der sinnvoll anzeigbare Frequenzbereich wird durch das ZF-Filter definiert und beträgt ca. 250kHz. Der Frequenzgang des ZF-Filters kann in der Anzeige korrigiert werden, indem er einmalig ausgemessen und als Referenz abgelegt wird.
Für eine saubere Darstellung braucht es allerdings noch eine "Fensterfunktion", damit die FFT korrekt wird, der zusätzliche Rechenaufwand hält sich dabei in Grenzen. Weiter kann man mehrere FFT mitteln, um das Rauschen zu reduzieren, sowie simuliertes "Nachleuchten", da gibt es noch eine grosse Spielwiese... Hier macht sich die Digitaltechnik bezahlt, analog war eine Panoramada-Anzeige ein schon fast unbezahlbarer Luxus.

Gruss HB9

!
!!! Photos, Graphiken nur über die Upload-Option des Forums.    
!!! Keine Komplett-Schaltbilder, auf denen Urheberrechte Anderer liegen!

Nicht nur den neuesten Beitrag eines Threads lesen.
07.01.18 17:23
HB9 

WGF-Premiumnutzer

07.01.18 17:23
HB9 

WGF-Premiumnutzer

Re: Software Defined Radio

Hallo zusammen,

die Software hat Fortschritte gemacht, die FFT ist jetzt fertig, inklusive simuliertem Nachleuchten. Die Frequenzauflösung beträgt ca. 1kHz (1024 Samples bei 1MHz Samplingfrequenz). Die Berechnung der FFT ist so schnell, dass aus 16 FFT gemittelt werden kann, was das Rauschen stark reduziert, und trotzdem sind ca. 4 Updates pro Sekunde möglich, die Beschränkung liegt bei der Anzeige. Weiter gibt es eine Cursor-Funktion, wo man mit dem Drehgeber einen Cursor im Spektrum verschieben kann, und durch Tastendruck wird der Empfänger auf die Cursor-Frequenz abgestimmt, eine ganz praktische Sache bei der Sendersuche.
Weiter sieht man bei Radio China international auf KW, wie dieser Sender richtig breitbandig sendet, hier hat man bei einer ZF-Bandbreite von 20kHz Hifi-Ton, schon fast UKW-Qualität, dafür braucht er Platz für zwei Sender, aber auf KW kann man sich das leisten...

Hier noch ein Bild des Panorama-Bildschirms. Die rote Linie ist die eingestellte Empfangsfrequenz, die grüne der Cursor. Eingestellt ist der Sender Europa auf 183kHz (hier ist die Modulation durch das farbige "Nachleuchten" der Seitenbänder sichtbar), schön sichtbar sind die Träger auf 198kHz (BBC), 216kHz (Monte Carlo), 225kHz (Polen, schwach) und 234kHz (Cursor, Luxemburg), sowie auf der linken Seite ansatzweise 171kHz (Marokko), 162kHz (Allouis) und 153kHz (Rumänien). Danach folgen die Steuersender und ganz links auf 100kHz ein Störer.



Gruss HB9

Datei-Anhänge
P1020076.jpg P1020076.jpg (5x)

Mime-Type: image/jpeg, 62 kB

14.01.18 17:50
HB9 

WGF-Premiumnutzer

14.01.18 17:50
HB9 

WGF-Premiumnutzer

Re: Software Defined Radio

Hallo zusammen,

hier das aktualisierte Blockschaltbild. Im Software-Teil hat sich bei der Signalverarbeitung nichts geändert, während die Hardware um eine weitere Misch- und ZF-Stufe zum Dreifachsuper erweitert wurde. Das Blockschema ist hier angehängt.

Das Antennensignal gelangt als erstes auf einen in 5dB-Schritten schaltbaren Abschwächer auf die umschaltbaren HF-Filter, welche für die Spiegelfrequenzunterdrückung und Verbesserung des Grosssignalverhaltens sorgen. Hier sind noch ein paar Versuche angesagt, um den besten Kompromiss zwischen Anzahl Filter und Empfangsqualität zu finden.
Nach den Filtern kommt ein abschaltbarer HF-Verstärker zur Erhöhung der Empfindlichkeit, vor allem bei Verwendung von kleinen Antennen oder höheren Frequenzen, wo der Störpegel kleiner ist.

In der ersten Mischstufe wird das Eingangssignal mit einem einstellbaren DDS-Oszillator auf die 1. ZF von 33.25MHz gemischt. Hier gibt es zwei Fälle: für den Lang- bis Kurzwellenbereich (0..30MHz) wird 'hochgemischt' und die Oszillatorfrequenz liegt immer über der Eingangsfrequenz. Weiter ist auch noch das 6m-Amateurfunkband (50..52MHz) vorgesehen, hier wird 'runtergemischt' und die Oszillatorfrequenz liegt unterhalb der Empfangsfrequenz (also Empfang der Spiegelfrequenz), da der DDS-Oszillator nur bis etwa 70MHz brauchbar ist. Das muss in der Software beachtet werden, da so das untere mit dem oberen Seitenband vertauscht wird.

Nach dem Mischer folgt der 1. ZF-Verstärker, der im Wesentlichen die Verluste des passiven Mischers kompensiert und das ZF-Signal mit einer Breite von ca. 2MHz vorfiltert, so dass es beim 2. Mischer keinen Spiegelfrequenzempfang geben kann.

Der 2. Mischer hat einen Quarzoszillator mit fix 30MHz und setzt somit auf die 2. ZF von 3.25MHz um, die mit einer Bandbreite von ca. 200kHz gefiltert und auf den für den ADC notwendigen Pegel verstärkt wird. Durch die Samplingfrequenz von 1MHz 'sieht' der Softwareteil eine ZF von 250kHz durch das Aliasing, die dann digital gefiltert und demoduliert wird.

Durch die Wahl der Frequenzen kommt man mit einem einzigen (genauen) 30MHz-Quarzoszillator aus, der auch als Referenz für den DDS-Oszillator (AD9851) und den Prozessor dient.

Nun müssen noch die Filter, der Eingangsverstärker, Abschwächer und DDS-Oszillator sauber aufgebaut werden, danach bekommt der Prozessor noch eine passende Leiterplatte, damit das Display effizienter angesteuert werden kann, zudem können hier auch die Spannungsregler und Signalanpassungen integriert werden.

Auf der Softwareseite habe ich noch eine Kalibrierfunktion für die Panorama-Anzeige realisiert, damit der Frequenzgang des ZF-Filters 'weggerechnet' wird und so die angezeigten Pegel relativ zueinander stimmen. Weiter habe ich an der Bedienung und Anzeige weiterprogrammiert, die nimmt immer mehr Gestalt an.

Bei Gelegenheit wird noch ein NF-Verstärker mit Klangregler gebaut. Den Klangregler könnte man auch digital realisieren, aber die Bedienung über Potis ist bequemer und die Rechenleistung kann man auch anderweitig brauchen, z.B. für Notchfilter zur Unterdrückung von Pfeiftönen.

Gruss HB9

Datei-Anhänge
Blockschema.pdf Blockschema.pdf (16x)

Mime-Type: application/pdf, 22 kB

14.01.18 20:43
Bernhard45 

WGF-Nutzer Stufe 2

14.01.18 20:43
Bernhard45 

WGF-Nutzer Stufe 2

Re: Software Defined Radio

HB9:

Bei Gelegenheit wird noch ein NF-Verstärker mit Klangregler gebaut. Den Klangregler könnte man auch digital realisieren, aber die Bedienung über Potis ist bequemer und die Rechenleistung kann man auch anderweitig brauchen, z.B. für Notchfilter zur Unterdrückung von Pfeiftönen.

Gruss HB9

Hallo HB9,

finde deine Arbeit toll, komme aber leider wegen eines ähnlichen Projektes nur gelegentlich zum Lesen. Wie sieht es denn mit dem aktuellen Ressourcenverbrauch CPU/MEM-Load auf dem Cortex aus? Ich sehe deinen roten Faden im Projekt und verstehe warum entsprechende Sachen eher in Hardware statt in Software zu realisieren sind. Das ist eine tolle Art die gerade genau im Gegensatz zu meinen Transceiver-Projekt steht. Da versuche ich alles "Software-Defined" as possible zu machen. Irgendwann wird das in einem weiteren Gerät im Direktsampling eines 30 MHz-Bereiches enden, aber da ist noch einiges an Zeit zu investieren und klar ein (kleiner) STM32 ist dann nicht mehr das geeignete Gerät. FPGA grüßt...

Mach weiter so!

Mit freundlichen Gruß
Bernhard

Zuletzt bearbeitet am 14.01.18 21:02

15.01.18 08:19
HB9 

WGF-Premiumnutzer

15.01.18 08:19
HB9 

WGF-Premiumnutzer

Re: Software Defined Radio

Hallo Bernhard,

die Signalverarbeitung 'frisst' 60% der Rechenleistung, hier gibt es also noch etwas Reserve, wobei eine Erhöhung der Auslastung dazu führt, dass der Display-Update und damit auch die Bedienung langsamer wird. Allerdings gibt es beim Display noch 'stille Reserven', denn jetzt hängt es an der Arduino-Schnittstelle, und dort sind die Pins so 'gut' verteilt, dass die 8 Bits des Datenbusses für das Display von 3 verschiedenen Ports kommen und man so jedes Bit einzeln per Software ausgeben muss. Das wird aber noch geändert. Aber viel mehr als 1MHz Samplingfrequenz liegt nicht drin, ausser man macht grössere Abstriche in der Signalverarbeitung, also schlechtere Filter. Aber genau hier liegt ja die Stärke der digitalen Signalverarbeitung, und eine Samplingfrequenz von 2MHz (mehr schafft der Prozessor sicher nicht) bringt für die analoge Seite auch nicht viel.
Speicher (RAM und Flash) hat es mehr als genug, da ist noch über die Hälfte frei. Mittlerweile habe ich noch ein FRAM spendiert, so dass die Einstellungen nichtflüchtig gespeichert werden können und so beim Ausschalten der Zustand erhalten bleibt, so wie man es sich von einem Radio eigentlich gewöhnt ist. Gegenüber EEPROMs hat das FRAM zwei wesentliche Vorteile: es altert nicht durch die Schreibzugriffe, so dass man es beliebig oft beschreiben kann, und das Schreiben geht genau gleich schnell wie das Lesen, so dass das Speichern der Daten den Prozessor nicht ausbremst und man jede Änderung ohne Nachteile sofort speichern kann.

Ein reiner SDR für Kurzwelle hätte natürlich seinen Reiz, aber bei einer notwendigen Samplingfrequenz von 80MHz oder mehr braucht es ein FPGA für die Vorfilterung und Dezimation der Samples, was die Sache verteuert, ist aber problemlos machbar. Das grössere Problem ist die A/D-Wandlung. Es gibt zwar bezahlbare Wandler mit hervorragenden Eigenschaften, aber der Takt-Jitter ist ein grosses Problem, die Qualitätsanforderungen an das Taktsignal steigen proportiional mit der Samplingfrequenz. So wird das Intermodulationsproblem einfach vom Mischer zum A/D-Wandler verschoben. Ein analoges Frontend mit Vorverstärker, Abschwächer und Filter braucht man aber trotzdem noch, man spart sich aber den Mischer samt Oszillator.

Noch zu meinem Empfänger: Auf der analogen Seite ginge auch ein Einfach-Super. Ich habe den Doppelsuper gewählt, weil man so eine erste hohe ZF wählen kann und damit eingangsseitig breitbandige Filter verwendet werden können, die nicht abgestimmt werden müssen. Bei einer niedrigen ZF geht das mit vertretbarem Aufwand nicht mehr, da die Filter zu steilflankig sein müssen und auch die Anzahl steigt entsprechend an. Andererseits werden die Daten vom A/D-Wandler mit höherer Frequenz immer schlechter, so dass dieser eine Obergrenze setzt. Ein schmalbandiges Anti-Aliasing-Filter ist für tiefere Frequenzen ebenfalls einfacher.

Gruss HB9

 1 2 3 4
 1 2 3 4
Display   Floating-Point-Signalprozessoren   Morsedekodierungskästchen   Kommunikationsschnittstelle   Samples   einfach   Initialisierungsfunktionen   Spiegelfrequenzunterdrückung   Software   Bandbreite   Prozessor   Vorwärts-Schwundregelung   Defined   Vorwärts-Verstärkungsfaktoren   Samplingfrequenz   Übertragungsgeschwindigkeit   Ausgangs-Samplingfrequenz   Mischer   zusammen   D-Wandler