[sdiy] Weaver frequency shifter

Eric Brombaugh ebrombaugh at gmail.com
Thu Apr 28 16:30:57 CEST 2022


In my communications applications I generally ended up using an 
"analytic signal converter" design that combined a Hilbert FIR with the 
necessary Fs/4 modulation - sort of like the first two functions in a 
Weaver system. This was usually pretty easy to do in digits and I've 
built a number of them over the years in both ASIC and FPGA.

For my synth shifters I have always used the split IIR approach as 
described by Niemitalo at the site you referenced. I also was 
unsatisfied with the bandwidth and rejection he describes so with a 
little optimization work it was possible to augment the filters and 
improve both parameters significantly. I've been able to get such 
systems running on fairly low-end hardware, including dsPICs and the 
RP2040 module I mentioned here earlier. I'm aware of several cases where 
this approach has been implemented with the Spin FV1 part that's popular 
for guitar pedals and effects modules.

As far as the equivalence of the split filter to a single complex 
filter, it's boils down to this: you have a real signal and you want to 
create from that a complex signal with proper positive and negative 
frequency components. One way to do this is to use the raw signal for 
the I channel and a single all-pass filter with a phase shift of 90deg 
for the Q channel. Another way is to phase shift the raw signal with two 
filters by +45 and -45 degrees - you still end up with an effective 
90deg shift between the resulting I and Q.

Eric

On 4/28/22 05:52, rburnett at richieburnett.co.uk wrote:
> Interesting replies.  Thank you guys.
> 
> David, It's interesting that you got such dramatically better results 
> with the phase-shifting method than the Weaver method when implemented 
> with analogue electronics.  You must have had fun building those 
> phase-shifting networks!  My understanding is that the original 
> motivation for Weaver's method was that it was easier to build decent 
> (matched) low-pass filters with a deep stopband using the analogue 
> electronics available at the time, than it was to build the two chains 
> of all-pass filters required to ensure a precise 90 degrees phase shift 
> between the two audio paths.  (Granted, I know it's not quite that 
> simple...  The oscillators in the Weaver method also have to have 
> outputs that are in precise quadrature too, to get good results.)
> 
> Eric, it is interesting hearing things from a comms guy's perspective 
> too, because the people around me in my day job do underwater comms 
> stuff.  I can see the equivalency in the different methods of SSB 
> generation in that they ultimately all achieve the same goal of 
> generating the analytical signal then mixing it up to some other 
> frequency.  And when comparing the total number of poles required in 
> either a phase-shift network or the Weaver's low-pass filters they both 
> have a more-or-less similar requirement for lots of poles close to the 
> unit circle!
> 
> On reading about the Weaver method of frequency shifting (SSB 
> generation) my thought process went something like this...
> 
> The suppression of the unwanted sideband using the phase-shifting method 
> is dependent largely on keeping everything in quadrature.  It's easy to 
> make precise quadrature oscillators (in analogue or digital,) but making 
> two copies of the audio input signal that are always precisely 90 
> degrees apart is always an approximation whether done with an analogue 
> or digital phase-shifting network.  Now the Weaver method circumvents 
> this "problem" by changing it into a requirement for two precisely 
> matched *low-pass* filters who's stop-band attenuation ultimately 
> determines the degree of suppression for the unwanted sideband, if I 
> understand things right.  This is exactly what digital filters are good 
> at!  It's easy to get deep stop-band attenuation, a steep transition 
> band (given enough poles) and both filters will be *exactly* matched if 
> they are implemented by the same algorithm with the same filter 
> coefficients. (state dependent rounding errors aside ;-) )
> 
> So, from this train of thought it seemed that a modern digital 
> implementation of the Weaver method might actually yield better 
> performance (superior sideband suppression) than the digital 
> phase-shifting method for audio manipulation applications?
> 
> Eric, are you implementing your Hilbert transformer as an FIR filter in 
> your comms stuff to maintain linear-phase?  The guys in the comms group 
> here always balk at my suggestions to use IIR filters because of the 
> undesirable non-linear phase response.  But the two low-pass filters in 
> the Weaver method seem to be crying out for implementation as Elliptic 
> IIR filters on a digital platform because of the guaranteed matching, 
> provided the phase response is tolerable.
> 
> I presume you have already seen this implementation of an IIR 
> Hilbert-pair Eric:
> 
> http://yehar.com/blog/?p=368
> 
> I like the simplicity and degree to which he has optimised the 
> implementation, but the 40dB opposite-sideband rejection figure isn't 
> fantastic.  I remember having a discussion with Olli about this years 
> ago, and he tried to explain the equivalence of these two chains of IIR 
> all-pass filters to a single complex half-band low-pass IIR filter.  But 
> something never quite clicked for me, and I think there was a step I was 
> missing somewhere in my understanding!
> 
> -Richie,
> .



More information about the Synth-diy mailing list