Vom realen zum digitalen Signal

In der digitalen Signalverarbeitung (DSP) wird ein analoges Signal durch Abtastung (Sampling) und Quantisierung digitalisiert. Um komplexe Hochfrequenzsignale effizient zu verarbeiten, verschiebt ein SDR das Signal durch Mischung (Downmixing) ins Basisband. Dabei werden die relevanten Frequenzen um 0 Hz zentriert. Alle weiteren Schritte wie Filterung, Demodulation oder Spektralanalyse (FFT) finden dann rein mathematisch auf digitaler Ebene statt.

Beispiel: Wetterdatensender DDH47
Der Deutsche Wetterdienst sendet auf 147,3 kHz Wetterdaten für die Schifffahrt (Betriebsart F1B).

Modulation: FSK (frequency Shift Keying)
Geschwindigkeit 50 Baud
Frequenzhub: +/-42,5 Hz (Shift: 85 Hz)

Bei FSK springt das Signal zwischen

147.300 Hz + 42,5Hz und 147.30 Hz – 42,5 Hz.

Auf der eigentlichen Mittenfrequenz (dem “virtuellen Träger”) wird keine Energie ausgestrahlt; sie ist im Spektrum leer. Die Energie befindet sich in den Seitenbändern.

Ein Funkempfänger, wie der KiwiSDR, erfasst ein breites RF-Spektrum. Die Abtastrate (Sample Rate) bestimmt, wie breit dieser Bereich ist.
Ein Bereich von -fs/2 bis +fs/2 wird dabei digital abgebildet.

Die Abtastrate legt fest, wie schnell der Empfänger in der Lage ist, Daten pro Sekunde zu verarbeiten und darzustellen. /

  • Höhere Samplerate = Breiterer Überblick über das Frequenzband.
  • Niedrigere Samplerate = Schmalerer Ausschnitt, was bei gleicher Rechenlast oft eine detailliertere Darstellung (höhere Frequenzauflösung) ermöglicht.

Die Verarbeitung in GNU Radio (Live vs. Datei)

Während ein Live-SDR eine einstellbare Mittenfrequenz besitzt, verhält sich eine WAV-Datei (eine “Konserve”) anders:

  1. Reelle WAV (Audio): Enthält nur Realanteile. Das Spektrum ist symmetrisch und reicht von 0Hz bis zur Nyquist-Frequenz (Samplerate/2).
  2. Komplexe WAV (I/Q): Enthält Real- und Imaginärteil. Hier sehen wir das volle Spektrum von -Samplerate/2 bis +Samplerate/2.

Im Beispiel hier (DDH47) wurde das Signal von einem WebSDR bereits von 147,3 kHz in den Audiobereich heruntergemischt. Die vorliegende WAV-Datei hat eine Samplerate von 8000 Hz.

Mit dem Tool ffprobe sehen wir, dass sie Bitrate 28 kbps beträgt. Bei 16 Bit Tiefe ergibt das eine Samplerate von 8000Hz (128.000 / 16 = 8.000).

Wird diese Datei in GNU Radio über einen Wav File Source Block in einen QT GUI Frequency Sink geleitet, sehen wir zwei Peaks bei ca. 640 Hz und 720 Hz.

Diese Frequenzen resultieren aus dem Downmixing des WebSDR-Empfängers. Die Differenz zwischen den Peaks beträgt genau die erwarteten 80Hz bis 85Hz des FSK-Shifts.
Da die Datei eine Standard-Audio-WAV ist (reellwertig), erscheint das Spektrum im Display gespiegelt, sofern man nicht nur den Bereich bis 4 kHz betrachtet.

Für ein komplexwertiges Signal (wie z.B. eine SDR-Aufnahme im I/Q-Format, die in einem kompatiblen WAV-Format gespeichert wurde) zeigt die FFT-Analyse das gesamte Band von -Sample Rate/2 bis +Sample Rate/2, zentriert bei 0 Hz. Die horizontale Achse des Spektrum-Displays geht dann von -Sample Rate/2 bis +Sample Rate/2.

Mit einem einfachen Flowchart wird die Datei ausgelesen und über QT Sink im Frequenzbereich angezeigt.

Da die wav Datei nur reale Zahlen enthält und keinen Imaginärteil, ergibt sich wie erwartet das symmetrische Spektrum,

Die Frequenzen bei 640 Hz und 720 Hz enthalten die Informationen des ursprünglichen FSK Signals. Sie liegen dort, weil der WebSDR das ursprüngliche Hochfrequenzsignal bei 147300 Hz in ein Niederfrequenz-Basisbandsignal umgewandelt hat, bevor es als WAV-Datei mit einer Abtastrate von 8000 Hz gespeichert wurde. Die WAV-Datei enthält nur dieses Basisbandsignal.



Eigentlich ist FSK eine digitale Modulationsart, bei der die Hochfrequenz direkt umgeschaltet wird. Aber:

  • Viele SDR-Weboberflächen (wie der KiwiSDR) oder Funkgeräte sind so gebaut, dass sie das Signal als Audio ausgeben, damit ein Mensch es “beurteilen” kann.
  • Dafür nutzt man den USB-Modus (Upper Sideband). In diesem Modus wird das HF-Spektrum einfach 1:1 in den Audiobereich verschoben.

Der Empfänger wurde zur Aufzeichnung des Signals so eingestellt, dass seine “virtuelle Null” (der BFO) etwa 680 Hz unterhalb der Mittenfrequenz von DDH47 liegt.

  • Die untere Frequenz 147.300Hz – 42,5Hz landet bei ca. 637,5 Hz.
  • Die obere Frequenz 147.300Hz + 42,5Hz landet bei ca. 722,5 Hz.

Bei Verwendung von IQ Daten wäre das Signal um 0Hz zentriert, Die WAV Datei erfordert ggf. weitere Maßnahmen.

Das Verschieben eines Signals von einer beliebigen Frequenz (wie hier 680 Hz) exakt auf 0 Hz nennt man Zentrierung im Basisband. In GNU Radio ist der Frequency Xlating FIR Filter (Xlating steht für Translating/Verschieben) dafür vorgesehen. Ein FIR Filter hat zudem den Vorteil, dass die Daten aus dem reellen Zahlenraum in IQ Daten konvertiert werden. Dies hat einige Vorteile bei der weiteren Demodulation.

Eine Demodulation des FSK Signals ist grundsätzlich auch mit den reellen Zahlen möglich. Man verwendet dazu z.B.

Zero-Crossing Detektor: Man zählt, wie oft das Signal pro Sekunde die Nulllinie kreuzt. Da die Frequenz bei FSK springt, ändert sich die Anzahl der Nulldurchgänge. Ein einfacher Algorithmus wandelt diese Rate in Bits um.

Diskriminator-Schaltkreis (Filter-Bank): Man nutzt zwei sehr schmale Bandpassfilter. Einer ist auf die “Mark”-Frequenz (z. B. 640 Hz) und einer auf die “Space”-Frequenz (720 Hz) eingestellt. Danach misst du bei beiden die Energie. Wo mehr Energie ist, liegt das Bit.

PLL (Phase Locked Loop): Ein lokaler Oszillator versucht, der Phase des Eingangssignals zu folgen. Die Steuerspannung, die den Oszillator nachregelt, entspricht direkt deinem Datensignal.

Diese Verfahren sind hinsichtlich Amplitudenabhängikeit, Bandbreite und Rauschen empfindlicher als die Variante über die IQ-Daten.

Im folgenden Beitrag wird ein sehr einfaches ASK Signal mit Hilfe von PySdr demoduliert. Es zeigt die notwendigen Basisschritte als Ausgangspunkt für weitere Demodulationsarten.