# Problem with IFIR in SRC

Started by 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.

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.

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.
>
>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?
>

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?
>>
>
>
>Ummmmm..... Matlab "help ifir"??????
>
>Fred
>
>
>
>
>
>

This message was sent using the Comp.DSP web interface on
www.DSPRelated.com
```