Tom Rondeau wrote: > Martin Dvh wrote: > >> Tom Rondeau wrote: >> >> >>>> -----Original Message----- >>>> From: Martin Dvh [mailto:[EMAIL PROTECTED] >>>> Sent: Monday, January 29, 2007 4:37 PM >>>> To: Tom Rondeau; gnuradio mailing list >>>> Subject: Re: [Discuss-gnuradio] QAM, carrier tracking and clock >>>> recovery >>>> >>>> Tom Rondeau wrote: >>>> >>>> >>>> >>>>>> -----Original Message----- >>>>>> From: [EMAIL PROTECTED] >>>>>> [mailto:discuss- >>>>>> [EMAIL PROTECTED] On Behalf Of Martin Dvh >>>>>> Sent: Sunday, January 28, 2007 6:15 PM >>>>>> To: gnuradio mailing list >>>>>> Subject: [Discuss-gnuradio] QAM, carrier tracking and clock recovery >>>>>> >>>>>> Hi All, >>>>>> I am trying to build a working QAM modulator/demodulator, based on >>>>>> the >>>>>> existing BPSK/QPSK code. >>>>>> >>>>>> Is the Mueller and Muller clock-recovery as used in the current QPSK >>>>>> examples also usable for QAM? >>>>>> >>>>>> I couldn't find a good description of the algorithm or the >>>>>> parameters. >>>>>> >>>>>> For clock recovery the only options I found on the net which are >>>>>> >>>> >>>> supposed >>>> >>>> >>>> >>>>>> to work for QAM are modified early/late tracking and modified >>>>>> zero-crossing. >>>>>> Has anybody any info on this? >>>>>> >>>>>> I am also looking for the best option for carrier-tracking. >>>>>> For QAM there are special requirements for carrier-tracking and >>>>>> clock- >>>>>> recovery. >>>>>> A simple costas loop will not do for carrier tracking. >>>>>> >>>>>> This is what I have so far: >>>>>> >>>>>> For now I implemented a to-the fourth-power PLL for carrier tracking. >>>>>> (PLL locks to the fourth power of the input, output is divided by >>>>>> four) >>>>>> This is supposed to work for all QAM versions and should NOT >>>>>> suffer from >>>>>> catastrophic collaps when the BER gets too high. >>>>>> (The other option. Decision based carrier-tracking does suffer from >>>>>> catastrophic collaps.) >>>>>> The disadvantage is the long time before lock. >>>>>> >>>>>> For clock-recovery I am trying to use the existing clock-recovery. >>>>>> >>>>>> I am fiddling with the parameters and I do get a non-very-stable but >>>>>> recognisable QAM constellation as output of the clock-recovery when I >>>>>> >>>> >>>> use >>>> >>>> >>>> >>>>>> a >>>>>> very slow timeconstant for my PLL. >>>>>> No packets get through yet, I think because the PLL only locks >>>>>> after a >>>>>> >>>> >>>> lot >>>> >>>> >>>> >>>>>> of symbols are missed and the constellation is not very stable. >>>>>> >>>>>> The output constellation of the output of the clock-recovery now >>>>>> can be >>>>>> seen in: >>>>>> http://www.olifantasia.com/projects/gnuradio/QAM/screenshots/ >>>>>> The output files (--log) before and after clock-recovery is in >>>>>> http://www.olifantasia.com/projects/gnuradio/QAM/ >>>>>> >>>>>> greetings, >>>>>> Martin >>>>>> >>>>> >>>>> Martin, >>>>> >>>>> I've been doing a bit of work on this problem and have two developer >>>>> branches open for this. In branches/developers/trondeau/digital-wip >>>>> you >>>>> >>>> >>>> will >>>> >>>> >>>> >>>>> find QAM modulator code; I have transmitted this and received it on my >>>>> Signature signal analyzer and see the perfect constellations. The code >>>>> >>>> >>>> also >>>> >>>> >>>> >>>>> performs Gray coding on the constellation. This code only has the QAM >>>>> modulator side and no demodulator. This should be very quick to >>>>> work up, >>>>> >>>> >>>> and >>>> >>>> >>>> >>>>> it sounds like you might already have it. >>>>> >>>> >>>> Yes, I already have similar working code. >>>> >>>> >>>> >>>>> In branches/developers/trondeau/digital-wip2, I've been doing >>>>> >>>> >>>> modifications >>>> >>>> >>>> >>>>> on the MPSK receiver and implementing D8PSK. This work is almost >>>>> >>>> >>>> complete >>>> >>>> >>>> >>>>> and will be merged into the branch soon. I would look the >>>>> >>>> >>>> 'gr_mpsk_receiver' >>>> >>>> >>>> >>>>> block code from now on. It's decision-aided and does the Costas >>>>> loop and >>>>> >>>> >>>> M&M >>>> >>>> >>>> >>>>> (a modified version) at the same time and improves the DQPSK >>>>> reception. >>>>> >>>> >>>> Do you have any links for a desciption of the MM algorithm and its >>>> parameters and/or performance. >>>> >>> >>> Yep, and it's in the code ;) If you look at gr_clock_recovery_mm_cc.h, >>> there's a reference to a good receiver book that goes over the basic M&M >>> loop. In my developer branch, gr_mpsk_receiver_cc.h has a link to a >>> paper >>> with a modified M&M loop implemented here. >>> >> >> Thanks, but I was hoping for some info which doesn't require an IEEE >> subscription or buying a book. >> (Free as in Beer) >> >> But I will just try to grasp it by staring at the code a little longer. >> That usually has on of two results: >> I get it >> I don't get it. I start writing my own algorithm. After much tweaking >> I end up with the original algorithm, but now I know why. >> >> Greetings, >> Martin > > > Ah, sorry, life a the university spoils me sometimes. I don't have a > good one to recommend off hand, but here's Mathwork's man page: > http://www.mathworks.com/access/helpdesk/help/toolbox/commblks/ref/index.html?/access/helpdesk/help/toolbox/commblks/ref/muellermullertimingrecovery.html&http://www.google.com/search?q=mueller+and+muller&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official > > > Hopefully, it's a place to start, though it gives you very little insight. > > Tom > > You might find my benchmark_rx_oscopy.py and kinda working qam16 code interesting. they are in branches/developers/nldudok1/digital-wip3 which is a branched version of your digital-wip2 look in branches/developers/nldudok1/digital-wip3/gnuradio-examples/python/digital/ and branches/developers/nldudok1/digital-wip3/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc and branches/developers/nldudok1/digital-wip3/gnuradio-core/src/python/blksimpl
benchmark_rx_oscopy.py gives you a live constellation view (put it at X-Y mode manually with the rightmost pulldown) and live tweaking of parameters greetings, Martin _______________________________________________ Discuss-gnuradio mailing list [email protected] http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
