On Mar 8, 2007, at 11:31 PM, Andrew B. wrote:

Hi,

I’m trying to demodulate and decode a CPFSK signal generated by a

non-gnuradio source. I’m new to gnuradio and RF in general. I know

that GMSK is a form of CPFSK, so I started by trying that, but I

haven’t

had success. I noticed that the gmsk code is in the limbo

directory, so

I’m not sure if it’s currently in a working state.

The GMSK code should be working. if you look in /gnuradio-examples/

python/digital/benchmark_rx.py the default modulation is GMSK.

Also, as I said, I’m

new to RF, but I found it strange the the GMSK demodulation did not

appear to require a parameter specifying the frequency delta

between the

mark and space frequencies.

If I understand you correctly, you are wondering how the modulator

knows how far apart to make the 1’s and 0’s in the frequency domain,

or rather how GNU Radio knows how to do that. The answer is hidden

in the theory behind MSK (someone please correct me if this is off).

Minimum Shift Keying involves shifting the frequency the minimum

frequency distance that allow the signals to still be coherently

orthogonal (e.g. think of the difference between sine and

cosine…this can make detection of differences between bits

easier). another way to look at MSK is as a special case of FSK

where f1 - f0 = 1 / (2Tb) where Tb is the symbol period. Thus the

frequency shift is related directly to the phase shifting that occurs

every symbol period, and thus is also directly related to the phase

shifting every sample per symbol.

if you look at the gmsk.py block in /site-packages/gnuradio/blksimpl/

the line where the frequency “sensitivity” is determined is related

to all of the comments above:

sensitivity = (pi / 2) / samples_per_symbol

the sensitivity is used in the frequency modulator block as a scaling

factor k (at least that’s what its called in my text book =).

Can anyone help me out by telling me if

GMSK is what I should be using, what the current state of the GMSK

code

is, and why the GMSK code doesn’t require the frequency delta (I’m

sure

I’m not using the correct term here).

Thanks for your help.

hopefully this is a helpful start.

-Andrew

David