[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Question about carrier syncronization fordemodula
Re: [Discuss-gnuradio] Question about carrier syncronization fordemodulating QPSK/BPSK signal.
Thu, 1 Jun 2006 12:10:52 -0700
On Thu, Jun 01, 2006 at 08:54:28AM -0400, Tom Rondeau wrote:
> Eric and my team at Virginia Tech just got done creating a full
> differentially encoded QPSK transceiver. There's still a bit left to be done
> on it, but the basic building blocks should all be checked in by now. For
> carrier synchronization of a QPSK waveform, we use the classic fourth order
> Costas loop approach, a block you can find as gr_costas_loop_cc. Set the
> alpha value somewhere around 0.005 - 0.05 to get started (and play with it
> from there). The beta value should be about an order of magnitude smaller
> (it's been set to 0.25*alpha^2; I'm not sure where that comes from, though).
> The next two arguments are the max and min frequency deviation in terms of
> scaled frequency, so 0.05 and -0.05 work well. The final value of the
> reference phase can just be set to 0. This block's been around for a bit of
> time and used in BPSK.
> >From here, you'll need to worry about symbol synchronization. We build a
> complex modified Mueller and Muller clock recovery circuit for this called
> gr_clock_recovery_mm_cc (this file existed already, but we modified it
> some). Set mu=0.05, omega is approximately the samples per baud,
> gain_mu=0.05, gain_omega=0.25*mu^2, and omega_rel_limit=0.5. These values
> will get you started.
> There are other blocks available now to do differential encoding and
> decoding to handle the phase ambiguity generated by the Costas loop (the
> final constellation can be in any one of 4 rotations). In the GMSK2
> examples, I know the benchmark_xpsk_tx.py generates the differentially
> encoded QPSK signal. If not there yet, soon the benchmark_xpsk_rx.py should
> do the synchronization and differential demodulation once a few more things
> are worked out.
There are still a few things to finish rearranging, then we should
have a good QPSK (and most likely BPSK) implementation.
I've refactored the GMSK code to use (and test) some of the new
ideas. Stay tuned...