Forum: Digitale Signalverarbeitung / DSP / Machine Learning fh-fsk demodulation


von Oz z. (ozzy)


Lesenswert?

Moin,

ich möchte eine Funkübertragung mittels FSK realisieren. Dabei wollte 
ich den Freuquenzbereich von ca. 15kHz-18kHz nutzen, wobei dies in 10 
Bereiche aufgeteilt ist (15khz=low, 15.3kHz=high; 15.6Khz=low, 
15.9kHz=high; ...) und dann in einer bekannten Hopping-Sequenz durch 
diese Bereiche springen. Vielleicht das ganze in einem weiteren 
Freuquenzbereich (18kHz-21kHz) noch parallel. Zur Demodulation möchte 
ich einen ARM-Prozessor mit knapp 600MHz verwenden, der sogar einen 
C64x+ digital signal processor (DSP) core besitzt.

Jetzt stellt sich mir aber die Frage, wie man das am besten 
algorithmisch demoduliert. Ich hatte mich früher schon einmal mit dem 
Goertzel-Algorithmus beschäftigt, da man da ja sehr schön einzelne 
Spektrallinien berechnen kann. Jetzt könnte ich natürlich, wenn ich die 
Hopping-Sequenz kenne und synchronisiert bin, einfach den Goertzel auf 
die entsprechenden zu testenden Frequenzen anwenden und sehen, welche 
Stärker im Spektrum vertreten ist. Wenn ich mich noch recht entsinne ist 
aber das mindeste N beim Görtzel gleich Abtastrate / Unterschied der 
Frequenzen, also bei 60khz => 60kHz/300Hz=200, also ca. 3.3ms. Das ist, 
denke ich mal, gar nicht so schlecht. Vom Rechenaufwand her ist das auch 
völlig ok.

Aber gibt es noch schönere Möglichkeiten dafür?

Vielen Dank für Eure Hilfe, Ozzy

von Martin L. (Gast)


Lesenswert?

Hallo,

zuerst solltest Du Dir anlesen bei welchen Symbolraten bei welcher 
Frequenzabweichung es zu keiner Intersymbolinteferenz kommt. Dann wirst 
Du merken, dass Du mit den jetzigen Frequenzen keine besonders hohe 
Datenrate erreichen wirst können.
Und dann würde ich an Deiner Stelle einen polaren Diskriminator 
implementieren (es gibt eine sehr gute Diplomarbeit dazu - google) und 
die Entscheidungsschwelle für die Bitentscheidung entsprechend der 
Hoppingfrequenz setzen.
Nachteilig ist dabei aber, dass Du Dir noch recht viel Rauschen 
einfängst. Also ggf. lieber einen BFSK Demodulator programmieren und die 
Frequenzen entsprechend dem Hoppingmuster in das (Komplexe) Basisband um 
DC heruntermischen. Stichworte sind hier Hilberttransformation und 
komplexe Mischung. Es sei denn, Du hast schon I- und Q-Kanal. Dann 
kannst Du Dir die Hilbertransformation sparen und einfach so mit 
exp(j*w*t) multiplizieren.

Viele Grüße,
 Martin L.

von Oz z. (ozzy)


Lesenswert?

Moin,

> zuerst solltest Du Dir anlesen bei welchen Symbolraten bei welcher
> Frequenzabweichung es zu keiner Intersymbolinteferenz kommt. Dann wirst
> Du merken, dass Du mit den jetzigen Frequenzen keine besonders hohe
> Datenrate erreichen wirst können.
Ja, dessen bin ich mir bewusst. Mehr als ein paar hundert bits sollen es 
ja auch ncht werden.
> Und dann würde ich an Deiner Stelle einen polaren Diskriminator
> implementieren (es gibt eine sehr gute Diplomarbeit dazu - google) und
> die Entscheidungsschwelle für die Bitentscheidung entsprechend der
> Hoppingfrequenz setzen.
Leider habe ich diese besagte Arbeit nicht gefunden. Kannst Du mir 
vielleicht einen Link hierzu schicken?

Vielen Dank, Ozzy

von Martin L. (Gast)


Lesenswert?

Hallo,

das Originaldokument findest Du unter 
www.digitalsignallabs.com/Digradio.pdf. Leider ist der Server aber 
offline. Daher habe ich es Dir auf meinen Webspace geladen. Du findest 
es  unter
http://www.martinlaabs.de/tmp/Digradio.pdf

Es ist das bisher beste Dokument was ich dazu gefunden habe weil sich 
der Autor selber Gedanken gemacht hat und nicht 1:1 aus den Lehrbüchern 
abgeschrieben hat. Und mit seinem Ansatz kann man durchaus Rechenzeit 
einsparen.

Viele Grüße,
 Martin L.

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
Noch kein Account? Hier anmelden.