I am working in burst QPSK demodulator. I just want to double check if what I am doing is right.

  1. Large frequency feedforward recovery by FFT
  2. Carrier recovery Costas with 4 samples/symbol
  3. Timing recovery with interpolation and matched filter using feedback control

So 4 samples/symbol goes to interpolation filter and after matched filter 2 samples/symbol is used for Gardner timing 4 symbol recovery.

Will the steps I have followed work?

enter image description here

  • $\begingroup$ your 3. step isn't that clear. Could you maybe add a block diagram? $\endgroup$ – Marcus Müller Dec 17 '19 at 19:41
  • $\begingroup$ Output of carrier recovery will go to interpolation control. Then in goes to matched filter with 4 samples/symbol. Output 2 samples from matched will go to TED then it goes to loop filter. Then output of loopfiltrr will loop back to interpolation control at 1 sample/symbol. Nancy $\endgroup$ – nancy Dec 18 '19 at 0:29
  • 1
    $\begingroup$ I don't see any problem with this but you can also do carrier recovery using your 1 sample/symbol just prior to decision using techniques I describe in this post dsp.stackexchange.com/questions/17297/… since the Gardner will do timing error detection with a relatively large carrier offset. I agree with Marcus that a block diagram would be helpful to get better feedback, and more clarity on what your concern is with your approach. $\endgroup$ – Dan Boschen Dec 18 '19 at 2:01
  • $\begingroup$ I have uploaded the image please let.me know if it is right. S in the image stands for symbol rate. $\endgroup$ – nancy Dec 18 '19 at 9:12
  • $\begingroup$ @nancy just seeing your updated drawing now. The Gardner TED works better before the matched filter since there will be less zero crossing jitter, so I would suggest moving the matched filter to after the timing recovery loop. Also the Gardner TED can work in the presence of large frequency offsets (up to +/-1/4 the symbol rate with no issue) so you can also do carrier recover after with loops that work on the 1 sample/symbol waveform thus reduced processing with better performance given the prior filtering. $\endgroup$ – Dan Boschen Sep 13 '20 at 23:19

They will work as you show but you can filter and decimate to 2 samples per symbol followed by resampler and TED if your carrier offset is reliably less than $S/4$ where S is the symbol rate (it will work with offset beyond that but with possibly unacceptable degradation) and after than matched filter at 2 samples per symbol with and you can use the pre-decision 1 sample per symbol samples for carrier recovery. The performance of the TED is better prior to matched filtering typically (the zero crossing jitter is less) unless you do additional prefiltering for timing recovery. The TED works well with large carrier offsets hence you need not do carrier recover first. Another option if your carrier loop bandwidth allows the additional loop delay is to do the complex rotator to correct for carrier offset before the interpolator while still doing the phase measurement on the final pre-decision samples so the TED operates with 0 carrier offset, but I would only consider this when dealing with much larger carrier offsets.

(Also I think your block labeled “DDS” is really an “NCO”; a DDS is the cascade of an NCO with and D/A converter)

  • $\begingroup$ Hi Dan, so u mean i should use nested loop carrier recovery outer and timing recovery inner or vice versa so that carrier recovery will work at 1 sample / symbol. If my symbol rate is say 200 kbps and if carrier offset is .25*200 = 50 khz then i can use 2 samples/symbol.so probably carrier recovery always works at 1 sample per symbol. But nco inside carrier recovery may work at higher rate. And u mean to say matched filter should be after timing recovery. And also should i stop carrier and timing recovery between bursts as there is no carrier between bursts. $\endgroup$ – nancy Dec 18 '19 at 15:31
  • 1
    $\begingroup$ I would not recommend nested loops unless the carrier offset could be greater than $S/4$ as the Gardner will work fine with small offsets. As I wrote the performance of TED is better prior to the matched filter in most cases but you can confirm by evaluating the eye diagram and in particular the zero crossing jitter in your waveform at the different alternative locations where you want to consider using it. $\endgroup$ – Dan Boschen Dec 18 '19 at 15:39
  • $\begingroup$ If your loops can “flywheel” then you may be better keeping them running between bursts to speed up acquisition in subsequent bursts. Loops that flywheel use discriminators that produce zero error with no input. If they don’t I would blank the error but keep the clocks running at the same rate when the error was blanked. $\endgroup$ – Dan Boschen Dec 18 '19 at 15:41
  • $\begingroup$ Sorry to bother again. If my carrier offset is high i may go with feedforward fre correction by fft based followed by nested carrier and timing loops right? What are discriminators ? $\endgroup$ – nancy Dec 18 '19 at 15:57
  • $\begingroup$ Hi Nancy- We should avoid long discussions here or complete design support, it is really meant for concise Q&A. Just post new questions as you come across difficulties after researching yourself. A discriminator is the detector for the units being corrected in a loop (phase detector, frequency discriminator etc.). But did we answer your question as you posted it? If so please check this off as answered or leave it unanswered if you are looking for a better answer that someone else can submit. $\endgroup$ – Dan Boschen Dec 18 '19 at 16:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.