Forums

Carrier recovery for FSK demodulation

Started by steffen March 9, 2005
Hi everbody,

I'm new in the field of "synchonization" concerning all-digital
receivers.

At the moment I'm working at the problem of "frequency offset
correction".
While there is a frequency offset between the LO of the transmitter and
the LO of the receiver, I've to determine the offset due to perform a
proper convertion of the received signal into complex baseband for
demodulation.
(I'd like to implement the system for simulation purposes on
Matlab/Simulink first.)

Can anybody give me a hint about books/links/papers were I may find
appropriate information on how to solve this problem?
I've just read a lot of papers - but most of them are dealing with
PSK-Type signals.
I would be very thankful if anybody could help me :o)

kind regards,

Steffen




		
This message was sent using the Comp.DSP web interface on
www.DSPRelated.com
steffen wrote:
> Hi everbody, > > I'm new in the field of "synchonization" concerning all-digital > receivers. > > At the moment I'm working at the problem of "frequency offset > correction". > While there is a frequency offset between the LO of the transmitter
and
> the LO of the receiver, I've to determine the offset due to perform a > proper convertion of the received signal into complex baseband for > demodulation. > (I'd like to implement the system for simulation purposes on > Matlab/Simulink first.) > > Can anybody give me a hint about books/links/papers were I may find > appropriate information on how to solve this problem? > I've just read a lot of papers - but most of them are dealing with > PSK-Type signals. > I would be very thankful if anybody could help me :o) > > kind regards, > > Steffen > > > > > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.com
Here's a good FSK reference: http://www.wj.com/pdf/technotes/FSK_signals_demod.pdf I have worked with FSK a great deal over the years, and have found that it is demodulated noncoherently most of the time. The two most common methods are discriminator detection and mark and space filters. The frequency offset can often be extracted from the bias at the output of the detector. To get at the bias, positive and negative peak detectors can be used. One exception that is usually demodulated coherently is the special case of GMSK as used in GSM mobile phones. Hope that helps. John PS - The old WJ tech notes are a great resource. There is another one on PSK.
> >steffen wrote: >> Hi everbody, >> >> I'm new in the field of "synchonization" concerning all-digital >> receivers. >> >> At the moment I'm working at the problem of "frequency offset >> correction". >> While there is a frequency offset between the LO of the transmitter >and >> the LO of the receiver, I've to determine the offset due to perform a >> proper convertion of the received signal into complex baseband for >> demodulation. >> (I'd like to implement the system for simulation purposes on >> Matlab/Simulink first.) >> >> Can anybody give me a hint about books/links/papers were I may find >> appropriate information on how to solve this problem? >> I've just read a lot of papers - but most of them are dealing with >> PSK-Type signals. >> I would be very thankful if anybody could help me :o) >> >> kind regards, >> >> Steffen >> >> >> >> >> >> This message was sent using the Comp.DSP web interface on >> www.DSPRelated.com > >Here's a good FSK reference: > >http://www.wj.com/pdf/technotes/FSK_signals_demod.pdf > >I have worked with FSK a great deal over the years, and have found that >it is demodulated noncoherently most of the time. The two most common >methods are discriminator detection and mark and space filters. The >frequency offset can often be extracted from the bias at the output of >the detector. To get at the bias, positive and negative peak detectors >can be used. > >One exception that is usually demodulated coherently is the special >case of GMSK as used in GSM mobile phones. > >Hope that helps. > >John > >PS - The old WJ tech notes are a great resource. There is another one >on PSK. > >
Thanks for your fast reply John :o) I will check out the link and the non-coherent demodulation scheme you've mentioned. Do you have some further hints concerning "especially" frequency offset correction based on the sampled IF signal (which leads to a feedforward solution) or the samples of the I- and Q-branch of the complex baseband-signal (which leads to a feedback solution)? It would be great if you could take me a step further :o) Steffen This message was sent using the Comp.DSP web interface on www.DSPRelated.com
steffen wrote:
> > > >steffen wrote: > >> Hi everbody, > >> > >> I'm new in the field of "synchonization" concerning all-digital > >> receivers. > >> > >> At the moment I'm working at the problem of "frequency offset > >> correction". > >> While there is a frequency offset between the LO of the
transmitter
> >and > >> the LO of the receiver, I've to determine the offset due to
perform a
> >> proper convertion of the received signal into complex baseband for > >> demodulation. > >> (I'd like to implement the system for simulation purposes on > >> Matlab/Simulink first.) > >> > >> Can anybody give me a hint about books/links/papers were I may
find
> >> appropriate information on how to solve this problem? > >> I've just read a lot of papers - but most of them are dealing with > >> PSK-Type signals. > >> I would be very thankful if anybody could help me :o) > >> > >> kind regards, > >> > >> Steffen > >> > >> > >> > >> > >> > >> This message was sent using the Comp.DSP web interface on > >> www.DSPRelated.com > > > >Here's a good FSK reference: > > > >http://www.wj.com/pdf/technotes/FSK_signals_demod.pdf > > > >I have worked with FSK a great deal over the years, and have found
that
> >it is demodulated noncoherently most of the time. The two most
common
> >methods are discriminator detection and mark and space filters. The > >frequency offset can often be extracted from the bias at the output
of
> >the detector. To get at the bias, positive and negative peak
detectors
> >can be used. > > > >One exception that is usually demodulated coherently is the special > >case of GMSK as used in GSM mobile phones. > > > >Hope that helps. > > > >John > > > >PS - The old WJ tech notes are a great resource. There is another
one
> >on PSK. > > > > > > Thanks for your fast reply John :o) > I will check out the link and the non-coherent demodulation scheme
you've
> mentioned. > > Do you have some further hints concerning "especially" frequency
offset
> correction based on the sampled IF signal (which leads to a
feedforward
> solution) or the samples of the I- and Q-branch of the complex > baseband-signal (which leads to a feedback solution)? > > It would be great if you could take me a step further :o) > > Steffen > > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.com
Give me some details. Deviation? Data rate? Expected frequency error? John

Steffen

In a continuous phase FSK signal, subtracting the phases of successive
IQ data samples [z(n)z(n-1)*] gives you the signal component plus a
linear ramp function due to the carrier frequency offset. If the
transmity symbols are assumed to be random, the mean value of the
derivative of the phase yields the carrier frequency offset.

The reasoning is that continuous phase FSK demodulation is the digital
equivalent of analog FM demodulation.

Regards
Vikram


steffen wrote:
> Hi everbody, > > I'm new in the field of "synchonization" concerning all-digital > receivers. > > At the moment I'm working at the problem of "frequency offset > correction". > While there is a frequency offset between the LO of the transmitter
and
> the LO of the receiver, I've to determine the offset due to perform a > proper convertion of the received signal into complex baseband for > demodulation. > (I'd like to implement the system for simulation purposes on > Matlab/Simulink first.) > > Can anybody give me a hint about books/links/papers were I may find > appropriate information on how to solve this problem? > I've just read a lot of papers - but most of them are dealing with > PSK-Type signals. > I would be very thankful if anybody could help me :o) > > kind regards, > > Steffen > > > > > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.com
@John

Here are some details:

deviation: 1k...40kHz
data rate: 1k...20kbaud
expected frequency error: as little as possible ;o), but less accurate
                          algorithms are of great interrest also.



@Vikram
Many thanks for your hint. I really appreciate your help :o)
I'm not sure whether I've understood your suggestion correctly.
I've read the following (principle) procedure out of your posting: 

x[n] = argtan(Q[n]/I[n]) - argtan(Q[n-1]/I[n-1]) = w0 + werr*n

offset = 1/N * sum[0...N-1] (x[n]-x[n-1])    where N:= number of values
                                                       considered for
                                                       calculation of
mean
Am I right or wrong?

regards
Steffen

		
This message was sent using the Comp.DSP web interface on
www.DSPRelated.com
steffen wrote:
> @John > > Here are some details: > > deviation: 1k...40kHz > data rate: 1k...20kbaud > expected frequency error: as little as possible ;o), but less
accurate
> algorithms are of great interrest also. > > > > @Vikram > Many thanks for your hint. I really appreciate your help :o) > I'm not sure whether I've understood your suggestion correctly. > I've read the following (principle) procedure out of your posting: > > x[n] = argtan(Q[n]/I[n]) - argtan(Q[n-1]/I[n-1]) = w0 + werr*n > > offset = 1/N * sum[0...N-1] (x[n]-x[n-1]) where N:= number of
values
> considered for > calculation of > mean > Am I right or wrong? > > regards > Steffen > > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.com
If possible, filter and decimate the input to match the bandwidth of the signal in advance. Look up Carson's Rule for a bandwidth estimate, and be sure to add you expected frequency error. Then you can use the instantaneous frequency detector that you mentioned to convert frequency to amplitude. The next task will be to establish a slicing threshold, which is equivalent to removing the frequency error. I would suggest averaging the peak positive and negative values from the IF detector to do this. After you have a threshold, you need to find the bit centers and sample once per bit. Look up "timing recovery" for ways to do this. If the SNR drops below a threshold, you will get spikes out of the IF detector. Don't let these throw off the threshold estimate. John
john wrote:
> steffen wrote: > > @John > > > > Here are some details: > > > > deviation: 1k...40kHz > > data rate: 1k...20kbaud > > expected frequency error: as little as possible ;o), but less > accurate > > algorithms are of great interrest also. > > > > > > > > @Vikram > > Many thanks for your hint. I really appreciate your help :o) > > I'm not sure whether I've understood your suggestion correctly. > > I've read the following (principle) procedure out of your posting: > > > > x[n] = argtan(Q[n]/I[n]) - argtan(Q[n-1]/I[n-1]) = w0 + werr*n > > > > offset = 1/N * sum[0...N-1] (x[n]-x[n-1]) where N:= number of > values > > considered
for
> > calculation
of
> > mean > > Am I right or wrong? > > > > regards > > Steffen > > > > > > This message was sent using the Comp.DSP web interface on > > www.DSPRelated.com > > If possible, filter and decimate the input to match the bandwidth of > the signal in advance. Look up Carson's Rule for a bandwidth
estimate,
> and be sure to add you expected frequency error. Then you can use the > instantaneous frequency detector that you mentioned to convert > frequency to amplitude. The next task will be to establish a slicing > threshold, which is equivalent to removing the frequency error. I
would
> suggest averaging the peak positive and negative values from the IF > detector to do this. After you have a threshold, you need to find the > bit centers and sample once per bit. Look up "timing recovery" for
ways
> to do this. > > If the SNR drops below a threshold, you will get spikes out of the IF > detector. Don't let these throw off the threshold estimate. > > John
PS - if you do a little math you'll see that it is possible to do the IF calculation with a single arctan2. If z[n] is the complex FM signal, then z[n].*conj(z[n-1]) has an angle equal to the phase change between z[n] and z[n-1].
john wrote:
> john wrote: > > steffen wrote: > > > @John > > > > > > Here are some details: > > > > > > deviation: 1k...40kHz > > > data rate: 1k...20kbaud > > > expected frequency error: as little as possible ;o), but less > > accurate > > > algorithms are of great interrest also. > > > > > > > > > > > > @Vikram > > > Many thanks for your hint. I really appreciate your help :o) > > > I'm not sure whether I've understood your suggestion correctly. > > > I've read the following (principle) procedure out of your
posting:
> > > > > > x[n] = argtan(Q[n]/I[n]) - argtan(Q[n-1]/I[n-1]) = w0 + werr*n > > > > > > offset = 1/N * sum[0...N-1] (x[n]-x[n-1]) where N:= number of > > values > > > considered > for > > >
calculation
> of > > > mean > > > Am I right or wrong? > > > > > > regards > > > Steffen > > > > > > > > > This message was sent using the Comp.DSP web interface on > > > www.DSPRelated.com > > > > If possible, filter and decimate the input to match the bandwidth
of
> > the signal in advance. Look up Carson's Rule for a bandwidth > estimate, > > and be sure to add you expected frequency error. Then you can use
the
> > instantaneous frequency detector that you mentioned to convert > > frequency to amplitude. The next task will be to establish a
slicing
> > threshold, which is equivalent to removing the frequency error. I > would > > suggest averaging the peak positive and negative values from the IF > > detector to do this. After you have a threshold, you need to find
the
> > bit centers and sample once per bit. Look up "timing recovery" for > ways > > to do this. > > > > If the SNR drops below a threshold, you will get spikes out of the
IF
> > detector. Don't let these throw off the threshold estimate. > > > > John > > PS - if you do a little math you'll see that it is possible to do the > IF calculation with a single arctan2. If z[n] is the complex FM
signal,
> then z[n].*conj(z[n-1]) has an angle equal to the phase change
between
> z[n] and z[n-1].
PPS - I neglected to mention that a one bit boxcar filter between the IF detector, although not technically a matched filter since the noise density is quadratic, is a standard thing to include.
Hallo John,

I've just implemented the algorithm with the one arctan2()-solution
followed up by a lowpass-filter with passbandedge-frequency at
approximately 20 kHz ( which equals the baud-rate of the signal ).
-> pretty good result.
Right now I've got a signal with a DC offset which is proportional to the
frequency-offset to be compensated -> now I'm facing the task of
extracting the DC offset, which will then serve as a control-word for the
"frequency-shifter".
Hope to find a solution -> if not . . . I'll be back for another
conversation ;o)

regards
Steffen

		
This message was sent using the Comp.DSP web interface on
www.DSPRelated.com