[Top][All Lists]

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

[Discuss-gnuradio] GMSK, simple_framer, simple_correlator

From: Joshua Lackey
Subject: [Discuss-gnuradio] GMSK, simple_framer, simple_correlator
Date: Fri, 4 Mar 2005 11:27:56 -0800
User-agent: Mutt/

I recently wrote a GNU Radio signal processing block which implements
GMSK modulation and demodulation.  It turned out to be extremely easy
and only required gluing already existing GNU Radio primitives together.

I've placed my code and a brief explanation of it at
http://noether.uoregon.edu/~jl/gmsk.  I've taken the liberty of adding
the GNU Radio copyright to all the files so that Eric can add the module
to gnuradio-core/src/python/gnuradio/blksimpl and the test programs to
gnuradio-examples if desired.

I'd like feedback on my module.  Any obvious errors?  Can it be
optimized?  I'll make a GMSK page on the wiki so anyone who is
interested can comment.

The input to my GMSK modulation module is a stream of unsigned char and
the output is the GMSK modulated signal at baseband.  Demodulation takes
a GMSK modulated signal at baseband and outputs a stream of unsigned
char.  To do this, I had to use simple_framer, simple_correlator and
bytes_to_syms.  While these primitives are just fine for quickly testing
modulation methods, it quickly became apparent that we need something
more generic.

Before I rush off and start to construct a more flexible alternative, I
figured I should ask the group what a more generic "framer" and
"correlator" should do.  (Heck, are the names "framer" and "correlator"
generic enough?)  Eventually I'd like a C++ class which encapsulates
everything these types of blocks do.

There are some obvious changes that need to be made to these blocks.
For example,


        o Should be able to use arbitrary sync words of arbitrary
        o Are sync words always used?  Are there other methods used as


        o Should be able to use arbitrary sync words of arbitrary
        o Should be able to partial match the sync word.  E.g., say
          there is a 64 bit sync word but you only correctly receive the
          last 32 bits.  It should still be possible to attempt to
          decode the data block.
        o The method to identify the sync word and to find the center of
          the bit sample should be selectable.  What other ways are
          there to do this?


        o Should be able to select "differential encoder" mode.
        o Should be able to select number of bits per symbol.
        o Should be able to select mapping between bits and symbol.
          (E.g., can do 8PSK or pi/4-QPSK depending on option you

I should probably create a wiki page to discuss this as well.


Joshua Lackey, PhD. -- address@hidden

reply via email to

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