[Top][All Lists]

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

[Discuss-gnuradio] GMSK at 768kb/sec and other good stuff

From: Eric Blossom
Subject: [Discuss-gnuradio] GMSK at 768kb/sec and other good stuff
Date: Mon, 14 Nov 2005 00:04:42 -0800
User-agent: Mutt/1.5.6i

Matt, Bob McGwier (N4HY) and I spent last week working on GNU Radio
face to face.  We got an incredible amount of stuff done, and not much

Below are some of the highlights:

(1) Brand new GMSK implementation that is running on the air at 768kb/sec
with no errors!  This was tested unidirectionally, with 1500 byte
packets, using the soon to be available Flex 400 USRP transceiver

No performance tuning has been done.  We expect to easily be able to
do 1Mb/sec.  2Mb/sec is probably within reach too.  This is all done
in software.

The implementation supports variable length packets with payloads from
0 to 4092 bytes long.  The default packet framing uses a CRC-32 to
check for errors in the payload, though other kinds of source coding
are simple to add.  All data is whitened, so there's no problem
sending string of zeros, ones, etc.  The number of samples/baud is
tunable.  The 768kb/sec rate was achieved using 4 samples/baud.  We do
clock recovery and tracking with a Mueller and Müller (M&M)
synchronizer and use the fractional resampler to interpolate between
samples.  The output of the clock recovery block is a stream of
samples at the symbol rate. The gr_message and gr_msg_queue
abstractions pass variable length packets to and from the python code.

The best place to start looking at the code are the new examples in
gnuradio-examples/python/gmsk2.  gmsk_test.py runs the tx and rx
connected together with a noisy channel.  benchmark_gmsk_tx.py and
benchmark_gmsk_rx.py are the two sides we used for on-the-air testing
between two machines with USRPs and Flex 400 daughterboards.

We've still got a bit of work to do on this, but it's looking really
good!  [Still to do: rework a bit of the USRP buffering so that we
can support discontinuous transmit operation.]

Note: I will be removing the old FSK and GMSK code and examples in the
next day or so.

(2) The rational resampler now automagically designs the appropriate
Kaiser windowed filter based on your supplied interpolation and
decimation factors.  It will resample UP or DOWN.  See
BTW, the most commonly used bessel function implementation on the net
is completely wrong!

(3) New LMS Decision Feedback Equalizer (gr_lms_dfe_ff.{h,cc}). 
We will use this after the clock recovery block to handle
multipath.  Still need to work out a "data squelch" method to keep the
taps from wandering when it's listening to noise instead of data.

(4) 3 variations on PLLs: gr_pll_carriertracking, gr_pll_freqdet and

(5) A couple of very subtle, hard to find bugs were fixed. 

(6) Lots of great discussions on the next generation USRP, phased
arrays for passive radar, satellites and ground stations, and other
cool stuff.

If you're tracking CVS, now's a good time to update and rebuild everything.

I'm sure I've left out something important!

This wouldn't have been possible without the enthusiastic efforts of
Bob and Matt!  Thanks guys!


reply via email to

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