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
http://www.arrl.org/arrl-handbook-2019 schon die 2018 Ausgabe hat SDR-Erklärungen, die sind aber ziemlich basic. da spezielleres http://www.arrl.org/software-defined-radio Wobei das alles eher für Praktiker als für Theoreticker ist.
Ein komplettes, funktionierendes SDR Programm, einschließlich Quellcode und Hardware- Infos findest Du hier: https://github.com/DD4WH Ich habe diesen Empfänger erfolgreich nachgebaut: http://wkiefer.de/x28/DD4WH_RX.htm
:
Bearbeitet durch User
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?
:
Bearbeitet durch User
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.
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.
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 :)
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"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.