Forums

BPSK decode with Goertzel Algorithm

Started by Thomas Magma July 12, 2004
Hi folks,

I am about to attempt to decode a very weak RF BPSK signal using a sliding
Geortzel Algorithm. I need to do this for the purpose of speed and
sensitivity. Has anyone ever tried this before? It should be possible seeing
that you can recover both the real and imaginary portions of the signal
using the Goertzel. I have a nice chunk of C code to do this but have only
used the optimized Goertzel portion of the code.

Can't wait to try.
Any foreseen pitfalls?

Thomas Magma


Thomas Magma wrote:

> Hi folks, > > I am about to attempt to decode a very weak RF BPSK signal using a sliding > Geortzel Algorithm. I need to do this for the purpose of speed and > sensitivity. Has anyone ever tried this before? It should be possible seeing > that you can recover both the real and imaginary portions of the signal > using the Goertzel. I have a nice chunk of C code to do this but have only > used the optimized Goertzel portion of the code. > > Can't wait to try. > Any foreseen pitfalls? > > Thomas Magma > >
Not so much pitfalls, as -- why? To make your BPSK demodulation work you need to recover carrier and clock, which can be easily done if you are generating a carrier reference and demodulating. It seems like using the Geortzel Algorithm will be _very_ indirect. It's not going to save you from having to adjust the carrier frequency, it's certainly not going to save you from having to recover the clock, it's not going gain you a whit of sensitivity over demodulating, integrating and dumping, and I doubt that it's going to save you any computation beyond perhaps a table lookup for the carrier reference. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Hi Tim

I mostly agree with you Tim, and that is sort of the reason behind this
posting. Preliminary calculations show that there will be some gain in
computational processing speed which is my primary focus. And knowing that
it shouldn't effect sensitivity, I thought that going down a path that may
not have been traveled before, could have unforeseen benefits. The Goertzel
is very fast and has different spectral characteristics over mixing,
integrating and dumping.

It's like a day or two of coding and testing.
If it doesn't work out, oh well.

Thomas

"Tim Wescott" <tim@wescottnospamdesign.com> wrote in message
news:10f5kjq7co6sb57@corp.supernews.com...
> Thomas Magma wrote: > > > Hi folks, > > > > I am about to attempt to decode a very weak RF BPSK signal using a
sliding
> > Geortzel Algorithm. I need to do this for the purpose of speed and > > sensitivity. Has anyone ever tried this before? It should be possible
seeing
> > that you can recover both the real and imaginary portions of the signal > > using the Goertzel. I have a nice chunk of C code to do this but have
only
> > used the optimized Goertzel portion of the code. > > > > Can't wait to try. > > Any foreseen pitfalls? > > > > Thomas Magma > > > > > Not so much pitfalls, as -- why? > > To make your BPSK demodulation work you need to recover carrier and > clock, which can be easily done if you are generating a carrier > reference and demodulating. It seems like using the Geortzel Algorithm > will be _very_ indirect. It's not going to save you from having to > adjust the carrier frequency, it's certainly not going to save you from > having to recover the clock, it's not going gain you a whit of > sensitivity over demodulating, integrating and dumping, and I doubt that > it's going to save you any computation beyond perhaps a table lookup for > the carrier reference. > > -- > > Tim Wescott > Wescott Design Services > http://www.wescottdesign.com
I'm with Tim, I don't see how you're going to extract the modulated
information in the frequency domain using the Goertzel or any other
algorithm.   With PSK the information is modulated in instantaneous
phase, and that's hard to recover in the frequency domain.

On Mon, 12 Jul 2004 18:45:15 GMT, "Thomas Magma"
<somewhere@overtherainbow.com> wrote:

>Hi Tim > >I mostly agree with you Tim, and that is sort of the reason behind this >posting. Preliminary calculations show that there will be some gain in >computational processing speed which is my primary focus. And knowing that >it shouldn't effect sensitivity, I thought that going down a path that may >not have been traveled before, could have unforeseen benefits. The Goertzel >is very fast and has different spectral characteristics over mixing, >integrating and dumping. > >It's like a day or two of coding and testing. >If it doesn't work out, oh well. > >Thomas > >"Tim Wescott" <tim@wescottnospamdesign.com> wrote in message >news:10f5kjq7co6sb57@corp.supernews.com... >> Thomas Magma wrote: >> >> > Hi folks, >> > >> > I am about to attempt to decode a very weak RF BPSK signal using a >sliding >> > Geortzel Algorithm. I need to do this for the purpose of speed and >> > sensitivity. Has anyone ever tried this before? It should be possible >seeing >> > that you can recover both the real and imaginary portions of the signal >> > using the Goertzel. I have a nice chunk of C code to do this but have >only >> > used the optimized Goertzel portion of the code. >> > >> > Can't wait to try. >> > Any foreseen pitfalls? >> > >> > Thomas Magma >> > >> > >> Not so much pitfalls, as -- why? >> >> To make your BPSK demodulation work you need to recover carrier and >> clock, which can be easily done if you are generating a carrier >> reference and demodulating. It seems like using the Geortzel Algorithm >> will be _very_ indirect. It's not going to save you from having to >> adjust the carrier frequency, it's certainly not going to save you from >> having to recover the clock, it's not going gain you a whit of >> sensitivity over demodulating, integrating and dumping, and I doubt that >> it's going to save you any computation beyond perhaps a table lookup for >> the carrier reference. >> >> -- >> >> Tim Wescott >> Wescott Design Services >> http://www.wescottdesign.com > >
Eric Jacobsen Minister of Algorithms, Intel Corp. My opinions may not be Intel's opinions. http://www.ericjacobsen.org
Hi Eric,

I not sure where you got the idea I was extracting the phase modulation from
the frequency domain. I did state "that you can recover both the real and
imaginary portions of the signal using the Goertzel.", and the instantaneous
phase is just the Arctan of that.

In fact I just got it running today. I haven't checked the sensitivity yet
but I can tell you that it is extremely quick.

The reason I am trying this method is because of the ability of the Goertzel
to quickly process any value of N samples. This allows me to maximize
sensitivity base on my RF sample rate to my bps rate. I'm currently
integrating and dumping over 500 samples into a Goertzel sliding window.

Thomas

"Eric Jacobsen" <eric.jacobsen@ieee.org> wrote in message
news:40fac172.1875872015@news.west.cox.net...
> I'm with Tim, I don't see how you're going to extract the modulated > information in the frequency domain using the Goertzel or any other > algorithm. With PSK the information is modulated in instantaneous > phase, and that's hard to recover in the frequency domain. > > On Mon, 12 Jul 2004 18:45:15 GMT, "Thomas Magma" > <somewhere@overtherainbow.com> wrote: > > >Hi Tim > > > >I mostly agree with you Tim, and that is sort of the reason behind this > >posting. Preliminary calculations show that there will be some gain in > >computational processing speed which is my primary focus. And knowing
that
> >it shouldn't effect sensitivity, I thought that going down a path that
may
> >not have been traveled before, could have unforeseen benefits. The
Goertzel
> >is very fast and has different spectral characteristics over mixing, > >integrating and dumping. > > > >It's like a day or two of coding and testing. > >If it doesn't work out, oh well. > > > >Thomas > > > >"Tim Wescott" <tim@wescottnospamdesign.com> wrote in message > >news:10f5kjq7co6sb57@corp.supernews.com... > >> Thomas Magma wrote: > >> > >> > Hi folks, > >> > > >> > I am about to attempt to decode a very weak RF BPSK signal using a > >sliding > >> > Geortzel Algorithm. I need to do this for the purpose of speed and > >> > sensitivity. Has anyone ever tried this before? It should be possible > >seeing > >> > that you can recover both the real and imaginary portions of the
signal
> >> > using the Goertzel. I have a nice chunk of C code to do this but have > >only > >> > used the optimized Goertzel portion of the code. > >> > > >> > Can't wait to try. > >> > Any foreseen pitfalls? > >> > > >> > Thomas Magma > >> > > >> > > >> Not so much pitfalls, as -- why? > >> > >> To make your BPSK demodulation work you need to recover carrier and > >> clock, which can be easily done if you are generating a carrier > >> reference and demodulating. It seems like using the Geortzel Algorithm > >> will be _very_ indirect. It's not going to save you from having to > >> adjust the carrier frequency, it's certainly not going to save you from > >> having to recover the clock, it's not going gain you a whit of > >> sensitivity over demodulating, integrating and dumping, and I doubt
that
> >> it's going to save you any computation beyond perhaps a table lookup
for
> >> the carrier reference. > >> > >> -- > >> > >> Tim Wescott > >> Wescott Design Services > >> http://www.wescottdesign.com > > > > > > Eric Jacobsen > Minister of Algorithms, Intel Corp. > My opinions may not be Intel's opinions. > http://www.ericjacobsen.org
Hello, could you point me to where you found the info on doing a
sliding Goertzel and how it works?

Regards,

Steve Drake
Hi Steve,

Kinda just made up the sliding Goertzel. I learned about the Goertzel from
embedded.com. http://www.embedded.com/story/OEG20020819S0057 About half way
down this article there is a listing for the algorithm in C. Then I just
wrote a loop that slid the Goertzel down my samples.

The only tricky part is that the Goertzel always has a zero phase reference
every sample group (using the same coefficients). So the sliding Goertzel's
arctan output will look extremely encrypted at first. A coefficient needs to
be calculated based on sampling rate and frequency and then applied to the
output in order to get back to correct baseband. This however takes very
little processing time at baseband and can be done while the window is
sliding.

I guess one could recalculate the Goertzel coefficients each sample group to
adjust for phase, but that would take a lot more processing power than is
necessary. The above method of appling a coefficient to the baseband output
appears to be working just fine. I am now trying to use this coefficient as
part of a baseband tracking loop to make up for any frequency errors.

Thomas Magma

"Steve Drake" <sdrake@freenet.edmonton.ab.ca> wrote in message
news:4ipsf05kb255vnntgbn825lnpcd8s9q514@4ax.com...
> Hello, could you point me to where you found the info on doing a > sliding Goertzel and how it works? > > Regards, > > Steve Drake
Rick Lyons and Eric Jacobsen, who both posts here, have written an article on
the sliding DFT which includes a section on the sliding Goertzel:  "The Sliding
DFT", IEEE Signal Processing Magazine, Volume 20, No. 2, March 2003.

"Thomas Magma" <somewhere@overtherainbow.com> wrote in message
news:EFwLc.72367$Mr4.29614@pd7tw1no...
> Hi Steve, > > Kinda just made up the sliding Goertzel. I learned about the Goertzel from > embedded.com. http://www.embedded.com/story/OEG20020819S0057 About half way > down this article there is a listing for the algorithm in C. Then I just > wrote a loop that slid the Goertzel down my samples. > > The only tricky part is that the Goertzel always has a zero phase reference > every sample group (using the same coefficients). So the sliding Goertzel's > arctan output will look extremely encrypted at first. A coefficient needs to > be calculated based on sampling rate and frequency and then applied to the > output in order to get back to correct baseband. This however takes very > little processing time at baseband and can be done while the window is > sliding. > > I guess one could recalculate the Goertzel coefficients each sample group to > adjust for phase, but that would take a lot more processing power than is > necessary. The above method of appling a coefficient to the baseband output > appears to be working just fine. I am now trying to use this coefficient as > part of a baseband tracking loop to make up for any frequency errors. > > Thomas Magma > > "Steve Drake" <sdrake@freenet.edmonton.ab.ca> wrote in message > news:4ipsf05kb255vnntgbn825lnpcd8s9q514@4ax.com... > > Hello, could you point me to where you found the info on doing a > > sliding Goertzel and how it works? > > > > Regards, > > > > Steve Drake > >
Eric Jacobsen wrote:

> I'm with Tim, I don't see how you're going to extract the modulated > information in the frequency domain using the Goertzel or any other > algorithm. With PSK the information is modulated in instantaneous > phase, and that's hard to recover in the frequency domain. > > On Mon, 12 Jul 2004 18:45:15 GMT, "Thomas Magma" > <somewhere@overtherainbow.com> wrote: > > >>Hi Tim >> >>I mostly agree with you Tim, and that is sort of the reason behind this >>posting. Preliminary calculations show that there will be some gain in >>computational processing speed which is my primary focus. And knowing that >>it shouldn't effect sensitivity, I thought that going down a path that may >>not have been traveled before, could have unforeseen benefits. The Goertzel >>is very fast and has different spectral characteristics over mixing, >>integrating and dumping. >> >>It's like a day or two of coding and testing. >>If it doesn't work out, oh well. >> >>Thomas >> >>"Tim Wescott" <tim@wescottnospamdesign.com> wrote in message >>news:10f5kjq7co6sb57@corp.supernews.com... >> >>>Thomas Magma wrote: >>> >>> >>>>Hi folks, >>>> >>>>I am about to attempt to decode a very weak RF BPSK signal using a >> >>sliding >> >>>>Geortzel Algorithm. I need to do this for the purpose of speed and >>>>sensitivity. Has anyone ever tried this before? It should be possible >> >>seeing >> >>>>that you can recover both the real and imaginary portions of the signal >>>>using the Goertzel. I have a nice chunk of C code to do this but have >> >>only >> >>>>used the optimized Goertzel portion of the code. >>>> >>>>Can't wait to try. >>>>Any foreseen pitfalls? >>>> >>>>Thomas Magma >>>> >>>> >>> >>>Not so much pitfalls, as -- why? >>> >>>To make your BPSK demodulation work you need to recover carrier and >>>clock, which can be easily done if you are generating a carrier >>>reference and demodulating. It seems like using the Geortzel Algorithm >>>will be _very_ indirect. It's not going to save you from having to >>>adjust the carrier frequency, it's certainly not going to save you from >>>having to recover the clock, it's not going gain you a whit of >>>sensitivity over demodulating, integrating and dumping, and I doubt that >>>it's going to save you any computation beyond perhaps a table lookup for >>>the carrier reference. >>> >>>-- >>> >>>Tim Wescott >>>Wescott Design Services >>>http://www.wescottdesign.com >> >> > > Eric Jacobsen > Minister of Algorithms, Intel Corp. > My opinions may not be Intel's opinions. > http://www.ericjacobsen.org
I didn't say it couldn't be done -- the Goertzel algorithm behaves exactly like an integrate and dump if you look at it just right. I was only saying that by the time you wrapped it with the necessary support code to make it work you may not see much savings, and _nobody_ but you would be able to understand the code. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
I just went and read the abstract to "The Sliding DFT" It looks like a good
article, one that I would enjoy reading, but they want you to pay to become
a member.

The opening line of the abstract to that article implies the article is
referring to spectrum analysis and perhaps not to phase demodulation. This
would probably use an optimized Goertzel (magnitude) sliding window and
would be a different kind of beast than one used for phase demodulation.

Don't think I want to shell out $147 dollars to read that article. Unless
someone else knows of an cheaper way of doing so.

Thomas




"Jon Harris" <goldentully@hotmail.com> wrote in message
news:2m7plrFjeloaU1@uni-berlin.de...
> Rick Lyons and Eric Jacobsen, who both posts here, have written an article
on
> the sliding DFT which includes a section on the sliding Goertzel: "The
Sliding
> DFT", IEEE Signal Processing Magazine, Volume 20, No. 2, March 2003. > > "Thomas Magma" <somewhere@overtherainbow.com> wrote in message > news:EFwLc.72367$Mr4.29614@pd7tw1no... > > Hi Steve, > > > > Kinda just made up the sliding Goertzel. I learned about the Goertzel
from
> > embedded.com. http://www.embedded.com/story/OEG20020819S0057 About half
way
> > down this article there is a listing for the algorithm in C. Then I just > > wrote a loop that slid the Goertzel down my samples. > > > > The only tricky part is that the Goertzel always has a zero phase
reference
> > every sample group (using the same coefficients). So the sliding
Goertzel's
> > arctan output will look extremely encrypted at first. A coefficient
needs to
> > be calculated based on sampling rate and frequency and then applied to
the
> > output in order to get back to correct baseband. This however takes very > > little processing time at baseband and can be done while the window is > > sliding. > > > > I guess one could recalculate the Goertzel coefficients each sample
group to
> > adjust for phase, but that would take a lot more processing power than
is
> > necessary. The above method of appling a coefficient to the baseband
output
> > appears to be working just fine. I am now trying to use this coefficient
as
> > part of a baseband tracking loop to make up for any frequency errors. > > > > Thomas Magma > > > > "Steve Drake" <sdrake@freenet.edmonton.ab.ca> wrote in message > > news:4ipsf05kb255vnntgbn825lnpcd8s9q514@4ax.com... > > > Hello, could you point me to where you found the info on doing a > > > sliding Goertzel and how it works? > > > > > > Regards, > > > > > > Steve Drake > > > > > >