﻿ Iowa Hills Software - Analog and Digital Filter Design Software

Iowa Hills Software
Digital and Analog Filters

Filter design was one of my specialties as an RF engineer. Now that I am retired, I work on these filter design programs when it is too cold in Iowa to ride bicycle. The programs are free.

Filter Design Programs
FIR Filters:  This FIR program synthesizes both Parks McClellan and Fourier filters (windowed). It is also capable of synthesizing filters from polynomials such as the Bessel and Inverse Chebyshev.

IIR Filters: This IIR filter program uses the Bilinear Transform method. It can synthesize filters up to 20 poles from all the classic polynomials, from the Gauss to the Elliptic.

RF Filters: This RF Filter program synthesizes filters constructed of inductors, capacitors, and transmission lines. Its main focus is the synthesis of Direct Coupled and Norton Transformed band pass filters.

OpAmp Filters: This OpAmp filter program synthesizes VCVS and MFB all pole filters (not Elliptics or Inverse Chebyshevs). It synthesizes filters, up to 20 poles, from the Butterworth, Chebyshev, Bessel, Gauss, and Adjustable Gauss polynomials.

Hilbert Filters: (Special Phase Adjusted Filters) Band pass filters are unique in that we are able to set their phase to any value desired. Hilbert Transform filters are a classic example of this. This page starts with an explanation of Hilbert Phase, and then shows how the Hilbert Filter program can be used to design a number of special band pass filters.

Filter Polynomials and Root Finder: This utility programs generates the 2nd order filter coefficients needed for the design of OpAmp and IIR filters. The program also has a root finder capable of finding the roots of 90th order polynomials.

Filter Design Methods
IIR Filter Design Using the Bilinear Transform: This page develops the equations used to generate IIR filters from the s domain coefficients of analog filters using the Bilinear Transform.

The FIR Frequency Sampling Method This page shows a method for designing FIR filters by over sampling the frequency domain. It shows how to define a custom response (magnitude and phase) and also shows how to properly sample a filter polynomial, such as the Butterworth, to create an FIR filter.

Chebyshev IIR Filters, Inverse Chebyshev IIR Filters, and Elliptic IIR Filters These pages show the merits in using these polynomials for IIR filters (as compared the Butterworth).

FIR Filter Responses Using Polynomial Filters: This page discusses using the polynomial filters, such as the Butterworth and Chebyshev, as prototypes in the design of FIR filters.

The Differences Between FIR and IIR Filters: For those who are new to digital filters, this page describes some of the most important differences between FIR and IIR filters.

Adjustable Gauss Transitional Filter: This page describes the Adjustable Gauss polynomial, a new transitional filter polynomial capable of generating a response anywhere between a Gaussian and Butterworth response.

OpAmp Filter Design Guidelines: This page discusses various guidelines for designing op amp filters.

Example C Code for FIR and IIR Filters
FIR and IIR Filters: This page has code for synthesizing and implementing digital filters. Algorithms for windowed and Parks McClellan FIR filters are given as well as the code for calculating IIR filter coefficients using the Bilinear Transform.

Smith Chart Program
Smith Chart: The Smith Chart is a classic tool for designing RF matching networks. This Smith Chart program also does bilateral matching with s parameters and has some built in tools for RF engineers.

Other Topics
Polynomial Root Finder: This page gives short description of the P51 root finder, as well as the source code. It is for polynomials with real coefficients, up to 100th order.

Discrete Inverse Laplace Transform:  This is an easy method for obtaining the time domain response of H(s).

Group Delay:  This discussion of group delay describes the effects of non linear phase. It also relates group delay to the amount of time needed for a signal to pass through a filter.

Comments Page:  Let us know what you think.