1
$\begingroup$

I'm studying a project.

My signal is audio 8KHz Mono, 8 bits in Low frequencies 70Hz until 1200Hz.

When I perform the calculus with the transition band is very narrow (Transition Frequency) my Order results are (according to proposed window):

For this Example the worst case:

DeltaFrequency = 1.060180596543088 Hz
dNormalizedDeltaFreq= 1.060180596543088/8000

How is calculated the Order? My Answer is below, check the PD!

  • Rectangular: 6793
  • Hamming:24903
  • Hanning:23393
  • Kaiser:27353
  • Blackman:41503

If I try to use 16KHz, before orders will be doubled!

Then, I want to use Hardware only to perform the filtering FIR process, and I'm worry about of Time needed to perform this functionalities.

COMMENT1:

Reduce Sampling Frequency is not optional, I need to deal with 1200Hz signals too!

PD: (This is not question!)

    if (windowType.toLowerCase().equals("rectangular")) {
      Size = (int)Math.ceil(0.9/dNormalizedDeltaFreq);
    }
    if (windowType.toLowerCase().equals("hamming")) {
      Size = (int)Math.ceil(3.3/dNormalizedDeltaFreq);
    }
    if (windowType.toLowerCase().equals("hanning")) {
      Size = (int)Math.ceil(3.1/dNormalizedDeltaFreq);
    }
    if (windowType.toLowerCase().equals("kaiser")) {
//      Mitra's book Handbook for Digital Signal Processing quotes Kaiser with a 
//      simple estimate: N = [-20*log10(sqrt(dp*ds)) - 13]/[14.6(ws - wp)/2pi]
       double Att = 60.0;
      Size = (int)Math.ceil((Att - 7.95)/(14.36*dNormalizedDeltaFreq));
    }
    if (windowType.toLowerCase().equals("blackman")) {
      Size = (int)Math.ceil(5.5/dNormalizedDeltaFreq);
    }

QUESTION 1: it is feasible to use a FIR filter of this Order?

QUESTION 2: Which single device (hardware) help me perform this function?

QUESTION 3: How could be calculated the delay time?

$\endgroup$
3
  • $\begingroup$ Why do you need such a narrow transition band? $\endgroup$
    – Matt L.
    Commented Nov 11, 2015 at 20:53
  • $\begingroup$ I agree with Matt: It's very rare that you need filters with a transition region of about 1Hz. Where did you get that requirement from? $\endgroup$
    – Peter K.
    Commented Nov 11, 2015 at 21:00
  • $\begingroup$ I need to separate Low frequencies for 73.416191Hz (from LowCutFrequency 71.32617550580552 until HihgCutFrequency 75.5674506101949) and 77.781745 Hz (from LowCutFrequency 75.5674506101949 until HihgCutFrequency 80.06092505632031), As you can see HihgCutFrequency is equal to LowCutFrequency for contiguous Frequecies, then if I increase the separation between bands then I lose information within the same! $\endgroup$
    – Anita
    Commented Nov 11, 2015 at 21:07

1 Answer 1

2
$\begingroup$

There are three different implementations of FIR filters that I am aware of.

The first is the basic "transversal" FIR in which you sum up the terms of the summation directly. It gets very expensive if $L$, the FIR length, gets long.

The second is the so-called "fast convolution" in which the FIR impulse response is zero-padded to a longer length and the DFT is applied to it once. Then there are two slightly different procedures, "overlap-add" (OLA) or "overlap-save" (OLS, sometimes called "overlap-scrap" which I think is more descriptive) to process blocks of the input into blocks of the output.

Both of these methods are well covered in textbooks.

A third method, not really covered in textbooks at all, is the "Truncated IIR" filters (TIIR) and this might apply in your case. The simplest example of a TIIR filter is the moving-sum or moving-average that you might find in cascade-integrate-comb (CIC) filters. They have recursion in them, but they are not, mathematically, IIR. Their IIR impulse response gets cancelled or truncated.

If you're trying to implement a long FIR that is a sliding rectangular window (that's a moving sum) or a sliding Hann window or sliding Hamming window, you can do that very efficiently with a TIIR. A sliding Blackman is a little harder and I don't think TIIR will work for a sliding Kaiser.

If you know your 1st or 2nd-order IIR filters and want to truncate their impulse response, this shows you how to do it. Higher order IIRs can be factored into 2nd-order sections, but the finite lengths of the TIIR will add. If you want a higher order IIR with a given truncation length, the thing to do is to parallelize the 2nd-order sections (using partial fraction expansion) and then truncate each parallel 2nd-order section to the same common FIR length.

$\endgroup$
2
  • $\begingroup$ Thank you!, may I mistake but I have discarded concepts IIR Filters, only Want to use FIR!, But I need more information for the second, Please put a Link about this with practical examples: I have 20 years of not working with DSP. :( $\endgroup$
    – Anita
    Commented Nov 11, 2015 at 21:13
  • $\begingroup$ do you understand how to make an efficient moving-average or moving-sum filter? you're not gonna add up all those terms for each and every sample. you will have a delay line, an accumulator, and add the new sample in the accumulator and subtract the old sample (that falls off the edge in the delay line) from the accumulator. can you picture that? if so, that is a simple TIIR and it is FIR. $\endgroup$ Commented Nov 11, 2015 at 21:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.