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
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.
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?
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.)
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.
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
>...Phasendifferenz von 90 Grad benötigt
nein, 2*90 Grad die man durch zwei 90 Grad Phasenschieber erreicht. Eine
Auslöschung des unerwünschten Seitenbands geht nur mit insgesamt 180
Grad.
Mal in der Suchmaschine deiner Wahl nach
"iq complex but not complicated"
suchen. gibts auch auf Deutsch.
Und zum experimentieren rtl sdr und gnuradio oder selber coden :P
Ist ein geiles Thema, aber nicht so einfach wie ne LED zum durchbrennen
zu bringen.
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.
Ich fand dieses Buch sehr hilfreich:
https://www.springer.com/de/book/9783662532331
Mit dem Buch bin ich von 0% bis fertige Implementierung gekommen. AM,
SSB usw. sind ja nur mathematische Abwandlungen in der
Demodulationsstufe.
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?
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.
DH1AKF W. schrieb:> Ich kann diese Library empfehlen...
Du weißt aber, daß das ein ziemlich fetter Brocken ist, bei dem man es
schwer hat, überhaupt durchzukommen.
W.S.
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"