Finite/Infinite Impulse Response Filter Generator


This tool generates a Transposed Direct Form implementation of a Finite Impulse Response (FIR) filter, or an Infinite Impulse Response (IIR) filter, from a standard difference equation. The multiplier blocks within the design are generated from the Spiral Multiplier Block Generator. An FIR can be generated by simply setting a_0 to one and all other a_k constants to zero. The values of the b_k constants form the notches of the FIR. In the Transposed Direct Form I implementation, the IIR is generated from two separate FIR filters, connected by an adder. In the Transposed Direct Form II implementation, the FIR filter tool is not used at all, and the two multiplier block outputs are taken directly through adders and input into the flip flop array.

Standard Difference Equation
Transposed Direct Form
Finite Impulse Response Filter
Transposed Direct Form I
Infinite Impulse Response Filter
Transposed Direct Form II
Infinite Impulse Response Filter


Input: Two lists of integer or fixed-point constants: a_0, ..., a_n-1 and b_0, ..., b_n-1
Output: FIR/IIR Verilog code. The only operations used in the generated multiply blocks are additions, subtractions, shifts and negations.



The filter generator uses the following paper work as core routine.

  1. Yevgen Voronenko and Markus Püschel 
    Multiplierless Multiple Constant Multiplication 
    ACM Transactions on Algorithms, Vol. 3, No. 2, 2007

Software Download

Our software is available under GNU GPL license (a commercial license can be obtained on request): firgen.tgz (30 KB),

Note that the software needs the Spiral Multiplier block generator as subroutine.

Copyright (c) 2006 by Joseph Trapasso for the SPIRAL Project, Carnegie Mellon University

Contact: help at spiral dot net