I am currently doing a project in the area of optical inter-satellite communication (GEO-LEO).

I am using a optical carrier of 281 THz, and the Doppler shift corresponding to it is ±7 GHz. I introduced this Doppler shift in the transmitted signal $S$ as an offset like

$$ S \cdot e^{j 2 \pi f_\mathrm{doppler}} $$

At the receiver, I am using a Costas Loop as a demodulator. I have to do Doppler shift compensation to recover the signal. Guess, I have to add an offset compensator in the local oscillator.

Can anybody help me in doing this?

  • $\begingroup$ You say "have introduced this doppler shift in the transmitted signal as an offset ...". I'm guessing that you are doing this in your model, in order to model the expected shift? Are you using a reference laser to measure the Doppler shift optically? What rate of Doppler shift change do you anticipate? A 14 GHz swing might be challenging to account for in the LO, particularly if the swing is fast. The following paper includes quite a few references that might provide information on a practical solution: spbu.ru/images/avtoref/Marat-cut.pdf $\endgroup$ Jul 1, 2014 at 14:46
  • $\begingroup$ Thanks for the link. Yes, I am including the laser to measure the Doppler shift optically since it is coherent detection. The maximum Doppler shift rate is 10 Mhz/second. The only doubt I have is that whether I need to have a frequency offset compensator before the LO (which can be done very easily) or should I include it LO module (which is quite difficult I think). If it has to be done in the LO, then how? Thanks in advance. Sharma $\endgroup$
    – Seetharama
    Jul 8, 2014 at 17:02
  • $\begingroup$ Just another curious question: if a frequency offset compensator can easily be added before the LO, why consider putting that function in the LO? I am not an authority in this area. But if you are measuring the shift with a reference laser, and can account for the shift before the LO, then it would seem the best option. But there may be advantages to LO compensation that I am not aware of. Sorry, but I cannot provide help with how to do it. Please update with the answer you find. It is a very interesting subject. $\endgroup$ Jul 9, 2014 at 0:04
  • $\begingroup$ Hi! @user2338215 as of now I am compensating as Sexp(-j*2*piFdoppler) which is a child's play. I am still trying to do the Compensation inside the LO. Will post it once I come up with the answer. $\endgroup$
    – Seetharama
    Jul 15, 2014 at 9:54

2 Answers 2


I am jumping in late, and I hope that the OP received an out-of-band answer, or found their own answer.

I have a problem with the question, given the statement that the OP is using a Kostas Loop for the demodulator. By definition, the Kostas Loop is a type of phase-locked loop (PLL) in which the local oscillator (LO) frequency is adjusted until the phase error is small. At that point, the phase and frequency of the LO match the received (possibly virtual) carrier frequency. It does not seem to be meaningful to talk about adding an input to the LO to adjust the frequency, other than the error filter.

Because OPs ask good questions, the problem must be deeper, such as the signal not being strong enough (high enough signal to signal plus noise) to allow a broad enough response on the error filter to achieve lock. If this is the case, then a method of pre-compensating for the Doppler shift would be helpful. The loop bandwidth could be reduced, and lock achieved for a noisier signal.

This requires that we have a way of knowing what the proper doppler shift should be, and applying that to the LO. I think that could be hard, as it required knowledge of the positions of both the low Earth orbit and geostationary orbit satellites, both initially, and as they navigate or orbits change over time.

Because a loop has a broader tracking range when it is locked than it has an acquisition range, it may make sense to allow for a long initial lock time, knowing that over the course of an orbit the Doppler shift with take on the full range of positive and negative values. At some point, the loop will lock, and should remain locked.

As a second-order method to achieve faster re-lock if lock is lost, the error voltage could be used as a signal source for a secondary PLL that predicts the doppler shift. This would generate an estimation of the Doppler shift with a period of one relative orbit. The form of that estimate will depend on the orbital characteristics of the LEO satellite, including the orbital plane, apogee, and perigee.

The answer is to keep it simple. Wait a relatively time for a lock, and then preserve the lock.

You might need an extra hack to handle the times when the Earth eclipses the LEO. In an ad-hoc digital loop, this would take the form of freezing the loop error voltage for the expected time of an eclipse when lock is lost. I don't think the OP was asking about the eclipse case.


I think the main issue will be targeting the sat. The receiver should handle the flux in frequency based on the carrier. leading the sat target depending on how far the sat is from each other. Geo sync sates are 28k miles and signal takes 28000 / 186000 seconds to reach earth and twice that to reach back. So you have to lead the target by a few hundred yards before the sat will even pickup the focused signal.

  • 1
    $\begingroup$ You say "The receiver should handle the flux in frequency" but that is exactly what the question is about. This does not answer the question. $\endgroup$
    – Kevin Reid AG6YO
    Jan 26, 2016 at 22:27

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .