I have created a fractional delay line with resolution 1/L of the
input sample time by interpolating a lowpass FIR prototype by L and
extracting subfilters by striding through the interpolated response
starting at different points. The various subfilters give different
fractional delays.
What I don't like about it is that the frequency response varies by
subfilter. The -3 dB cutoff moves.
I am stuck with a fixed-length FIR filter due to hardware constraints.
Can anyone recommend a technique that yields consistent frequency
response for the subfilters? An allpass would be fine. Or tell me that
it is impossible.
John wrote:
> I have created a fractional delay line with resolution 1/L of the
> input sample time by interpolating a lowpass FIR prototype by L and
> extracting subfilters by striding through the interpolated response
> starting at different points. The various subfilters give different
> fractional delays.
>
> What I don't like about it is that the frequency response varies by
> subfilter. The -3 dB cutoff moves.
Aha! I had encountered exactly this problem before.
If you want to decimate the original prototype filter into N subfilters,
you have to raise the requirement of the passband flatness of the
original filter approximately by the factor of N. This ensures the worst
case.
> I am stuck with a fixed-length FIR filter due to hardware constraints.
> Can anyone recommend a technique that yields consistent frequency
> response for the subfilters? An allpass would be fine. Or tell me that
> it is impossible.
I don't know if there is a systematic approach for this problem; I did
it by tweaking the requirements to the original filter. Also, you can
design each of the subfilters independently for best results at the
fixed length.
On Feb 8, 2:50*pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
> John wrote:
> > I have created a fractional delay line with resolution 1/L of the
> > input sample time by interpolating a lowpass FIR prototype by L and
> > extracting subfilters by striding through the interpolated response
> > starting at different points. The various subfilters give different
> > fractional delays.
>
> > What I don't like about it is that the frequency response varies by
> > subfilter. The -3 dB cutoff moves.
>
> Aha! I had encountered exactly this problem before.
>
> If you want to decimate the original prototype filter into N subfilters,
> you have to raise the requirement of the passband flatness of the
> original filter approximately by the factor of N. This ensures the worst
> case.
>
> > I am stuck with a fixed-length FIR filter due to hardware constraints.
> > Can anyone recommend a technique that yields consistent frequency
> > response for the subfilters? An allpass would be fine. Or tell me that
> > it is impossible.
>
> I don't know if there is a systematic approach for this problem; I did
> it by tweaking the requirements to the original filter. Also, you can
> design each of the subfilters independently for best results at the
> fixed length.
>
> Vladimir Vassilevsky
> DSP and Mixed Signal Design Consultanthttp://www.abvolt.com
Hey Vlad, it sounded like the OP interpolated the impulse response as
opposed to decimating the impulse response. I've had excellant results
when decimating impulse responses. I think the OP needs to adjust his
specifications for desinging the filter before its impulse response
gets decimated. I.e., where to map the don't care regions etc.
On Feb 8, 10:57*am, John <sampson...@gmail.com> wrote:
> I have created a fractional delay line with resolution 1/L of the
> input sample time by interpolating a lowpass FIR prototype by L and
> extracting subfilters by striding through the interpolated response
> starting at different points. The various subfilters give different
> fractional delays.
>
> What I don't like about it is that the frequency response varies by
> subfilter. The -3 dB cutoff moves.
>
> I am stuck with a fixed-length FIR filter due to hardware constraints.
> Can anyone recommend a technique that yields consistent frequency
> response for the subfilters? An allpass would be fine. Or tell me that
> it is impossible.
>
> Thanks,
>
> John
John
You do not say how you designed your basic filter. It matters.
Techniques like the Remez-exchange optimized filters meet their specs
only with the complete set of designed values. Neither subsets of the
coefficients of a scaled prototype filter nor local interpolations of
the coefficients of the prototype filter are required to meet the
original specifications and often don't.
Window designs like the Kaiser-Bessel design a waveform that meets
your specification. You can then use the Kaiser-Bessel formula to
generate samples of that waveform at the delays you desire and they
will meet the original specification.
On 2/8/2010 1:18 PM, Clay wrote:
> On Feb 8, 2:50 pm, Vladimir Vassilevsky<nos...@nowhere.com> wrote:
>> John wrote:
>>> I have created a fractional delay line with resolution 1/L of the
>>> input sample time by interpolating a lowpass FIR prototype by L and
>>> extracting subfilters by striding through the interpolated response
>>> starting at different points. The various subfilters give different
>>> fractional delays.
>>> What I don't like about it is that the frequency response varies by
>>> subfilter. The -3 dB cutoff moves.
>> Aha! I had encountered exactly this problem before.
>>
>> If you want to decimate the original prototype filter into N subfilters,
>> you have to raise the requirement of the passband flatness of the
>> original filter approximately by the factor of N. This ensures the worst
>> case.
>>
>>> I am stuck with a fixed-length FIR filter due to hardware constraints.
>>> Can anyone recommend a technique that yields consistent frequency
>>> response for the subfilters? An allpass would be fine. Or tell me that
>>> it is impossible.
>> I don't know if there is a systematic approach for this problem; I did
>> it by tweaking the requirements to the original filter. Also, you can
>> design each of the subfilters independently for best results at the
>> fixed length.
>>
>> Vladimir Vassilevsky
>> DSP and Mixed Signal Design Consultanthttp://www.abvolt.com
>
> Hey Vlad, it sounded like the OP interpolated the impulse response as
> opposed to decimating the impulse response. I've had excellant results
> when decimating impulse responses. I think the OP needs to adjust his
> specifications for desinging the filter before its impulse response
> gets decimated. I.e., where to map the don't care regions etc.
>
> Clay
FWIW, I've done something in-between with good results. i.e., design a
FIR with a reasonably large number of taps, then interpolate it,
(usually with an FFT), up to some very large number of taps (like 4k,
8k, whatever). The implemented filters are usually 8 taps or so, so
there are often potentially 512 to 1024 potential subfilters.
A worry I had long ago was that the DC gain might differ among the
subfilters, as well as stop-band attenuation and other metrics. Since,
as it usually is in my case, this was for a comm system if the
characteristics of the subfilters differed much it would probably be
noticeable in the system performance.
I spent a lot of time on analysis, even though the system was running in
sims and the lab over all the operating conditions with essentially no
measurable implementation loss in the digital processing, and eventually
convinced myself that it was a non-issue. I didn't do anything special
in the original filter design, and used the same techniques that I'd
always used (which included Parks-McClellan with Remez-exchange) and was
just careful about the interpolation process.
On Feb 8, 6:11 pm, Eric Jacobsen <eric.jacob...@ieee.org> wrote:
> On 2/8/2010 1:18 PM, Clay wrote:
>
> > On Feb 8, 2:50 pm, Vladimir Vassilevsky<nos...@nowhere.com> wrote:
> >> John wrote:
> >>> I have created a fractional delay line with resolution 1/L of the
> >>> input sample time by interpolating a lowpass FIR prototype by L and
> >>> extracting subfilters by striding through the interpolated response
> >>> starting at different points. The various subfilters give different
> >>> fractional delays.
> >>> What I don't like about it is that the frequency response varies by
> >>> subfilter. The -3 dB cutoff moves.
> >> Aha! I had encountered exactly this problem before.
> >>
> >> If you want to decimate the original prototype filter into N subfilters,
> >> you have to raise the requirement of the passband flatness of the
> >> original filter approximately by the factor of N. This ensures the worst
> >> case.
> >>
> >>> I am stuck with a fixed-length FIR filter due to hardware constraints.
> >>> Can anyone recommend a technique that yields consistent frequency
> >>> response for the subfilters? An allpass would be fine. Or tell me that
> >>> it is impossible.
> >> I don't know if there is a systematic approach for this problem; I did
> >> it by tweaking the requirements to the original filter. Also, you can
> >> design each of the subfilters independently for best results at the
> >> fixed length.
> >
> > Hey Vlad, it sounded like the OP interpolated the impulse response as
> > opposed to decimating the impulse response. I've had excellant results
> > when decimating impulse responses. I think the OP needs to adjust his
> > specifications for desinging the filter before its impulse response
> > gets decimated. I.e., where to map the don't care regions etc.
>
> FWIW, I've done something in-between with good results. i.e., design a
> FIR with a reasonably large number of taps, then interpolate it,
> (usually with an FFT), up to some very large number of taps (like 4k,
> 8k, whatever). The implemented filters are usually 8 taps or so, so
> there are often potentially 512 to 1024 potential subfilters.
>
> A worry I had long ago was that the DC gain might differ among the
> subfilters, as well as stop-band attenuation and other metrics.
there is a way to guarantee that the DC gain remains constant between
subfilters (without the crude "let's adjust all the taps for this
fractional delay to normalize DC gain"). when you design your ideal
FIR LPF (from which you draw your polyphase coefs from), shoot for a
target gain in the passband to be 1/sinc(k/N), instead of 1, where M*N
is the length of the FIR and M is the number of fractional delays.
and spec your design program to get you an FIR that is N-1 samples
short of what it really spec'd to be which is M*N sample long (so it
should be (M-1)*N+1 long). then convolve that IR with an N-sample
rectangular pulse (of height 1/N), which imposes a sinc(k/N) scaling
to the frequency response in both passband and stopband. this puts
zeros at all non-zero integer multiples of the sampling frequency.
now, for the moment, it escapes me why that means the DC gain for all
the different fractional delays is the same.
if it was pure non-zero DC in the original bandlimited signal, in the
sampled and interpolated signal it would show up at 0 Hz but all of
the other images are wiped out by the sinc() function in the frequency
response. that means when resampled, there are no images to fold back
and **** things up. that means no resampling error and infinite S/N,
the DC coming out is exactly the DC going in. that means that each
subfilter has the same DC gain.
does this make sense, guys? i really can't remember the perfect
reasoning for why this worked, and that's the best i can think of.
Eric, Clay, Vlad, Dale is there a more direct math that proves this,
why is it that when you multiply the frequency response by the sinc()
does it mean that all the subfilters have the same DC gain?
On Feb 8, 3:11*pm, Eric Jacobsen <eric.jacob...@ieee.org> wrote:
..>...
..> FWIW, I've done something in-between with good results. * i.e.,
design a
..> FIR with a reasonably large number of taps, then interpolate it,
..> (usually with an FFT),
..>...
..> *I didn't do anything special
..> in the original filter design, and used the same techniques that
I'd
..> always used (which included Parks-McClellan with Remez-exchange)
and was
..> just careful about the interpolation process.
Interpolation based in the response of the complete coefficient set
should work fine. Desampling to a subset of optimized coefficient set
or interpolation from only near coefficients shouldn't be counted on
to meet the original specs..
On Feb 8, 3:18*pm, Clay <c...@claysturner.com> wrote:
> On Feb 8, 2:50*pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
>
>
>
> > John wrote:
> > > I have created a fractional delay line with resolution 1/L of the
> > > input sample time by interpolating a lowpass FIR prototype by L and
> > > extracting subfilters by striding through the interpolated response
> > > starting at different points. The various subfilters give different
> > > fractional delays.
>
> > > What I don't like about it is that the frequency response varies by
> > > subfilter. The -3 dB cutoff moves.
>
> > Aha! I had encountered exactly this problem before.
>
> > If you want to decimate the original prototype filter into N subfilters,
> > you have to raise the requirement of the passband flatness of the
> > original filter approximately by the factor of N. This ensures the worst
> > case.
>
> > > I am stuck with a fixed-length FIR filter due to hardware constraints..
> > > Can anyone recommend a technique that yields consistent frequency
> > > response for the subfilters? An allpass would be fine. Or tell me that
> > > it is impossible.
>
> > I don't know if there is a systematic approach for this problem; I did
> > it by tweaking the requirements to the original filter. Also, you can
> > design each of the subfilters independently for best results at the
> > fixed length.
>
> > Vladimir Vassilevsky
> > DSP and Mixed Signal Design Consultanthttp://www.abvolt.com
>
> Hey Vlad, it sounded like the OP interpolated the impulse response as
> opposed to decimating the impulse response. I've had excellant results
> when decimating impulse responses. I think the OP needs to adjust his
> specifications for desinging the filter before its impulse response
> gets decimated. I.e., where to map the don't care regions etc.
>
> Clay
Thanks for the replies, they were very helpful. When I design a larger
filter to begin with, then decimate it, the results are much better.