FSK-Demodulation, Wiederherstellung des Bit-Timings

10

Ich implementiere derzeit akustische FSK-Modulation und -Demodulation. Ich bin kein Signalverarbeiter, daher wäre jede Hilfe bei der Wiederherstellung des Bit-Timings sehr dankbar. Derzeit habe ich den Demodulator mit zwei angepassten Filtern für jeden Ton implementiert (mit einer Phasendifferenz von für nicht kohärente Erkennung). Grundsätzlich sind die Ausgänge jedes Filters Spitzen mit unterschiedlichen Amplituden. Ich habe zwei Fragen:90

  • Wie kann ich eine Bit-Timing-Wiederherstellung durchführen?
  • Was empfehlen Sie für die Präambel zur Paketsynchronisation (Chirp, Barker-Code, Golden-Code usw.)?

Ich habe den Gardner-Algorithmus gegoogelt, bin mir aber nicht sicher, ob und wie er anwendbar ist. Bedenken Sie, dass ich derzeit mit 2 Frequenzen mit einer Bitrate von 800 Bit / s unter Verwendung der Soundkarte arbeite.

Peter
quelle

Antworten:

8

Ich implementiere derzeit akustische FSK-Modulation und -Demodulation. Ich bin kein Signalverarbeiter…

Da Sie sagen, Sie haben passende Filter und Sie erwähnen die nicht kohärente Erkennung, denke ich, dass Sie bereits so ziemlich eine Person für digitale Kommunikation sind - der Schritt, eine DSP-Person zu sein, ist ziemlich klein :)

Der vollwertige Synchronisierer-SDR-Ansatz

Der klassische Weg, dies zu tun, besteht darin, die Ausgänge Ihrer beiden Filter (Größe) zu quadrieren, das Ergebnis im Tiefpassfilter auf etwas über und während / nach dem Filtern zu dezimieren (falls möglich) dass wir keine Operationen pro Sekunde verschwenden.2fsymbol,max

Ich habe mir ein schnelles FSK-Demod für ein reales Bandpasssignal gemacht (ich denke, wenn ich das noch einmal gemacht hätte, hätte ich die beiden Bandpassfilter durch ein kombiniertes Frequenzübersetzungs- und ein Tiefpassfilter ersetzt, was mir ein komplexes Basisband gegeben hätte, oder eine mehrphasige Filterbank geworfen beim Problem, aber was auch immer) in GNU Radio mit Hilfe des GNU Radio-Begleiters (Flussdiagrammdatei hier ):

FSK recv

Der Punkt ist, dass wir wahrscheinlich die Zeitsynchronisation zwischen der Teilung und dem Schwellenwertblock symbolisieren möchten. Wir könnten es später tun - der klassische Ansatz "Mikrocontroller & digitales Hardware-Design" wäre in der Tat Muller & Mueller Clock Sink und das würde dort genauso gut funktionieren - aber lassen Sie uns die Pisteninformationen nicht verschwenden.

Also würde ich hier eine mehrphasige Taktsynchronisation hinzufügen; Ich muss zugeben, dass ich dies nicht besser formulieren konnte als Tom, ein Schüler von Harris, in der Dokumentation des gleichnamigen GNU- Radioblocks :

Timing-Synchronisierer mit mehrphasigen Filterbänken.

Dieser Block führt eine Zeitsynchronisation für PAM-Signale durch, indem er die Ableitung des gefilterten Signals minimiert, was wiederum das SNR maximiert und ISI minimiert.

sincsinc(0)=1,sinc(0)=0

di[n]ixi[n]

e[n]={xi[n]}{di[n]}+{xi[n]}{di[n]}2.0 .

xi[n]xi[n]xi[n]statt nur des Vorzeichens eignet sich besonders für Signale mit niedrigem SNR.

e[n]dkdratedratedratedkdratedkdαdβdαdβgain24

Dies zu realisieren ist die Audiofrequenz

Wenn Sie diesen Block also richtig parametrieren (und wahrscheinlich den Synchronisierer reduzieren bpf_decimund lpf_decimihm mehr Spielraum für Schaltphasen geben), können Sie eine sehr stabile Wiederherstellung des Symbol-Timings erstellen, was für Ihre Anwendung völlig übertrieben wäre 😁

Da Sie an beiden Enden mit einer Soundkarte abtasten und ich nehme an, dass Sie sich nicht mit Doppler befassen müssen, hat die Symbolrate eine feste Beziehung zu den Trägerfrequenzen (z. B. hat die Sendeseite einen höheren Träger mit a Zeitraum von 8 Soundkarten-Samples, und ein Symbol benötigt immer 128 Samples (es gibt also ein festes Verhältnis). Sie können eine Abkürzung nehmen:

darctandt[n]

In Bezug auf die Paketsynchronisierung

Nun, da Sie einen funktionierenden Demodulator haben, der wahrscheinlich zu synchron ist, wenn kein Signal vorhanden ist, verwenden Sie einfach eine feste bekannte Datensequenz, um Ihr Paket zu finden.

Marcus Müller
quelle