[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Early Late Prompt Correlation and Costas Loop im

From: Mir M. Ali
Subject: Re: [Discuss-gnuradio] Early Late Prompt Correlation and Costas Loop implementation
Date: Thu, 28 May 2009 06:36:30 -0500


I have another question regarding this. I sunk the output from the Costas onto FFTsink and got this. http://img172.imageshack.us/img172/9956/costasfft.jpg
Are the peaks that appear on this the lower and upper sidebands of the data signal?


On Thu, May 28, 2009 at 5:38 AM, Mir M. Ali <address@hidden> wrote:
Thanks a lot Tom for your help. I now understand how Costas loop operates. After all the tests that I did following your suggestions I was able to find the answer for a lot of my unanswered questions.

Thanks again,

On Wed, May 27, 2009 at 10:42 AM, Tom Lutz <address@hidden> wrote:
> I am using Flex-2400 boards and the received signal is ideally at baseband
> which in fact is not possible because, of various factors. Now, we have a
> signal that has a center frequency 'fc' which is not 0Hz. Assuming the
> costas to lock at this carrier I can achieve my goal. Isn't it right?

The Costas loop can lock to fc, and will output the original signal
mixed with fc (i.e. your signal at baseband), so yes is the answer.
It is worthwhile to look close at the secondary output of the Costas
loop.  This output is the frequency the loop is locked to, in radians
per sample.  If you take the real part of this output (the imaginary
is just 0), and multiply it by sampling_frequency/(2*pi) and send it
to the oscilloscope or other graphical sink, you can see what
frequency, in Hertz, the loop is locked to.  Nominally, you can try
alpha=0.01 and beta=alpha^2/4 for the phase and frequency gains,
respectively.  Try things out in simulation first.

> Can you also tell me how fmax and fmin are calculated? For example, dbpsk.py
> has fmax=0.1 and fmin=-0.1. How do we get these?

Frequency (in radians per sample) = 2*pi*(frequency) / (sample rate),
so if your carrier were 2MHz at a sampling rate of 6MHz, it would be

fmax=0.1 and fmin=-0.1 means the loop is set to lock to 0Hz (DC), with
a tolerance of +/- 0.1Radians/Sample.

Pick some margin above and below based on expected drift (say, for
example, 1.95MHz and 2.05MHz), and calculate similarly to get your
fmin and fmax.  Given that dbpsk.py has fmax=0.1 and fmin=-0.1, I'm
lead to believe that the costas loop can work at DC, in which case the
frequency would be roughly 0 and the phase would adjust to compensate
for error.

I don't consider myself an authoritative source for this stuff, as I
just started playing with it myself, but this should get you going at


Discuss-gnuradio mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]