I'm currently working on a project where I'm programming IIR digital filters. I have already finished the direct form 1 and & 2 implementations.
When doing direct form 1 and 2, I was able to leverage the use of circular buffers for storing data. This allowed me to easily insert new values into a tap line and save the cost of shifting data in memory.
However, I've just started working on the transposed direct form 1 filter and am having a difficult time in identifying whether or not a circular buffer is needed. Unlike the direct forms 1 and 2 where the memory was simply shifted, it seems like the transposed forms require all the previous values to be rewritten. Essentially, the block diagram appears that every memory state will change depending on some current value.
Referring to the transposed direct form 1 diagram illustrated here, it shows that each 'state' will be dependent on a previous state as well as some instanteanous value. The instantaneous value in this case is v[n].
So my questions:
- Do/can transposed direct form filters benefit from circular buffers?
- If not, does this mean that transposed realizations are computationally 'more expsensive' due to the fact that every state (memory) has to be recalculated for every filter update?