Quantization Effects in the Polyphase -Path IIR
Artur Krukowski, Richard Charles, Spicer Morling, İzzet Kale · 2002
Polyphase IIR structures have recently proven them- selves very attractive for very high performance filters that can be designed using very few coefficients. This, combined with their low sensitivity to coefficient quantization in comparison to stan- dard FIR and IIR structures, makes them very applicable for very fast filtering when implemented in fixed-point arithmetic. How- ever, although the mathematical description is very simple, there exist a number of ways to implement such filters. In this paper, we take four of these different implementation structures, analyze the rounding noise originating from the limited arithmetic wordlength of the mathematical operators, and check the internal data growth within the structure. These analyses need to be done to ensure that the performance of the implementation matches the performance of the theoretical design. The theoretical approach that we present has been proven by the results of the fixed-point simulation done in Simulink and verified by an equivalent bit-true implementation in VHDL. NE OF the important implementation issues, which have to be considered during the design of the architecture for any type of filter, is the storage requirement for the internal cal- culations. The size of the memory has to be such that it does not cause the loss of precision due to rounding effects of the results of internal multiplications and summations. It happens very often, especially for IIR filters having a feedback loop, that even if the input and output samples are limited to unity and are represented with -bits, the internal values might have values well above one (even infinitely large values for unity allpass co- efficient) and might require many more bits than in order to provide a reliable output. Additionally, there may be a big dif- ference between internal values. The result of one summation can be below unity; the output of the other one may be very large. This makes for many problems in the implementation, as it would require varying the position of the decimal point