DSPRelated.com
Forums

Weaver Image Rejection, are only images in band cancelled?

Started by Unknown February 14, 2008
Hi

I'm implementing a Weaver image rejection filter for a digital comms
system, but I've run into a problem which I can't resolve, either
conceptually or in my MATLAB simulation.

First, my understanding:

RF
----
1/ We receive a signal with a centre frequency of f_c occupying a band
(f_c - B) to (f_c + B)
2/ We quadrature demix using an LO of frequency (f_c - B) so that the
signal of interest occupies the band 0 to 2B, with image frequencies
occupying the band -2B to 0.
3/ LPF passing -2B to +2B
4/ Sample giving r(n) = I(n) + jQ(n)

Digital
-----------
1/ A shift to DC is performed, with images removed by phase
cancellation.


Now my question:

Everything is going as I expect up until the phase cancellation. I'm
happy that images which fall within the range -B to B are cancelled by
this method, but in all my simulations I  have non-cancelled
components in the region -2B to -B and B to 2B.

Can anyone shed some light on what I'm doing wrong, or if this is
expected behaviour for the Weaver image rejection filter?

Frank
On Thu, 14 Feb 2008 16:42:06 -0800, frank.snowdon wrote:

> Hi > > I'm implementing a Weaver image rejection filter for a digital comms > system, but I've run into a problem which I can't resolve, either > conceptually or in my MATLAB simulation. > > First, my understanding: > > RF > ---- > 1/ We receive a signal with a centre frequency of f_c occupying a band > (f_c - B) to (f_c + B) > 2/ We quadrature demix using an LO of frequency (f_c - B) so that the > signal of interest occupies the band 0 to 2B, with image frequencies > occupying the band -2B to 0. > 3/ LPF passing -2B to +2B > 4/ Sample giving r(n) = I(n) + jQ(n) > > Digital > ----------- > 1/ A shift to DC is performed, with images removed by phase > cancellation. > > > Now my question: > > Everything is going as I expect up until the phase cancellation. I'm > happy that images which fall within the range -B to B are cancelled by > this method, but in all my simulations I have non-cancelled components > in the region -2B to -B and B to 2B. > > Can anyone shed some light on what I'm doing wrong, or if this is > expected behaviour for the Weaver image rejection filter? > > Frank
1. You're not describing the Weaver method as I know it; it sounds more like a strange hybrid of Weaver and regular old phasing. 2. You don't detail how the shift to DC is being performed, but the rest seems right to my sleep-deprived eyes. Could you be muffing the phase shift before you hit the summation? The "real" Weaver method (at least as Weaver invented it for use in SSB reception) downconverts the signal around the center of the RF signal, filters it at base band at 1/2 the RF bandwidth (B in your case), then does an audio shift by 1/2 the RF bandwidth. It leaves you with an irritating whistle at the audio shift frequency if you do it in analog, but it's supposed to work well. -- Tim Wescott Control systems and communications consulting http://www.wescottdesign.com Need to learn how to apply control theory in your embedded system? "Applied Control Theory for Embedded Systems" by Tim Wescott Elsevier/Newnes, http://www.wescottdesign.com/actfes/actfes.html
Tim Wescott <tim@seemywebsite.com> wrote in
news:M_udnWGf8eiDtCjanZ2dnUVZ_hCdnZ2d@web-ster.com: 

> On Thu, 14 Feb 2008 16:42:06 -0800, frank.snowdon wrote: > >> Hi >> >> I'm implementing a Weaver image rejection filter for a digital comms >> system, but I've run into a problem which I can't resolve, either >> conceptually or in my MATLAB simulation. >> >> First, my understanding: >> >> RF >> ---- >> 1/ We receive a signal with a centre frequency of f_c occupying a >> band (f_c - B) to (f_c + B) >> 2/ We quadrature demix using an LO of frequency (f_c - B) so that the >> signal of interest occupies the band 0 to 2B, with image frequencies >> occupying the band -2B to 0. >> 3/ LPF passing -2B to +2B >> 4/ Sample giving r(n) = I(n) + jQ(n) >> >> Digital >> ----------- >> 1/ A shift to DC is performed, with images removed by phase >> cancellation. >> >> >> Now my question: >> >> Everything is going as I expect up until the phase cancellation. I'm >> happy that images which fall within the range -B to B are cancelled >> by this method, but in all my simulations I have non-cancelled >> components in the region -2B to -B and B to 2B. >> >> Can anyone shed some light on what I'm doing wrong, or if this is >> expected behaviour for the Weaver image rejection filter? >> >> Frank > > 1. You're not describing the Weaver method as I know it; it sounds > more like a strange hybrid of Weaver and regular old phasing. > > 2. You don't detail how the shift to DC is being performed, but the > rest seems right to my sleep-deprived eyes. Could you be muffing the > phase shift before you hit the summation? > > The "real" Weaver method (at least as Weaver invented it for use in > SSB reception) downconverts the signal around the center of the RF > signal, filters it at base band at 1/2 the RF bandwidth (B in your > case), then does an audio shift by 1/2 the RF bandwidth. It leaves > you with an irritating whistle at the audio shift frequency if you do > it in analog, but it's supposed to work well. >
The Weaver method does work very well provided that the sin and cos is calculated with high precision. I didn't use weaver at RF, I used it at audio frequencies to create a set of continuous variable bandpass filters with constant bandwidth. In my application, I used 32 bit fixed point for the sin and cos. My original 16 bit try resulted in exactly the problem Tim noted. Al Clark Danville Signal Processing, Inc.
Al Clark wrote:
> [snip] > > The Weaver method does work very well provided that the sin and cos is > calculated with high precision. I didn't use weaver at RF, I used it at > audio frequencies to create a set of continuous variable bandpass filters > with constant bandwidth.
Can you suggest good Google search terms? [weaver bandpass filter] didn't prove useful. "continuous variable bandpass filters with constant bandwidth" would be useful to me. Speed not an issue, will be doing batch processing. I'll be able to use arbitrary precision math.
> > In my application, I used 32 bit fixed point for the sin and cos. My > original 16 bit try resulted in exactly the problem Tim noted. > > Al Clark > Danville Signal Processing, Inc. > > > > > > >
On Fri, 15 Feb 2008 13:49:31 -0600, Richard Owlett wrote:

> Al Clark wrote: >> [snip] >> >> The Weaver method does work very well provided that the sin and cos is >> calculated with high precision. I didn't use weaver at RF, I used it at >> audio frequencies to create a set of continuous variable bandpass >> filters with constant bandwidth. > > Can you suggest good Google search terms? [weaver bandpass filter] > didn't prove useful. "continuous variable bandpass filters with constant > bandwidth" would be useful to me. Speed not an issue, will be doing > batch processing. I'll be able to use arbitrary precision math. > -- snip --
Why not FFT, window, and FFT back then? I could see getting very confused trying to translate the Weaver method into digital terms. In digital terms it's easy: * Down-convert your data with a complex signal whose frequency is the center frequency of your desired filter. * Band-pass filter the baseband data from -fo/2 to +fo/2. After doing all the math to design a complex bandpass filter centered around DC, note that you've designed a filter that effectively low-pass filters the real and complex parts separately and identically. Slap your forehead. * Up-convert the output of the bandpass filter with the same complex signal that you used to down-convert. * Throw away the imaginary part (or the real part, if that floats your boat). Note that this method only works if your center frequency is bigger than the bandwidth of your filter -- if this is not the case, then things will get mangled when you do the last step. -- Tim Wescott Control systems and communications consulting http://www.wescottdesign.com Need to learn how to apply control theory in your embedded system? "Applied Control Theory for Embedded Systems" by Tim Wescott Elsevier/Newnes, http://www.wescottdesign.com/actfes/actfes.html
On Thu, 14 Feb 2008 16:42:06 -0800, frank.snowdon wrote:

> Hi > > I'm implementing a Weaver image rejection filter for a digital comms > system, but I've run into a problem which I can't resolve, either > conceptually or in my MATLAB simulation. > > First, my understanding: > > RF > ---- > 1/ We receive a signal with a centre frequency of f_c occupying a band > (f_c - B) to (f_c + B) > 2/ We quadrature demix using an LO of frequency (f_c - B) so that the > signal of interest occupies the band 0 to 2B, with image frequencies > occupying the band -2B to 0. > 3/ LPF passing -2B to +2B > 4/ Sample giving r(n) = I(n) + jQ(n) > > Digital > ----------- > 1/ A shift to DC is performed, with images removed by phase > cancellation. > > > Now my question: > > Everything is going as I expect up until the phase cancellation. I'm > happy that images which fall within the range -B to B are cancelled by > this method, but in all my simulations I have non-cancelled components > in the region -2B to -B and B to 2B. > > Can anyone shed some light on what I'm doing wrong, or if this is > expected behaviour for the Weaver image rejection filter? > > Frank
After thinking about this for a day, and responding to Richard's post, it occurs to me that I should point out the following: The Weaver method is a great way to do this task with analog circuitry, but you end up forming a difficult mental model of the process. If you're doing it digitally, think "complex" instead of "inphase and quadrature". Then just do what I suggested to Richard, only do the up- conversion by 1/2 the bandwidth instead of by the original carrier frequency. If, as I think may be the case, you're not using the Weaver method but instead using the regular old phasing method, then you need to take your quadrature data and run it through a Hilbert transform before adding the two signals together. -- Tim Wescott Control systems and communications consulting http://www.wescottdesign.com Need to learn how to apply control theory in your embedded system? "Applied Control Theory for Embedded Systems" by Tim Wescott Elsevier/Newnes, http://www.wescottdesign.com/actfes/actfes.html
Tim Wescott wrote:
> On Fri, 15 Feb 2008 13:49:31 -0600, Richard Owlett wrote: > > >>Al Clark wrote: >> >>>[snip] >>> >>>The Weaver method does work very well provided that the sin and cos is >>>calculated with high precision. I didn't use weaver at RF, I used it at >>>audio frequencies to create a set of continuous variable bandpass >>>filters with constant bandwidth. >> >>Can you suggest good Google search terms? [weaver bandpass filter] >>didn't prove useful. "continuous variable bandpass filters with constant >>bandwidth" would be useful to me. Speed not an issue, will be doing >>batch processing. I'll be able to use arbitrary precision math. >> -- snip -- > > > Why not FFT, window, and FFT back then?
That's where I started ;)
> > I could see getting very confused trying to translate the Weaver method > into digital terms.
I didn't catch from the discussion that it wasn't specifically a digital method. I'd still would like to read about it to shake out some cobwebs from my mind. In digital terms it's easy:
> > * Down-convert your data with a complex signal whose frequency is > the center frequency of your desired filter. > * Band-pass filter the baseband data from -fo/2 to +fo/2. After > doing all the math to design a complex bandpass filter centered > around DC, note that you've designed a filter that effectively > low-pass filters the real and complex parts separately and > identically. Slap your forehead. > * Up-convert the output of the bandpass filter with the same complex > signal that you used to down-convert. > * Throw away the imaginary part (or the real part, if that floats > your boat). > > Note that this method only works if your center frequency is bigger than > the bandwidth of your filter -- if this is not the case, then things will > get mangled when you do the last step. >
On Sat, 16 Feb 2008 05:42:09 -0600, Richard Owlett wrote:

> Tim Wescott wrote: >> On Fri, 15 Feb 2008 13:49:31 -0600, Richard Owlett wrote: >> >> >>>Al Clark wrote: >>> >>>>[snip] >>>> >>>>The Weaver method does work very well provided that the sin and cos is >>>>calculated with high precision. I didn't use weaver at RF, I used it >>>>at audio frequencies to create a set of continuous variable bandpass >>>>filters with constant bandwidth. >>> >>>Can you suggest good Google search terms? [weaver bandpass filter] >>>didn't prove useful. "continuous variable bandpass filters with >>>constant bandwidth" would be useful to me. Speed not an issue, will be >>>doing batch processing. I'll be able to use arbitrary precision math. >>> -- snip -- >> >> >> Why not FFT, window, and FFT back then? > > That's where I started ;) > > >> I could see getting very confused trying to translate the Weaver method >> into digital terms. > > I didn't catch from the discussion that it wasn't specifically a digital > method. I'd still would like to read about it to shake out some cobwebs > from my mind. >
The original post, and Al's response, was the first time I've seen it mentioned in the context of a digital system. The method as named was invented (or at least brought to the attention of amateur radio operators) by a guy named Weaver back in the '50s, when folks were casting about for the best way to receive and transmit single-sideband*. Its origins were not only grounded in pure analog, but they were pure analog in a time when op-amps were strange, slow, expensive tools for high-end industrial electronics, and in 'normal' practice each amplifying element was a trial to implement and a challenge to maintain calibration. (snip) * There were three contenders: The 'filter method', where you bandpass filter in IF, which requires a good mechanical or crystal filter or an absurdly low (50kHz) IF; The 'phasing method', where you quadrature down convert then have to phase shift two audio signals with reliably even gain and 90 degree relative phases; and the Weaver method, where you quadrature down shift from RF, then quadrature frequency shift in audio. -- Tim Wescott Control systems and communications consulting http://www.wescottdesign.com Need to learn how to apply control theory in your embedded system? "Applied Control Theory for Embedded Systems" by Tim Wescott Elsevier/Newnes, http://www.wescottdesign.com/actfes/actfes.html
Tim Wescott <tim@seemywebsite.com> wrote in
news:gemdnVVjc6gEjCranZ2dnUVZ_vvinZ2d@web-ster.com: 

> On Sat, 16 Feb 2008 05:42:09 -0600, Richard Owlett wrote: > >> Tim Wescott wrote: >>> On Fri, 15 Feb 2008 13:49:31 -0600, Richard Owlett wrote: >>> >>> >>>>Al Clark wrote: >>>> >>>>>[snip] >>>>> >>>>>The Weaver method does work very well provided that the sin and cos >>>>>is calculated with high precision. I didn't use weaver at RF, I >>>>>used it at audio frequencies to create a set of continuous variable >>>>>bandpass filters with constant bandwidth. >>>> >>>>Can you suggest good Google search terms? [weaver bandpass filter] >>>>didn't prove useful. "continuous variable bandpass filters with >>>>constant bandwidth" would be useful to me. Speed not an issue, will >>>>be doing batch processing. I'll be able to use arbitrary precision >>>>math. >>>> -- snip -- >>> >>> >>> Why not FFT, window, and FFT back then? >> >> That's where I started ;) >> >> >>> I could see getting very confused trying to translate the Weaver >>> method into digital terms. >> >> I didn't catch from the discussion that it wasn't specifically a >> digital method. I'd still would like to read about it to shake out >> some cobwebs from my mind. >> > > The original post, and Al's response, was the first time I've seen it > mentioned in the context of a digital system. The method as named was > invented (or at least brought to the attention of amateur radio > operators) by a guy named Weaver back in the '50s, when folks were > casting about for the best way to receive and transmit > single-sideband*. Its origins were not only grounded in pure analog, > but they were pure analog in a time when op-amps were strange, slow, > expensive tools for high-end industrial electronics, and in 'normal' > practice each amplifying element was a trial to implement and a > challenge to maintain calibration. > > (snip) > > * There were three contenders: The 'filter method', where you > bandpass filter in IF, which requires a good mechanical or crystal > filter or an absurdly low (50kHz) IF; The 'phasing method', where you > quadrature down convert then have to phase shift two audio signals > with reliably even gain and 90 degree relative phases; and the Weaver > method, where you quadrature down shift from RF, then quadrature > frequency shift in audio. >
I got my method directly from a ham radio article on the weaver method. I did this many years ago but basically its just heterodyning. I think I just multiplied by the sin and cos of my desired center frequency. I then filtered each result with two identical low pass filters and then multiplied by the sin and cos again, then summed the the two parts. I haven't thought this thru and its been about 15 years but I think this works. As I recall, you do have to sample high enough to avoid harmonic aliasing. The advantage of the method was that I could have a set of precalulated low pass filters with different cut off frequencies to create a large set of tunable bandpass filters with different center frequencies and bandwidths. Ham radio operators might recognize the Timewave DSP-599zx. I was the chief designer. This was the product that used the technique. Al Clark Danville Signal Processing, Inc.
Al Clark wrote:

   ...

> Ham radio operators might recognize the Timewave DSP-599zx. I was the > chief designer. This was the product that used the technique.
Hot damn! Good stuff! Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;