Signal Processing Stack Exchange is a question and answer site for practitioners of the art and science of signal, image and video processing. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

My question is regarding the memory of a filter when we want to implement it on a real time dsp environment. We have certain memories like scratch memory , intermediate memory and internal memory. Does anyone knows how to we implement a filter in real time environment keeping in mind the memory considerations because memory is an important issue when it comes to real time signal processing. I want to implement a low pass filter using the above conditions.

share|improve this question

If memory is your primary concern then an IIR filter is the way to go. It uses very little memory and is pretty computationally efficient.

FIR filters' memory length is one less than the number of filter taps. This usually isn't that much, but it can add up if there are a number of filters and/or they are long.

share|improve this answer

Not really sure what you mean...

Scratch memory is probably temporary memory that is only used during one call to the filter (like the result of the MAC operations in an FIR). This should be internal since it is used so often.

Intermediate(?) memory - could this be state variables like the input signal history as in an FIR? If so, also internal, because the FIR does convolution with this array.

Internal memory is internal memory. This should be internal because it is called internal. You are probably referring to the coefficients of a filter since these don't change, but I have no idea from your question.

The only thing you should have externally might be your input signal - each new sample gets copied into your history array for multiplication with the coefficients of the filter. 1 copy from external memory per filter pass isn't too expensive.

Things get much more complicated when you have SIMD, multiple memory banks, etc., but you didn't mention any of that in your question.

share|improve this answer
I mean something like that: 1) initial part, filtering with existed filter memory data .. 2) partial accumulated filter output without input samples.... 3)final filter output with input samples accumulated to the previous result... 4)body part, filtering signal samples .... 5)End part, filtering with the next signal or zero 6) final filter output with input samples accumulated to the previous result... These are the basic steps give by a teacher to implement in C language. Can you explain them by intuition if possible. – D X Feb 25 '13 at 13:27

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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