# How to estimate and compensate for doppler shift in wireless signals?

I was wondering what good method(s) exist for the estimation (and subsequent compensation) of doppler shift for transmitted signals, be they acoustic or RF, in the context of comms.

The question: Specifically, if the degree of doppler shift is varying over the duration of a packet, how best to estimate (track it?) and then compensate for it. Assume we have a trainer sequence. You may also assume the signal passband BW is on the order of its carrier. (e.g, if the passband signal exists from 2500-7500 Hz, its BW is 5000Hz, as is its carrier.)

• One method I found during my research:
• Since I have a trainer sequence and know its frequency, first I estimate its received frequency.
• Next, I resample the entire packet by a ratio that is related to the speed of the wave in the medium, my known transmitted frequency, and my new estimated doppler shifted frequency.
• This works well in simulations, but the weak points are that the frequency estimation must be very accurate, and it also assumes the doppler shift is not changing during the duration of the packet.

Are there any other methods that can be utilized to solve the problem when the doppler is changing during the duration of the packet? What is the opinion of the above aforementioned method?

Many thanks!

• Do you think you can give a more concrete example? Also, have you tried the Hilbert Transform for frequency estimation? – Phonon Oct 14 '11 at 15:26
• @Phonon, are you referring to measuring the instantaneous frequency using hilbert transform?... Also, what aspect would you like more detail on? I will gladly provide. – Spacey Oct 14 '11 at 16:01
• Which software platform is best for these type of simulation such as PLL with different frequency and phase offset? – user5368 Sep 3 '13 at 18:03
• Its better to ask your question using Ask Question rather that asking it in a place which is allocated for the answer of another question. – Mahdi Khosravi Sep 3 '13 at 19:00

This is a very common communications problem. Look in a textbook for "frequency synchronization"; whole books have been written on these and related topics. The technique that you would choose is a function of the specifics of your system. There are two common sources of frequency offset:

• Differences in frequency between the reference oscillator at the transmitter and receiver. This error is usually small, depending upon the precision of the timebases available, and can be mitigated at some cost. Cheap crystal oscillators typically achieve 50 parts per million of error or better (although this does drift as the crystal ages). If you have a larger budget, you can use something like a Rubidium standard, which provides ~1 part per trillion of frequency error. A cheaper and increasingly common approach is to use a GPS receiver that has precision frequency output (typically 10 MHz). The highly accurate timebase available from the GPS constellation can be used to train the reference precisely on-frequency.

• Physical dynamics effects between the transmitter and receiver. One notable example in which this comes into play are for satellite communications applications (especially in lower orbits), where the satellite is moving (and accelerating) very rapidly relative to any observer on the Earth. The high radial velocity of the satellite toward the receiver will cause a Doppler shift, and any change in that velocity caused by its orbit will cause that shift to change over time. In applications where you have these sort of dynamics, you typically can't mitigate it much, so you're left with building a receiver that tolerates the effects.

So how does a receiver synchronize with the transmitter in these cases?

• One common approach useful for phase- or frequency-modulated signals is to use a phase-locked loop. Design of PLLs is a complex topic in itself, but in essence, they are feedback systems can be used to acquire and track phase and frequency offset while your receiver is in operation. If you only need frequency synchronization, then you can use a frequency-locked loop instead; while they will not provide phase synchronization for you, they often have better acquisition properties.

• As an alternative to a feedback loop, there are also feedforward approaches to estimating frequency or phase offset. One feedforward approach would take advantage of your training sequence to estimate the frequency error based on how the phase offset changes over the course of the sequence. If the frequency offset changes as time goes on, however, you would need to repeat the estimation procedure to allow your receiver to catch up.

• Another technique is to design your system to be robust to (reasonably small) frequency offsets. Differentially-encoded phase modulation is an example of this (although frequency error will show up as a phase offset after differential decoding, which must be handled). Frequency-modulated waveforms such as FSK also have some level of resistance to frequency offset, as long as the offset is small relative to the amount of frequency deviation used by the transmitter.

This very short summary really just scratches the surface of some of the more well-known approaches. Synchronization can be a difficult problem to solve in practical ways, and there has been much research over the years on different ways to do it. It's going to depend upon exactly how your system is structured, and one very important variable: the target SNR. There isn't a single "correct" answer. I will make one textbook recommendation; while it is very expensive, "Synchronization Techniques for Digital Receivers" by Mengali is a comprehensive text on timing, phase, and frequency synchronization.

• thanks for your answer! My case certainly falls within #2 (physical dynamics between the transmitter and the receiver). Thatr is, my receiver is moving relative to my transmitter, and my signals are CDMA. What's confusing me is that the received packet might actually be elongated or shortened in time - does a frequency tracking PLL work or not work in this case? I suppose it comes down to why can or cant I use frequency tracking methods to compensate for doppler? – Spacey Oct 14 '11 at 20:49
• Accounting for time distortion due to Doppler effects is the job of a timing synchronizer, which you would find discussed in the same texts. Structures for tracking correct symbol timing share a lot of concepts with those for frequency and phase synchronization. – Jason R Oct 14 '11 at 21:52
• I understand frequency sync can share a lot with doppler compensators, (after all, you are ultimately tracking frequency), but what if your doppler shift is very large (say, 3 Hz, relative to your carrier of say, 300 Hz?). My understanding is that one cannot use traditional freq syncs here simply because the doppler shift is too large... – Spacey Oct 14 '11 at 23:50
• It depends. For digital communications, you're usually most concerned with your Doppler shift relative to any detection integration that you're going to be doing; for example, the ratio of frequency offset to your symbol rate. If the offset is a significant fraction of the symbol rate, it must be considered. It's hard to give a universal answer; I can only reiterate that it's a function of your receiver's functional requirements. One method that I've used before is to remove bulk frequency offset on a blockwise basis (assuming it doesn't change too fast), then remove any residual with a PLL. – Jason R Oct 16 '11 at 4:55