Cpfsk

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. 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. 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.

-Andrew

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