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, simple_framer: o Should be able to use arbitrary sync words of arbitrary length. o Are sync words always used? Are there other methods used as well? simple_correlator: o Should be able to use arbitrary sync words of arbitrary length. 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? bytes_to_syms: 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 select.) I should probably create a wiki page to discuss this as well. Josh -- Joshua Lackey, PhD. -- [EMAIL PROTECTED] _______________________________________________ Discuss-gnuradio mailing list [email protected] http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
