Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FSK demodulation with GNU Radio

I'm trying to demodulate a signal using GNU Radio Companion. The signal is FSK (Frequency-shift keying), with mark and space frequencies at 1200 and 2200 Hz, respectively.
The data in the signal text data generated by a device called GeoStamp Audio. The device generates audio of GPS data fed into it in real time, and it can also decode that audio. I have the decoded text version of the audio for reference.

I have set up a flow graph in GNU Radio (see below), and it runs without error, but with all the variations I've tried, I still can't get the data.

  1. The output of the flow graph should be binary (1s and 0s) that I can later convert to normal text, right?
  2. Is it correct to feed in a wav audio file the way I am?
  3. How can I recover the data from the demodulated signal -- am I missing something in my flow graph?

Flow Graph

This is a FFT plot of the wav audio file before demodulation:

FFT Plot before Demod

This is the result of the scope sink after demodulation (maybe looks promising?): Scope Sink after Demod

UPDATE (August 2, 2016): I'm still working on this problem (occasionally), and unfortunately still cannot retrieve the data. The result is a promising-looking string of 1's and 0's, but nothing intelligible.

If anyone has suggestions for figuring out the settings on the Polyphase Clock Sync or Clock Recovery MM blocks, or the gain on the Quad Demod block, I would greatly appreciate it.

Here is one version of an updated flow graph based on Marcus's answer (also trying other versions with polyphase clock recovery): enter image description here

However, I'm still unable to recover data that makes any sense. The result is a long string of 1's and 0's, but not the right ones. I've tried tweaking nearly all the settings in all the blocks. I thought maybe the clock recovery was off, but I've tried a wide range of values with no improvement.

like image 922
Evan Avatar asked Apr 27 '16 18:04

Evan


People also ask

What is the most commonly used demodulation technique for FSK?

The most used demodulation technique is the one using a PLL circuit (fig. 2). The FSK signal across the PLL input takes two frequency values. The error voltage supplied by the phase comparator follows such variations, and so, it constitutes the NRZ binary representation (high and low level) of the FSK input signal.

What is FSK demodulator?

An FSK demodulator is provided comprising means for receiving and digitizing an FSK signal (such as a signal comprising two frequencies f1 and f2 in which first and second logic states are represented by first and second periods of different durations).

How FSK modulation and demodulation is done?

FSK Demodulator There are different methods for demodulating a FSK wave. The main methods of FSK detection are asynchronous detector and synchronous detector. The synchronous detector is a coherent one, while asynchronous detector is a non-coherent one.

What is FSK in radio?

Frequency-shift keying (FSK) is a frequency modulation scheme in which digital information is transmitted through discrete frequency changes of a carrier signal.


1 Answers

So, at first sight, my approach here would look something like:

Flow graph of analysis approach

What happens here is that we take the input, shift it in frequency domain so that mark and space are at +-500 Hz, and then use quadrature demod. "Logically", we can then just make a "sign decision". I'll share the configuration of the Xlating FIR here:

Parametrization of the Xlating FIR Filter

Notice that the signal is first shifted so that the center frequency (middle between 2200 and 1200 Hz) ends up at 0Hz, and then filtered by a low pass (gain = 1.0, Stopband starts at 1 kHz, Passband ends at 1 kHz - 400 Hz = 600 Hz). At this point, the actual bandwidth that's still present in the signal is much lower than the sample rate, so you might also just downsample without losses (set decimation to something higher, e.g. 16), but for the sake of analysis, we won't do that.

The time sink should now show better values. Have a look at the edges; they are probably not extremely steep. For clock sync I'd hence recommend to just go and try the polyphase clock recovery instead of Müller & Mueller; chosing about any "somewhat round" pulse shape could work.


For fun and giggles, I clicked together a quick demo demod (GRC here):

Demod demo

which shows:

demod demo: Demonstration of demod demo demo output

like image 119
Marcus Müller Avatar answered Oct 13 '22 14:10

Marcus Müller