Automatic Frequency Correction AFC in DSP

Started by mukul 6 years ago7 replieslatest reply 6 years ago643 views

AFC is much discussed topic in this forum and I tried to search my question but couldn't find exact one so here it goes.

I need to know ways and means find out Carrier frequency offset using baseband discrete samples with minimum processing involved.

Basically I have down-converted my signal from carrier to baseband (its a M-PSK or M-FSK signal) and passed it through ADC to have 4x symbol rate discrete samples in my baseband DSP (actually a microcontroller which cant do much fancy stuff and runs very slow with filtering stuff).

Now if the carrier used for down conversion was not exactly the transmitted carrier but lets say somewhere around 100 ppm (which means I could be 100 hz error for 1 MHz carrier at max) but there is no way to find it out and build a analog circuitry (like costas receiver etc.) to fix in analog domain itself. There is no FPGA either between baseband and RF.

Assuming that knowing how much to adjust the Rx PLL I can retune it at run time I want to know the algorithm/method to find it out using baseaband samples itself in following conditions:

1. In case I don't know any info other than symbol rate and sample rate (4x) of the baseband signal.

2. I know that somewhere in signal some known preamble information reside.

Just to add I am not talking about finding out synchronization position of the burst start (which I am able to do using preamble correlation)

[ - ]
Reply by SlartibartfastOctober 22, 2018

Much depends on the type of signal.   Analog or digital?  Single or multi-carrier?   PSK?   MSK?  QAM?  Something else?   Coherent or differential?

If there's a preamble, that can often  be used to get coarse and fine frequency estimation, but the preamble must be known.

Your question is a bit too broad to give much of an answer.

[ - ]
Reply by fred_harrisOctober 22, 2018
WPMC_2010_BE_Filters_5 .pdf

There are a number of ways to estimate small frequency offsets... most traditional one is to first perform time estimate then sample output of matched filter, performs signal detection, form conjugate product of input and output of detector , arc-tan the angle and let this operate PLL to lock detected phase offset...

Second most common is use band edge filter... see papers and matlab demo



fred h

[ - ]
Reply by kazOctober 22, 2018

Hi Fred,

Thanks for the post. 

I got quite interested in your idea of sideband filters for frequency offset and timing and went through some work using my own models of Tx QPSK.

I am sorry to say but the result was failure... 

I therefore, assume this concept is at research stage and not used practically. I am saying that because I was involved in front-end receivers designs for qpsk/16qam and was aware of industry methods which are basically data based tracking of both frequency centre/phase and sampling time.

Please correct me if wrong and would like any more information in this technique.


[ - ]
Reply by mukulOctober 22, 2018

Baseband signal is M-fsk or M-psk signal.

I am not sure by coherent or non-coherent as I already discussed that I know carrier frequency but nothing else.

[ - ]
Reply by SlartibartfastOctober 22, 2018

Knowing the modulation lets you plan based on what else will be in the receiver.   For a PSK signal there will be a phase detector and, if it is a coherent receiver, a PLL, that can be used as fred mentioned to feed a frequency correction system.  

e.g., in a coherent PSK system the sign of the integrator in the carrier PLL loop filter will tell the direction of the frequency offset.   A slow correction loop that drives based on that sign will work, and when the integrator is zero or very small the frequency error will be zero or very small.

[ - ]
Reply by dudelsoundOctober 22, 2018

I think googling these key words might get you going:

Timing Recovery

Early-late gate

Mueller and Muller

Gardner algorithm

Regards (that's not a key word :)

[ - ]
Reply by jmarceloldOctober 22, 2018

To reduce the computation intensity, I would first do the symbol time recovery using a feedback strategy, because they are usually less computationally intense than feedfoward strategies. Gardner algorithm is an option for QPSK and BPSK modulation. Then, after reducing the sample rate to one sample per symbol, I would go for the frequency, phase, frame offset estimation. This time you could use a feedfoward strategy that use the preamble information, since you have reduced your sample rate. There are algoritms that computes  frequency, phase and frame offset using a single convolution. Google for frequency and phase synchronization in burst signals, or data aided frequency phase estimation, something like that.

For instance, imagine if you do a correlation between your preambule at one sample per symbol, with a copy of it with an unknown frequency, phase and time offset. This time offset in multiples of symbol period. Once your get a maximum correlation amplitude you may check the phase of the correlation to get the phase offset. The frequency offset can be computed by checking the phase offset variation. This can be measured with consecutives preambules or with a single preambule by spliting its correlation in two parts.