On Fri, Mar 20, 2009 at 10:11 AM, Brian Padalino <bpadal...@gmail.com> wrote:

> FSK is all about delta phase shifts.  If a mark is a + frequency, and
> a space is a - frequency (or vice versa, your choice), then I would
> think it would be easy to keep track of how large the deltas between
> phases were and when they happened.

A common, non-coherent method for FSK demodulation and baud rate
detection is to multiply each succeeding sample by the complex
conjugate of the preceding sample, then take the phase of the product.
 This turns the sample series into baseband "level" shifts.  If you
are at zero IF, then the sample stream will be roughly symmetrical
about zero (frequency offsets are turned into DC offsets, though).
>From here you can use zero crossings to estimate baud rate and
integration between transitions to improve noise performance.  The
success of this technique relies on sufficient zero crossing density,
and has a higher bit error rate than coherent detection and
demodulation.

GNU Radio has a block, gr.quadrature_demod_cf, that does the first
portion of this, taking a complex baseband stream, doing the conjugate
multiply and arctan, and outputting a float stream of demodulated
samples.  An example is in gr-pager, where the FLEX pager protocol's
4-level FSK is first processed by it.

Johnathan


_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to