This is a rather general set of questions.

  • I'm interested in knowing up to what orders, direct form FIR filters are considered useful for practical applications (both in hardware and software)?
  • What if fixed-point arithmetic is used?
  • Are FIR filters with several hundred or thousand fixed-point taps suitable for some problems, even if this is rare?
  • 1
    $\begingroup$ For software based mastering equalizers it's not uncommon to use 64K taps using overlap add/save based FFT convolution. $\endgroup$ – keith Aug 7 '16 at 13:38
  • $\begingroup$ Thanks keith! Can you provide some references, please? $\endgroup$ – sj07 Aug 7 '16 at 14:16
  • $\begingroup$ Computational Complexity and Accuracy (plus stability) are main concerns. And hence real time or offline should also be stated for someone to be able to provide a more meaningful and useful answer. $\endgroup$ – Fat32 Aug 7 '16 at 15:08
  • 1
    $\begingroup$ Emulating concert hall reverb by convolution with the buildings impulse response often requires a FIR filter many tens of thousands of taps in length (depending on the size of the hall). Done by multiply overlapped add/save fast convolutions. $\endgroup$ – hotpaw2 Aug 7 '16 at 17:05
  • $\begingroup$ @sj07 asking for references for "you can do that": well, I can build you a 100,000 tap fir just now, and you can refer to me; but that won't really help you in any way, would it? you need to narrow down your applications a bit (as mentioned by Fat32, for example, live or offline? Sampling rates? complex/real? $\endgroup$ – Marcus Müller Aug 7 '16 at 17:37

All applications are bound to some notion of accuracy of the magnitude/phase response.

Given a FIR is a polynomial approximation to a desired magnitude and phase response:

  • The lower the number of taps, the poorer the approximation, but the lower the computational overhead.

  • The higher the number of taps, the better chance you have of a more accurate approximation (depending on your design approach), but the higher the computational overhead.

There's not much more can be said on the finer points unless you ask a more specific question at which point there are many people cleverer than me in this forum who will be able to give you some good pointers.

For instance FFT makes high order FIR filters possible as it is computationally efficient and has good numerical properties. High tap FIR filters aren't rare and I can vouch for them being used in audio (64K and 128K taps are common for some purposes).

Using fixed point arithmetic usually implies you are computationally bound by a chip without an efficient floating point arithmetic unit and the numerical properties of fixed point arithmetic tend to limit the accuracy of high order filters. So high order filters are not aided by fixed point arithmetic.

UPDATE, based on question in comments about upper limit on taps for fixed point:

I've only ever implemented FIR filters using floating point arithmetic, but I have written fixed point routines (for non FIR related applications) on a 32-bit 16 instruction RISC architecture in assembler. It's possible to get any precision you want by extending your arithmetic across words at the expense of clock cycles i.e. you can improve your precision in fixed point if necessary, but at some point you will hit the limit of your processing capability. So you ideally need to say what chip you're using, what language/libraries you're going to use, show us a graph of your ideal magnitude/phase response, what latency you're happy with and what input/output rate. It's impossible to give hard limits without some real constraints. It might be another question on SO perhaps...

| improve this answer | |
  • $\begingroup$ Thanks for the answer. For the last paragraph, I've seen a lot of examples where filters with fixed-point coefficients (taps) have lengths in the order of 20, 30, 50. What are some upper limits of these orders in practice? Are orders up to 200 useful? I understand that a precise answer depends on the application and the chip used and that it doesn't make sense to increase the number of taps from a certain value (which depends on the filter specification and the fixed-point format used). From your personal experience for instance, what is the largest fixed-point FIR filter you had to use? $\endgroup$ – sj07 Aug 7 '16 at 20:30
  • $\begingroup$ also see my answer to dsp.stackexchange.com/questions/31066/… $\endgroup$ – Marcus Müller Aug 7 '16 at 21:10
  • $\begingroup$ I've updated my answer regarding upper limits on taps for fixed point arithmetic as I could not fit my reply in the comments. $\endgroup$ – keith Aug 8 '16 at 8:04
  • $\begingroup$ Again, thanks! I'm perfectly fine with this answer now. $\endgroup$ – sj07 Aug 8 '16 at 9:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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