I'm trying to generate sets of all-pass FIR filter coefficients to apply varying degrees of phase shift (say from 0 to pi/2) to filter input signals. Can anyone suggest a good way to go about calculating these? Will it be similar to the derivation of a Hilbert Transform? Thanks very much, Jim Singleton This message was sent using the Comp.DSP web interface on www.DSPRelated.com

# FIR filter phase shifter

Started by ●May 20, 2005

Reply by ●May 20, 20052005-05-20

in article b86dnXt-h4OOZBDfRVn-1w@giganews.com, jim_dsp_q at js_04410@yahoo.com wrote on 05/20/2005 10:49:> I'm trying to generate sets of all-pass FIR filter coefficients to apply > varying degrees of phase shift (say from 0 to pi/2) to filter input > signals.you want a constant phase shift for all frequencies? and constant gain?> Can anyone suggest a good way to go about calculating these? > Will it be similar to the derivation of a Hilbert Transform?i s'pose, if you're willing to put up with a delay factor in the phase shift, you can sum the output of a Hilbert transformer (or the negative of it) to the input signal delayed by the same amount your H.T. does. that will give you the angle you want, and then you'll have to scale if you want constant gain for all frequecies. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."

Reply by ●May 20, 20052005-05-20

>>you want a constant phase shift for all frequencies? and constantgain? Yes exactly. I'm trying to impliment selectable phase shifters (i.e. I'll have coefficients stored for 0 shift, pi/16 shift, pi/8 shift up to pi/2) for two inputs of an FPGA (for use in stimulating a digital beam former in another FPGA). The firmware I was supplied with has 16 tap filters applied to both inputs, and I thought they would be an easy solution for this problem. I first tried taking the fft of two sine waves (one trailing the other by pi/4), then doing a complex divide to get the impulse response of the required filter, but the result wasn't very good at all, so I started looking into the derivation of the Hilbert transform and trying to make it work for pi/4 instead of pi/2. My background isn't that strong in this though and I haven't gotten it to work.>>i s'pose, if you're willing to put up with a delay >>factor in the phase shift, you can sum the output of >>a Hilbert transformer (or the negative of it) to the >>input signal delayed by the same amount your H.T. >>does. that will give you the angle you want, and >>then you'll have to scale if you want constant gain >>for all frequecies.So you don't think I can do this with just the simple FIRs? This message was sent using the Comp.DSP web interface on www.DSPRelated.com

Reply by ●May 20, 20052005-05-20

jim_dsp_q wrote:> I'm trying to generate sets of all-pass FIR filter coefficients to apply > varying degrees of phase shift (say from 0 to pi/2) to filter input > signals. Can anyone suggest a good way to go about calculating these? > Will it be similar to the derivation of a Hilbert Transform? > > Thanks very much, > > Jim Singleton > > > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.comYou'll need a Hilbert transformer with the bandwidth you want. Assuming that you use an odd number of taps and your tap weights are adjusted to give unity gain, the sum of the filter output and the output from the middle tap will give 45 degrees phase shift and a gain of sqrt(2). With both the original signal and one shifted by 90 degrees, you can get any phase you want by linear addition and scaling. Consider the Scott T transformer: It converts between 2-phase and 3-phase power. There may be a cleverer way, but I kinda doubt it. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������