FIR-bandpass and Hilbert-flter in one?

Guest #4147477
hallo together,

today I have a little question: Is it possible to turn a common 
FIR-bandpass into a bandpass with 90 degree phase shift? And if 
possible, how to do?

My usual procedure:
1. make a lowpass for the lower frequency edge (sin(x)/x * Blackmann)
2. make a second lowpass for the upper frequency edge (also sin(x)/x * 
Blackmann)
3. normalize both lowpasses
4. turn the second lowpass per spektral inversion to a highpass
5. add both passes, this makes a band reject pass
6. turn it into a band pass by spektral inversion

This makes all the taps for a decent FIR-bandpass, it works fine for 
even as well as for odd tap numbers, but without any phase shift.

The output is limited to the desired frequency span as requested, so I 
hope it should be possible to add a 90 degree phase shift to it (a la 
Hilbert)

A decent testbench for the a.m. filter I already have written for 
myself, but not yet for a added Hilbert transformation.

so, has anyone a nice idea for this?

kind regards
W.S.
Guest #4148223
Sorry, no.
I already know the apps from IOWA.
My intention is rather, to be able to calculate the taps at runtime in 
the device. So I need the algorithm raher than the output of a IOWA 
filter app.

thanks and
kind regards
W.S.
Guest #4149218
Moin,

Maybe this recipe works out for you:

All frequencies between 0..1(=Fsample/2)

Lower Band edge: Fa
Upper Band edge: Fb

Calculate:
 Fshift=(Fa+Fb)/2
 Flp=(Fb-Fa)/2

Design Lowpass filter with Flp as usual. Index of its coefficents goes 
from -k...0...+k.
For the Quadrature-BP: Multiply each of its coefficients by 
sin(pi*k*Fshift) (for the Inphase-BP: Multiply with cos(pi*k*Fshift))

Gruss
WK
Guest #6842310
Carlton F. wrote in post #6841692:
> Iowa Hills Hilbert Filter Designer

I DO know this app. But: meanwhile I found the solution myself.

Just for your interest:
1. calculate a usual band pass (as I already described) using sin(x)/x - 
this gives you a mirror symmetric filter kernel, which does not alter 
the phase. Let us call the result Y[0..M-1]
2. calculate the same band pass using (1-cos(x))/x instead of sin(x)/x - 
this gives you a point symmetric filter kernel, which shifts the phase 
and makes a 90 degree phase shift. Let us call the result Z[0..M-1]
3. assume, each tap is a point in the Y,Z lane. Now you can turn this 
point for a angle of your desire according to the known CORDIC 
procedure. This gives you (in the Y array) the final kernel with a phase 
shift of your choice. The new values in the Z array are not used.

W.S.
Guest #6845973
but you did not really take all of this 6 years to find the solution, 
did you?

I wonder which is the application which require this function?
Guest #6845980
Carlton F. wrote in post #6841692:
> Iowa Hills Hilbert Filter Designer, hope it will help

It was just SPAM that and pushed the thread.
Guest #6846284
Tobi wrote:
> I wonder which is the application which require this function?

When you want to receive SSB transmissions, you need to suppress the 
unwanted side band. For this you can use a narrow quartz filter if you 
design a analog receiver - but designing a digital receiver you need to 
use a I/Q mixer and apply to one of the resulting data streams a 
additional 90 degree phase shift - or apply a phase shift of +45 degree 
to one stream and a phase shift of -45 degree to the other stream (this 
is in short called the phase methode). But it is rather uncomfortable 
and a waste of clock cycles to apply a straight delay to one stream and 
a 90 degree Hilbert transformation to the other stream, so I decided to 
combine the band pass filtering and the phase shift to avoid wasting 
precious clock cycles.
That's it.

W.S.
Guest #7184950
Band stop filter has two pass-bands and separated by a small frequency 
called notch frequency where it has zero output.
Guest #7186159
The problem is solved. Looking back I see, that the solution is easy. 
Simply calculate a complex filter, the real component is 
mirror-symmeteric and the imaginary component is point-symmetric and 
then rotate it using CORDIC or similar. So every phase shift is 
possible.

So this thread may be closed.

W.S.

Reply

A question of your own? This thread is over 11 years old. Ask it in a thread of its own – more people read along there, and it gets answered more often and sooner.

Start a new thread

A fix, an addition or feedback on this thread? Then reply here.

Formatting
  • [c]C-Code[/c]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]
  • [[Title]] – link to an article
  • Link to another post: right-click its post ID (#8078628), copy the address, paste it into the text

More about formatting

Post long source code as an attachment, not in the text.

Already registered? Log in

Not shown to anyone. We send you a link; your post appears once you confirm it there.

By submitting you create a free account and accept the terms of use.