On Thu, Oct 10, 2013 at 9:30 PM, tom sutherland <address@hidden
> I am using a Costas loop for carrier recovery with QAM16 data. The carrier
> is only 2khz. The I/Q output of the Costas loop
seems to track (the original
> sin/cos of the modulating carrier's Frequency & Phase) steadily for a long
> period (minutes) and then the Phase moves off, normally in +/- 45 or 90
> degrees in one or both of the phases. Any thoughts on why this occurs or
> how I can fix this issue?
The Costas loop is not designed to handle QAM16. It only works for
BPSK, QPSK, and 8PSK. My guess is that you are using an order 4 loop?
What's probably happening is that the symbols at the four corners of
the constellation are dominating the error calculations because they
have the highest energy. But the loop can get biased by another symbol
in the constellation that turns it to
another phase lock. The Costas
loop has no idea what the right constellation is; it's just minimizing
an error function and has probably gotten trapped in a local minimum
that your constellation presents to it.
I would suggest turning instead to the constellation_receiver block.
This allows you to specify the constellation you want it to handle.
The constellation objects
you to specify a symbol mapping to a set of complex points. There are
specialized forms of the constellations for certain known types (BPSK,
QPSK, etc.) that have more computationally efficient decision making
for any given constellation, it will at least be able
to calculate the minimum Euclidean distance between each point. Slow