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 sleep!
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 daughterboard. 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 gnuradio-examples/python/audio/test_resampler.py 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 gr_pll_refout. (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! Eric _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio