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
BPSK decode with Goertzel Algorithm
Started by ●July 12, 2004
Reply by ●July 12, 20042004-07-12
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
Reply by ●July 12, 20042004-07-12
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 asliding> > Geortzel Algorithm. I need to do this for the purpose of speed and > > sensitivity. Has anyone ever tried this before? It should be possibleseeing> > 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 haveonly> > 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
Reply by ●July 18, 20042004-07-18
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
Reply by ●July 20, 20042004-07-20
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 knowingthat> >it shouldn't effect sensitivity, I thought that going down a path thatmay> >not have been traveled before, could have unforeseen benefits. TheGoertzel> >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 thesignal> >> > 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 doubtthat> >> it's going to save you any computation beyond perhaps a table lookupfor> >> 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
Reply by ●July 21, 20042004-07-21
Hello, could you point me to where you found the info on doing a sliding Goertzel and how it works? Regards, Steve Drake
Reply by ●July 21, 20042004-07-21
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
Reply by ●July 21, 20042004-07-21
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 > >
Reply by ●July 21, 20042004-07-21
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.orgI 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
Reply by ●July 21, 20042004-07-21
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 articleon> the sliding DFT which includes a section on the sliding Goertzel: "TheSliding> 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 Goertzelfrom> > embedded.com. http://www.embedded.com/story/OEG20020819S0057 About halfway> > 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 phasereference> > every sample group (using the same coefficients). So the slidingGoertzel's> > arctan output will look extremely encrypted at first. A coefficientneeds to> > be calculated based on sampling rate and frequency and then applied tothe> > 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 samplegroup to> > adjust for phase, but that would take a lot more processing power thanis> > necessary. The above method of appling a coefficient to the basebandoutput> > appears to be working just fine. I am now trying to use this coefficientas> > 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 > > > > > >