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
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
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
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
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
The output files (–log) before and after clock-recovery is in