[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] FSK performance as a function of Fd?

From: Nathan West
Subject: Re: [Discuss-gnuradio] FSK performance as a function of Fd?
Date: Sat, 15 Dec 2012 21:32:14 -0600

Hi! - response interleaved. (after some sucking at list management)

On Sat, Dec 15, 2012 at 5:48 PM, Joanna Rutkowska <address@hidden> wrote:

I've been trying to understand today how does frequency deviation (Fd)
affect the performance of FSK modulation. More specifically how can one
express required receiver sensitivity (for a given bitrate and BER) as a
function of Fd?

I used to think, apparently naively, that the larger the Fd the better
(leaving aside spectral efficiency considerations).

My understanding of FSK is that the most important factor is that the frequencies are orthogonal. It helps me to go through the math of creating the constellation points.

The basis functions in FSK are cosines at whatever frequencies your choose, let's go with binary FSK.

b1 = cos(2*pi*f1 * t);
b2 = cos(2*pi*f2 * t);

s1 = b1;
s2 = b2;

The constellation can be plotted by the zero-lag correlation of the symbols with the basis functions.

symbol1 = [integral(0, bit time, s1.*b1 ), integral(0, bit time, s1.*b2 ) ]
symbol0 = [integral(0, bit time, s2.*b2 ), integral(0, bit time, s2.*b2 ) ]

Orthogonal frequencies will be at right angles (obviously), anything else will have an angular distance less than 90 degrees, which means they are "closer", so probability of bit error is worse.

Orthogonal is basically equivalent to having an integer number of cycles in the bit time. 

So Fd is not so important, but orthogonality is. Somewhat counter-intuitive, but try giving the math a shot and playing with it in whatever software you use for this kind of stuff (octave, matlab, python, whatever).

Here's something that I threw together in Octave pretty quickly. http://pastebin.com/TMMDASST

Changing f2 to a decimal will cause non-integer number of cycles for the 2nd symbol, and you can see the angle change. It might help to make the time array something more useful, but hopefully it's good enough to see the concept.

However, I've found
this paper from Atemel:


Copy/paste error, so I'll comment on what I thought of when I read this.
Granted I've only read a couple of textbooks with discussions on FSK I've only seen P(BE) plots and the like focusing on E_b/N_0. The equations they give will assume that the symbols are orthogonal.
... which shows that, for a given receiver (and other modulation params)
there is a value for Fd that maximizes the performance of the receiver
(see Figure 9-2).

Unfortunately I was unable to find any more generic discussion on how to
choose optimal Fd for a given receiver.

I think as long as Fd will cause an integer number of cycles in the bit time, you're in business.
I would also appreciate any suggestions as how to use USRP+gnuradio for
evaluation of a 3rd party FSK link? I.e. I have a TX and RX units
talking to each other, and might want to use USRP to introduce
"controllable noise" so that I could observe how my link performs (in
terms of BER)?

Hopefully someone else can help you with this, because I can't :-)

Discuss-gnuradio mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]