0
$\begingroup$

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?
$\endgroup$
2
$\begingroup$

Circular buffers are only useful if the contents of the delay elements are not changed when shifted. So you're right that circular buffers cannot be used for the transposed structures. However, this doesn't necessarily mean that the transposed structures are less efficient than the direct forms, it just means that the data aren't just shifted through a delay line. The complexity for computing the new state vector in the transposed structure is comparable to the complexity for computing the output from the states in the direct form.

$\endgroup$
  • $\begingroup$ "The complexity for computing the new state vector in the transposed structure is comparable to the complexity for computing the output from the states in the direct form." This is very insightful and I didn't make this connection until after implementing the transposed structure. You're absolutely right. $\endgroup$ – Izzo Nov 27 '16 at 19:47
  • $\begingroup$ @Teague: Yes, implementing the different structures indeed helps a lot in understanding their subtleties. Programming an algorithm is definitely the best way to prove that you've really understood it. $\endgroup$ – Matt L. Nov 27 '16 at 19:52

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.