Forums

Problem with IFIR in SRC

Started by Govind October 17, 2005
Hello,

I have implemented polyphase SRC code for ratio of 3/2 (8KHz<=>12KHz). 
I am using 396 tap filter, which gives 1584000 
[ = (24000(Fs)*396)/(3*2)] MAC operations per second (MPS). 
Now I want to reduce the computations by making use of IFIR
method. But I find that the implementation becomes too complicated
to be put in a formula that can be implemented on Matlab.
Can you please give your feedbacks/suggestions on this? 

Thank you very much.

Govind
		
This message was sent using the Comp.DSP web interface on
www.DSPRelated.com
in article 2smdnfa8foZzoc7eRVn-tA@giganews.com, Govind at
govind_s@conceptemsys.com wrote on 10/17/2005 01:55:

> I have implemented polyphase SRC code for ratio of 3/2 (8KHz<=>12KHz).
which way is it? 8 ==> 12 kHz or 8 <== 12 kHz ? and by 8 and 12 kHz, i presume you mean the sampling rate, correct?
> I am using 396 tap filter, which gives 1584000 > [ = (24000(Fs)*396)/(3*2)] MAC operations per second (MPS).
where does the "24000" come from? surely that isn't 24000 *times* Fs, is it?
> Now I want to reduce the computations by making use of IFIR method.
what, the heack, is that??? the "IFIR" method?
> But I find that the implementation becomes too complicated > to be put in a formula that can be implemented on Matlab. > Can you please give your feedbacks/suggestions on this?
if you are up sampling from 8 to 12 kHz and your FIR filter has 396 taps per phase (or is it a total of 396 taps, making it 139 taps per phase, can you clear that up?) your MACS per second will be 12000 * 396 (or 12000*139 if that's the correct number of taps per polyphase). no way to beat that. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
And why so many taps?  Surely 50 or 60 would be enough.  What are your design 
specs?

In article <BF794CD1.B440%rbj@audioimagination.com>, robert bristow-johnson 
<rbj@audioimagination.com> wrote:
>in article 2smdnfa8foZzoc7eRVn-tA@giganews.com, Govind at >govind_s@conceptemsys.com wrote on 10/17/2005 01:55: > >> I have implemented polyphase SRC code for ratio of 3/2 (8KHz<=>12KHz). > >which way is it? 8 ==> 12 kHz or 8 <== 12 kHz ? and by 8 and 12 kHz, i >presume you mean the sampling rate, correct? > >> I am using 396 tap filter, which gives 1584000 >> [ = (24000(Fs)*396)/(3*2)] MAC operations per second (MPS). > >where does the "24000" come from? surely that isn't 24000 *times* Fs, is >it? > >> Now I want to reduce the computations by making use of IFIR method. > >what, the heack, is that??? the "IFIR" method? > >> But I find that the implementation becomes too complicated >> to be put in a formula that can be implemented on Matlab. >> Can you please give your feedbacks/suggestions on this? > >if you are up sampling from 8 to 12 kHz and your FIR filter has 396 taps per >phase (or is it a total of 396 taps, making it 139 taps per phase, can you >clear that up?) your MACS per second will be 12000 * 396 (or 12000*139 if >that's the correct number of taps per polyphase). no way to beat that. >
"robert bristow-johnson" <rbj@audioimagination.com> wrote in message 
news:BF794CD1.B440%rbj@audioimagination.com...
> > what, the heack, is that??? the "IFIR" method? >
Interpolated FIR = IFIR .... Google is your friend :-) Ummmmm..... Matlab "help ifir"?????? Fred
Apologies for vague presentation of the problem. Since I am not an expert
in the development field, it's possible that I am using wrong
terminologies. 
 
I want to convert sampling rate from 8KHz to 12KHz and vice versa. I have
used 'Efficient structure for Fractional Decimation (and Interpolation)'
introduced in P. P. Vaidyanathan (page 129). The book mentions that each
stage works at a common sampling frequency, which in my case is 8K * 3 =
24KHz for fractional interpolation and 12K * 2 = 24K for fractional
decimation. 
 
Let's consider the fractional interpolation. Input sampling frequency Fsi
is 8KHz and the required output sampling frequency Fso is 12KHz. With the
fractional interpolation of ratio 3/2, the input Fs would be upsampled to
Fsmid (8K*3=)24KHz and then downsampled to Fso (8K*3/2=)12KHz. With 396
tap (396 total taps and 139 per phase for upsampler) filter and
non-polyphase implementation MACs per sample would be 396. But with
'Efficient structure for Fractional Decimation (and Interpolation)' MACs
are reduced to (396/3)/2=66 per output sample. And MPS (MACs per second)
is 66*24000 = 1584000. (I have verified this by using a counter in the
filter loop of matlab code with input file of duration 1 second). 
 
I am using the same filter (396 total taps and 198 per phase for
downsampler) for fractional decimation, in which case fractional ratio is
2/3, Fsi = 12KHz, Fsmid = 24Khz and Fso = 8KHz.
 
I hope that the above paragraphs helps you understand what I have done so 
far. I want to use the Interpolated FIR approach (P.P. Vaidyanathan,
page:134) to reduce the computations further.
 
I need to have at least 60 dB attenuation in the stop band and ripple of
not more than 1 dB in the passband. Following remez design specification
was used for the FIR filter. 
[n,fo,mo,w] = remezord( [3800 3999], [1 0], [0.001 0.001], 24000);
 
Thanks n regards,
Govind

> >"robert bristow-johnson" <rbj@audioimagination.com> wrote in message >news:BF794CD1.B440%rbj@audioimagination.com... >> >> what, the heack, is that??? the "IFIR" method? >> > >Interpolated FIR = IFIR .... Google is your friend :-) > >Ummmmm..... Matlab "help ifir"?????? > >Fred > > > > > >
This message was sent using the Comp.DSP web interface on www.DSPRelated.com