Auto-Correlation based Carrier Frequency Recovery

Started by julein 11 months ago2 replieslatest reply 11 months ago118 views

Hello all,

I'm using an auto-correlation based frequency recovery algorithm in the receiver to extract and correct the carrier frequency offset between the transmitter and receiver. I'm using a wide band signal with some repetitive pattern in the transmitter for this auto-correlation. Algorithm works very well even at very low SNR. But it fails when there is a pure sinusoidal signal (may be a single tone jammer or system LO leakage) in the the receiver path. I don't want to react to any other signal from my frequency recovery algorithm. Because from this all the remaining processing macros triggered and started to decode a wrong data. Is there any approach for this? 

I have tried to keep a cross-correlation data in the transmitter before this auto-correlation matrix. In the receiver side, I'm running a cross-correlation as first logic. From this further frequency and timing recovery macro initiated by detecting a valid peak from the cross-correlation. With cross-correlation, the energy at the peak will depend on the received signal energy. So I have to keep the very lower threshold to detect the peak at the lower SNR also. With this also, algorithm failed when a strong sinusoidal signal entered in to the receiver chain. Is there any methods are available to resolve this issue? 

Thanks in advance.


[ - ]
Reply by CharlieRaderMay 31, 2020

I need some clarification.   At the receiver you have some signal x[n] that you want and another signal y[n] which is a pure sinusoid. y[n] is unwanted. You only have w[n[] which is x[n]+y[n]. Correct so far?

You also have a known signal X[n] which is some copy of x[n] but shifted in time, in frequency and in amplitude. You are computing the cross-correlation of w[n] with X[n]. Still right?

The assumption I am making is that sum_n X*[n+m] x[n] has a sharp peak at m=M and is near zero elsewhere. Matched filter. But sum_n X*[n+m] y[n] is expected to be small for all m.  Am I still right?

If so, I have experience with the case where y[n] is large but can be suppressed. The autocorrelation of w[n] with itself should then look like a large sinusoid with an extraneous peak. You can estimate the amplitude and frequency of y[n] and either subtract it from w[n], or use a notch filter to remove that frequency and leave almost all the rest of the band unchanged, or, if you have a directive antenna you can direct it away from the source of the sinewave, or if you can control the antenna pattern put a null in the offending direction.

If the source of the sinewave is local oscillator leakage, you would almost always be better off by eliminating the problem with a physical circuit layout change rather than trying to signal process it away. Is the frequency an integer multiple of the local oscillator frequency?

[ - ]
Reply by jbrowerJune 2, 2020


Could you divide your repetitive pattern into, say 4, patterns that use different sections of your freq domain bandwidth ?  Then take a consensus ... and throw out the one that got nailed by the unwanted tone.

Normally all four would give you the same answer so something like this might also help to know had badly corrupted is the receiver path. If only 2 give the same answer then things are bad indeed.