Thanks Tom,

I think I have it worked out now.  The sensitivity and gain parameters for
the FM Mod and Quad. Demod blocks are reciprocals of one another.  To
control deviation, in these parameters, you can just calculate Modulation
Index.  I was doing it the other way around.  The bit that made everything
make sense for me was reading that Modulation Index can be thought of as
having units of Radians.  Understanding that, the rest makes perfect sense.

So, the parameters become:

sensitivity = (pi * modulation_index) / samples_per_symbol

and on the receive side:

gain = samples_per_symbol / (pi * modulation_index)

Modulation index itself can be set explicitly or derived from a desired
deviation and baud rate:

modulation_index = deviation / (baud_rate / 2)

So, for a Minimum Modulation Index of 0.5, as is used in GMSK, the
sensitivity reduces to:

sensitivity = (pi / 2) / samples_per_symbol, just as it is in the example.

The nbfm_tx.py example is probably different because it isn't for data
transmission, but for audio, I think.

Thanks for your help!

Very Respectfully,

Dan CaJacob


On Wed, Jul 3, 2013 at 10:38 AM, Tom Rondeau <t...@trondeau.com> wrote:

> On Thu, Jun 27, 2013 at 3:54 PM, Dan CaJacob <dan.caja...@gmail.com>
> wrote:
> > We use the FM Mod and Quadrature Demod blocks to modulate and demodulate
> > GFSK packetized data.  In the past, we have used sensitivity values for
> > these blocks that were provided for us, but their meaning was opaque.
> >
> > I did some digging in the list and the web and found two prevalent
> > definitions for sensitivity from examples.  Both definitions were
> consistent
> > in saying that the Demod parameter 'Quadrature Gain' should be the
> inverse
> > of the sensitivity parameter for the Mod block.
> >
> > The competing definitions for sensitivity were:
> >
> > 1. sensitivity = (pi / 2) / samples_pr_symbol  # from
> > gnuradio/blksimpl/gmsk.py
> >
> > and
> >
> > 2. sensitivity = 2 * pi * max_deviation / sample_rate  # from
> > gnuradio/blks2impl/nbfm_tx.py
> >
> > In my own recent work, I have been using the second definition because it
> > seems to work and it gives me control over the deviation (I define max
> > deviation using modulation index and baud rate).
> >
> > However, when I attempt to use 1/sensitivity for the Quadrature Gain of
> the
> > RX, it does not seem to work, while altering the RX definition of
> > sensitivity to be 1 / (2 * pi * max_deviation / baud_rate) does seem to
> > work.
> >
> > Am I missing something fundamental about how these parameters work?
>
> Hi Dan,
>
> The quadrature_demod converts from phase/frequency modulation back to
> amplitude. So in the case of FSK signals (and let's treat GMSK as FSK
> for this), we want to convert frequency f1 into -1 and frequeuncy f2
> to +1. Also, "let's assume the system is synchronized" so that f1 =
> -fm and f2 = +fm. What you want to do is convert those frequencies to
> -1's and 1's, right? So there's some rotation around the unit circle
> that maps to this based on the number of samples per symbol you are
> using. So hopefully that explains where the pi and sps in the
> calculations come from.
>
> Hope this helps.
>
> Tom
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to