This page contains the older research topics. Though these topics might still need some finishing up, the main focus of our research lies elsewhere.
A scaler is a component that combines the functions of an upsample, FIR filter and downsample. This scaler is to be implemented on a vector processor and as a systolic array.
There is no feedback loop in a Scaler, but the focus lies on getting an implementation for which the sample rate can exceed the clock rate.
A small report on this work has been written, it is available in pdf format. After some revisions we plan to publish it as an internal report.
This filter contains a feedback loop, which makes it harder to parallelize the algorithm. Every output depends on several previous outputs, so it is hard to calculate several outputs simultaneously. The article titled "Fast Recursive Filtering with Multiple Slow Processing Elements" of Lu, Lee and Messerschmitt presents a way to do this for general IIR filters. Our hope was that, since a serial all-pass filter requires less hardware than a general IIR filter, the same would hold for parallel implementations.
We found that the block state space form of an all-pass filter can be constructed in such a way that the B and D matrices partially overlap. The drawback is that the A matrix becomes full. Futhermore we could only use this in VLSI implementations, not in SIMD implementations.
We also found that we could use a form of the look-ahead technique on an all-pass filter and maintain the typical form of the all-pass transfer function, i.e. the denominator is the mirrored numerator. This would allow for implementation with less multipliers, however the resulting filter contains cancelling pole-zero pairs outside of the unit circle. Therefore, since cancelling in practical implementations is inexact, the filter is unstable. If the look-ahead is carried far enough, the cancelling pairs would move toward the unit circle, resulting in a marginally stable filter. (I.e. theoretically it is stable, but round-off effects would accumulate and the filter would become unstable.)
Although we have found no way of implementing an all-pass IIR filter in a significantly more efficient way, our research gave us an overview of the literature. The document we wrote during this research is available in pdf format.
In our search for block implementations of IIR filters (and all-pass filters in particular) we encountered many different architectures. Comparing these architectures proves difficult, since there are many characteristics. Furthermore the importance of these characteristics differ with the application area.
To this end us we created some Mathematica files. They are far from complete or perfect, but we intend to improve and extend them. The files can be downloaded as a zip-archive. Note that the directory to which you unpack this file should be in your Mathematica path for the two example files (EfficiencyIIR.nb and EfficiencyAllpass.nb) to work properly. The command:
$Path = Append[$Path, "C:\\Documents and Settings\\mhorst\\My Documents\\mathematica"]should do this (where you should replace the directory name with your directory of course). You can add it to your kernel's init.m file if necessary (this file can probably be found in the directory "C:\Program Files\Wolfram Research\Mathematica\5.0\Configuration\Kernel"). There is probably an easier way to do this through the front-end, but I have not been able to find it. Back to the project page