2016-04-27 6 views
5

Ich versuche, ein Signal mit GNU Radio Companion zu demodulieren. Das Signal ist FSK, mit Mark- und Space-Frequenzen bei 1200 bzw. 2200 Hz.
Die Daten in den Signaltextdaten, die von einem Gerät mit der Bezeichnung GeoStamp Audio generiert werden. Das Gerät erzeugt Audio von GPS-Daten, die ihm in Echtzeit zugeführt werden, und es kann dieses Audio auch dekodieren. Ich habe die decodierte Textversion des Audios als Referenz.FSK Demodulation mit GNU Radio

Ich habe ein Flussdiagramm in GNU Radio (siehe unten) eingerichtet, und es läuft ohne Fehler, aber mit allen Variationen, die ich versucht habe, kann ich immer noch nicht die Daten bekommen. Also habe ich ein paar Fragen:
1) Die Ausgabe des Flussdiagramms sollte binär sein (1s und 0s), die ich später in normalen Text konvertieren kann, oder?
2) Ist es richtig, eine WAV-Audiodatei so einzugeben, wie ich bin?
3) Wie kann ich die Daten aus dem demodulierten Signal wiederherstellen - fehle ich etwas in meinem Flussdiagramm?

Flow Graph

Dies ist ein FFT-Plot der WAV-Audiodatei vor Demodulation:

FFT Plot before Demod

Dies ist das Ergebnis des Bereichs Enke nach der Demodulation (vielleicht sieht vielversprechend?): Scope Sink after Demod

UPDATE (2. August 2016): Ich arbeite immer noch an diesem Problem (gelegentlich), und kann leider immer noch nicht die Daten abrufen. Das Ergebnis ist eine vielversprechend aussehende Folge von Einsen und Nullen, aber nichts ist verständlich.

Wenn jemand Vorschläge hat, die Einstellungen für die Polyphase Clock Sync- oder Clock Recovery MM-Blöcke oder die Verstärkung des Quad Demod-Blocks herauszufinden, würde ich es sehr begrüßen.

Hier eine Version eines aktualisierten Flussgraphen ist basierend auf Marcus Antwort (auch andere Versionen mit Mehrphasen-Taktrückgewinnung versucht): enter image description here

aber ich bin immer noch nicht in der Lage Daten wiederherstellen, die Sinn macht. Das Ergebnis ist eine lange Folge von Einsen und Nullen, aber nicht die richtigen. Ich habe versucht, fast alle Einstellungen in allen Blöcken zu optimieren. Ich dachte, vielleicht war die Taktrückgewinnung ausgeschaltet, aber ich habe eine große Bandbreite an Werten ohne Verbesserung ausprobiert.
Gibt es noch etwas, das ich vermisse oder ändern sollte?

+0

Sie sollten die fft nicht verbinden sinken auf den Ausgang Ihrer Quadratur Demod, aber auf den Eingang; Dies zeigt nur die Symbolrate als Periodizität an. Die Scope-Plot der Quadratur Demod Ausgabe wäre jedoch viel interessanter. –

+0

Oh ja, ich habe gerade damit experimentiert, um zu sehen, wie das Ergebnis der Demodulation aussieht. Das Scope-Plot nach der Demodulation sah tatsächlich interessant aus, ich werde meinen Beitrag editieren, um ihn hinzuzufügen. – Bird

+0

Interessant! Ja, würde ich sagen, das ist ziemlich vielversprechend. Bei der Entwicklung von Dingen würde ich die Ausgabe einer Oszilloskopsenke nach dem Demodulator mit einer Wasserfallsenke des Audioeingangs vergleichen. –

Antwort

8

also auf den ersten Blick, mein Ansatz wäre hier etwa so aussehen:

Flow graph of analysis approach

Was hier passiert, ist, dass wir die Eingabe verwenden, verschieben sie im Frequenzbereich, so dass Marke und Raum bei + sind -500 Hz, und dann Quadratur Demod verwenden. "Logisch" können wir dann einfach eine "Zeichenentscheidung" treffen. Ich werde hier die Konfiguration des Xlating FIR Anteil:

Parametrization of the Xlating FIR Filter

bemerkt, dass das Signal zuerst so verschoben, daß die Mittenfrequenz (Mitte zwischen 2200 und 1200 Hz) endet bei 0 Hz, und dann gefiltert durch ein Tiefpass (Verstärkung = 1,0, Stoppband beginnt bei 1 kHz, Passband endet bei 1 kHz - 400 Hz = 600 Hz).Zu diesem Zeitpunkt ist die tatsächliche Bandbreite, die im Signal noch vorhanden ist, viel niedriger als die Sample-Rate, so dass Sie auch ohne Verluste abzählen können (setzen Sie Dezimierung auf etwas höher, zB 16), aber für die Analyse haben wir gewonnen. t tu das.

Die Zeit Senke sollte jetzt bessere Werte zeigen. Schau dir die Kanten an. sie sind wahrscheinlich nicht extrem steil. Für die Taktsynchronisation würde ich daher empfehlen, einfach die mehrphasige Taktrückgewinnung anstelle von Müller & Mueller zu versuchen; die Wahl einer "etwas runden" Pulsform könnte funktionieren.


Für Spaß und kichert, klickte ich zusammen eine kurze Demo demod (GRC here):

Demod demo

, die zeigt:

demod demo: Demonstration of demod demo demo output

+0

Wow! Vielen Dank für das Detail, das ein paar verwirrende Punkte gelöst hat. Aus irgendeinem Grund, wenn ich die Polyphase Clock Sync GRC benutze, sagt "Python wird jedes Mal unerwartet beendet", also versuche ich die MM Recovery Clock. Die Zeitsenke sieht jetzt wirklich vielversprechend aus. Versuchen herauszufinden, wie man die Dateisenke basierend auf [dieser Site] liest (http://gnuradio.org/redmine/projects/gnuradio/wiki/FAQ#What-is-the-file-format-of-a-file_sink -Wie kann ich Dateien lesen, die von einer Datei-Senke erzeugt werden? – Bird

+0

Aus irgendeinem Grund kann ich die tatsächlichen Daten immer noch nicht wiederherstellen. Mein Ergebnis scheint auf dem richtigen Weg zu sein, aber binäre Werte sind Unsinn. Ich kann nicht sagen, ob es meine Verarbeitung oder das Signal ist. – Bird

+0

Problem könnte nur sein, dass Sie nicht wissen, wo Ihre Byte-Grenzen sind, oder? Oder benutzen sie vielleicht eine Manchester-Kodierung oder etwas Ähnliches? Kanalcode? –