DSP bei einem SDR

Gast #6022883
Lesenswert?

Guten Tag,

ich lese mich gerade in SDRs ein, finde aber wenig Informationen zu der 
Softwareimplementierung.

Meines Verständnisses nach sind einige Schritte zwischen Abtasten des 
Signals und Demodulation notwendig. Beispielsweise müsste doch bei einem 
SSB-Empfänger folgendes passieren?!

- AGC
- Noiseblanker
- I/Q Korrektion
- dann die Demodulation

Wenn ich nun aber beispielsweise ein AM Signal nehme, werden die 
Algorithmen doch anders aussehen.
Zumindest die AGC muss doch bei einem FM oder SSB Signal anders 
aussehen.

Kennt ihr PDFs oder Webseiten die genau auf diese Themen eingehen?

Beste Grüße,
Paul
Gast #6023204
Lesenswert?

Palk schrieb:
> Wenn ich nun aber beispielsweise ein AM Signal nehme, werden die
> Algorithmen doch anders aussehen.

Mit wirklich guter Literatur zu diesem Thema sieht es ganz schlecht 
aus. Auf der einen Seite irgendwelche wilden Bastler und auf der anderen 
Seite hochtrabende DSP-Leute, die ihre Nase so hoch tragen, daß sie die 
praktische Seite ihrer hehren Kunst garnicht mehr im Blick haben. Guck 
als abschreckendes Beispiel dir mal https://www.dsprelated.com/ an.

Aber mal ganz kurz, wie ich mir das denke:

Variante A: ADC -> FPGA -> Dezimation -> I2S -> DSP-Routinen
Variante B: I/Q-Mischer -> Tiefpass -> Audio-ADC -> I2S -> DSP-Routinen

So und bei den DSP-Routinen:
Variante SSB:
- BandFilter und Phasendrehung
- Addition oder Subtraktion von I und Q
- NF ausgeben

Variante AM:
- BandFilter ohne Phasendrehung
- CORDIC
- Zeigerlänge ist NF + DC-Offset

Variante FM:
- BandFilter ohne Phasendrehung
- CORDIC
- 1. Ableitung des Winkels ist NF + Verstimmung

Mit einem Cortex-M4F kannst du entweder 2 Festpunkt-Samples zu 16 Bit 
oder eben 1 Gleitkommasample pro Schritt verarbeiten. Für die heutzutage 
üblichen 24 Bit NF-ADC's würde sich letzteres anbieten.

Aber das wirklich mal durchzurechnen heißt, sich in die Materie wirklich 
selbst einzuarbeiten.

W.S.
Gast #6024097
Lesenswert?

Danke für eure Antworten! Das hat mir schon etwas weitergeholfen!

Ich habe allerdings noch zwei Fragen:

> Variante SSB:
> - BandFilter und Phasendrehung

Wofür die Phasendrehung? Wenn ein I/Q-Mischer benutzt wird, dann ist das 
doch überflüssig oder übersehe ich irgendetwas?

Außerdem erschließt sich mir das Thema AGC auch nicht so ganz. In den 
meisten Beschreibungen die ich gesehen habe, wurde der AGC relativ weit 
hinten in der DSP-Kette implementiert. Meiner Meinung nach müsste es 
aber so schnell wie möglich nach dem samplen passieren? Also direkt nach 
dem ADC.
Immerhin möchte ich doch wissen ob mein ADC übersteuert. Nachdem ich 
Teile des Signals herausgefiltert habe lässt sich das doch nicht mehr 
mit Sicherheit sagen?
Persönliche Seite #6024174
Lesenswert?

Palk schrieb:
>> Variante SSB:
>> - BandFilter und Phasendrehung
>
> Wofür die Phasendrehung?

Beim I/Q- Verfahren verwendet man zwei Kanäle. Zur Unterdrückung des 
jeweils unerwünschten Seitenbandes wird dabei eine Phasendifferenz von 
90 Grad benötigt. Die Phasendrehung eines der beiden Kanäle beträgt also 
+90 Grad oder - 90 Grad. (Man kann auch jeden Kanal 45 Grad drehen.)
Gast #6024329
Lesenswert?

Palk schrieb:
> Wofür die Phasendrehung? Wenn ein I/Q-Mischer benutzt wird, dann ist das
> doch überflüssig oder übersehe ich irgendetwas?

Ja. Da übersiehst du etwas ganz Wichtiges.

Ein I/Q-Mischer besteht aus 2 Mischern: einer wird sozusagen mit dem 
Sinus des Mischoszillators betrieben und der andere mit dem Cosinus. 
Eigentlich ist es nur wichtig, daß die beisen Oszillatorsignale um 90 
Grad phasenverschoben sind.

Und was brauchst du, damit ein Seitenband ausgelöscht werden kann? Klar: 
eine Phasenverschiebung von 180 Grad.

Um diese zu erreichen, muß ein weiterer Phasenversatz von 90 Grad 
zwischen I und Q hergestellt werden. Aber beachte: Diese Phasndrehung 
muß für alle im Durchlaßbereich des Filters liegenden Frequenzen 
gelten. (sonst wäre das ja viel zu einfach - gelle?)

Entweder macht man das, indem man einen Kanal nur verzögert und den 
anderen einer Hilbert-Transformation unterzieht oder indem man den 
Filterkernel so auslegt, daß er im einen Kanal +45 Grad und im anderen 
Kanal -45 Grad dreht. Das geht, aber die Berechnungsvorschrift für die 
Taps kann ich dir nicht geben, bin da selbst noch immer auf der Suche.

Vielleicht liest hier jemand mit, der das besser weiß und ne Lösung 
posten kann und will.

So. Und die so gefilterten I und Q Samples addiert oder subtrahiert man, 
wobei ein Seitenband sich auslöscht und das andere seine Amplitude 
verdoppelt. Nun, an Auslöschung ist "nur" so etwa -40dB zu erwarten - 
aber das reicht zum SSB-Empfang eigentlich aus.

W.S.
Gast #6024473
Lesenswert?

Palk schrieb:
> Außerdem erschließt sich mir das Thema AGC auch nicht so ganz. In den
> meisten Beschreibungen die ich gesehen habe, wurde der AGC relativ weit
> hinten in der DSP-Kette implementiert. Meiner Meinung nach müsste es
> aber so schnell wie möglich nach dem samplen passieren? Also direkt nach
> dem ADC.
> Immerhin möchte ich doch wissen ob mein ADC übersteuert. Nachdem ich
> Teile des Signals herausgefiltert habe lässt sich das doch nicht mehr
> mit Sicherheit sagen?

Drei Punkte:
1. bei einem Empfänger wird der ADC i.d.R. nicht voll ausgesteuert, 
sonst hast Du ja keine Reserve mehr, wenn das Signal mal stärker wird

2. die Änderungen in der Signalstärke passieren normalerweise relativ 
langsam; daher kann man sich auch erlauben mit einer langsamen Regelung 
(=AGC) nachzuführen

3. je nach Modulationsart (digital/anlog/FM/AM) mußt Du einen anderen 
Punkt in der Signalkette finden, der die Aussteuerung regelt; je weiter 
'hinten' Du in der Signalkette bist, desto näher bist Du ein Deinem 
Nutzsignal und kannst die Qualität bewerten
#6028027
Lesenswert?

Naja:

https://mriquestions.com/uploads/3/4/5/7/34572113/quad_signals_tutorial-lyons.pdf

not complicated ??

Enthält zwischendurch eine Quizfrage zur Aufheiterung, Lösung am Ende 
(scarecrow heisst Vogelscheuche)

Und wie er am Ende aus den I und Q ein demoduliertes Signal erhält 
schweigt er sich aus, wenn ich recht sehe. Da kommt nämlich noch der 
zweite Breitbandphasenschieber oder er muss irgendwoher eine 
Phasenreferenz bekommen.
#6028096
Lesenswert?

Das wird nur in sehr kleinen Appetithäppchen gezeigt, hier wenigstens 
das komplette Inhaltsverzeichnis als PDF:
https://d-nb.info/1123659397/04

anscheinend quer durch den Krautgarten, von jedem Aspekt etwas, 
Hardware, Antennen, Rauschen, digitale Bearbeitung, und die Simulationen 
mit Matlab und Octave. Geht das auch in die Tiefe?
Persönliche Seite #6028209
Lesenswert?

Hinweis für Fortgeschrittene:
Damit man nicht alles nochmal erfinden muss, hier ein paar Links auf die 
Library von Warren Pratt (NR0V)

https://github.com/g0orx/wdsp

https://github.com/TAPR/OpenHPSDR-PowerSDR/tree/master/Project%20Files/Source/wdsp

Und hier die Dokumentation:

https://github.com/NR0V/wdsp

Ich kann diese Library empfehlen, weil ich sie erfolgreich auf meinem 
RedPitaya basierten Transceiver "DiscoRedTRX" einsetzen konnte.
Gast #6028577
Lesenswert?

Christoph db1uq K. schrieb:
> Und wie er am Ende aus den I und Q ein demoduliertes Signal erhält
> schweigt er sich aus, wenn ich recht sehe. Da kommt nämlich noch der
> zweite Breitbandphasenschieber oder er muss irgendwoher eine
> Phasenreferenz bekommen.

Bedenke mal, daß old Rick mWn eigentlich kein Funkamateur ist bzw. sich 
mit realen Sende- und Empfangstechniken nicht befaßt.

Aber seinen Ansatz sollte man dahingehend beherzigen, daß man die 
gewöhnliche Formel für das sin(x)/x Filter ins Komplexe erweitert, so 
daß man erstmal Re(h) und Im(h) (also die errechneten Taps) erhält.

Das hat er ja - ohne Filter - in seiner perspektivischen Grafik schön 
gezeigt. Und als zweite Stufe muß man dann die erhaltene Raumkurve im 
gewünschten Winkel (zumeist +/-45°) um die X-Achse drehen. Da ist CORDIC 
angesagt und der daraus entstehende Real-Anteil ist dann der gewünschte 
Filterkernel, den man im Radio verwendet.

Ich habe das bloß noch nicht selber nachvollzogen, weswegen ich noch 
nicht weiß, an welcher Stelle man das Drehen erledigen sollte.
Varianten:
a) getrennt für untere und obere Eckfrequenz zwischen dem Filter und dem 
Window?
b) dasselbe, bloß nach dem Window?
c) am fertigen Filterkernel nach dem Window?

Das ist alles nur für SSB. Da ist es am ökonomischsten, den Bandpaß und 
das Drehen um 45° in einem Stück zu machen und nicht nacheinander, weil 
man ja ansonsten den doppelten Taktzeitverbrauch hat.

Für AM und FM sieht das anders aus, da sollte als Demodulator ein CORDIC 
stehen: Zeigerlänge=AM, 1. Ableitung des Winkels=FM
Hab ich allerdings selber auch noch nicht nachvollzogen, weil ich 
erstmal die o.g. Filterberechnung hinkriegen will.

W.S.
Gast #6028601
Lesenswert?

Christoph db1uq K. schrieb:

> 
https://mriquestions.com/uploads/3/4/5/7/34572113/quad_signals_tutorial-lyons.pdf

Das ist bestimmt eine der besten Kurzfassungen zum Thema I & Q. 
Informativ, launig geschrieben und nie langweilig.

> Und wie er am Ende aus den I und Q ein demoduliertes Signal erhält
> schweigt er sich aus, wenn ich recht sehe.

Du bist aufgerufen dort fortzufahren wo er aufgehört hat :)
Persönliche Seite #6028669
Lesenswert?

Wer möglichst rasch praktische Ergebnisse erzielen möchte, dem empfehle 
ich den Teensy- Convolution-SDR nach DD4WH:

https://github.com/DD4WH/Teensy-ConvolutionSDR

Er läuft außer mit Teensy 3.6 nun auch mit Teensy 4.0 .
Man sollte für das Studium des Quellcodes genügend Zeit einplanen.

Das Frontend kann man ziemlich schnell nachbauen, siehe
Beitrag "Empfänger nach DD4WH mit Fast Convolution"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren