FIR filter design – arbitrary responses to a filter

Its interesting how little real information about this topic there is on the web !!! There are reams of paper dedicated to learned treatises and another set of reams of paper ( and articles) dedicated to so called practical methods of design but we find these of little value to a practicing engineer unless that practicing engineer is willing to spend an inordinate amount of time and effort to sift through a lot of unnecessary information about FIR filter design. To put it simply you have two pieces of information you need to do the task. Either you have an arbitrary frequency response you want to implement as a FIR filter or you have an impulse response you want to use to implement a FIR filter. The frequency response is the “FFT” of the impulse response while the impulse response is the reverse. It is our intention to present in these posts the details of techniques that allow an engineer to do this in a considered and logical fashion. Of course there is always MATLAB to fall back on, except MATLAB is an expensive piece of software. There is also OCTAVE but this is all but impossible to use or install correctly. However, it does have the merit of being very inexpensive .Also the mechanics of how you use FIR2, FIR1 etc is hidden so it is not instructive. Of course many engineers may find this an advantage. We feel that there is more to FIR filter design than just running MATLAB scripts. Please visit our website for more information on related topics.

Very basic information about FIR filters. Just a stepping stone to learning the art of FIR filter design. For more details :

Signal Processing utilities for design and data processing

It is interesting that the MATLAB utilities that I seem to use a lot ( besides those for filter design like FIR1, REMEZ and so on) are SPLINE, POLYFIT and POLYVAL. I typically use these for fitting x-y data for approximations of various measurements. In addition the identities based on INTERP are also very useful and can be used with the fitting utilities mentioned above. MATLAB has extensive documentation on these and their multiple options.

Please visit Signal Processing Group Inc’s. website for more technical and other information.

A basic approach to impedance matching in many different forms for practicing engineers and students. Get your copy:

Finite impulse response digital ( FIR ) filters

A very basic primer on FIR filters

As the semiconductor technology line widths grow smaller and smaller, many functions that were implemented with analog techniques have to be designed using digital techniques.

Filtering is one such idea. Digital filters are a natural for fine line technology once the signal has been converted to digital. One of the more popular techniques is FIR filtering.

These filters have some favorable characteristics that make them popular for implementation in SOC technology. A recent book released by Signal Processing Group Inc ( authored by Ain Rehman) describes these types of filters in a succinct and practical manner.

This should allow a practicing engineer ( or a student) to implement FIR filters fairly easily. Click on the image below to get your copy. It is not free to purchase but costs a modest amount and gives much in exchange. Also please visit the Signal Processing Group Inc. website for more info.

Sampling frequency and its many manifestations for DSP manipulations.

Further to an earlier post on various frequencies and rates in a sampled DSP system or circuit, here is small addition to the collection. We know that if fs is the sampling rate, or sampling frequency, we can use it to normalize other frequencies in the circuit or system, by dividing the other frequencies by fs ( or fs/2) which is the normalizing factor. So we can use fs as unity ( fs/fs =1) and use this metric to normalize all other frequencies. We can also choose to use fs/2 as the normalizing factor so fs would be 2 in this case. MATLAB prefers to use fs/2 as the normalizing factor, so a 1 is fs/2 in this case.

We can also use another normalized expression for the frequency or frequencies. Divide the frequency in question by the sampling frequency and equate this to wo/2*pi. ( I like to think of wo as the radian frequency). The frequency in question ( say fo) should be expressed in terms of fs. So now you can express normalized frequencies in terms of pi!. All these units are very much in use in the DSP world. Please visit the Signal Processing Group Inc. website for more technical information.

I also like the treatment of digital frequency from two sources. Professor Fowler expose’ and from AllSignals, a website that appears to be very useful all around. I think anyone desirous of entering or remaining in the field of DSP should be very aware of the concept. Please visit our website for more info about us and technical info.

A small book with many practical expressions, explanations and equations for rapid impedance matching supported by freeware.

Free CAD Tools for design

Looks like a few CAD tools have reached the realms of the public domain that seem to be particularly suited to RFMW, Digital filters, simulations etc. This sudden explosion of public domain freeware is certainly a welcome development for cash strapped small companies. At SPG we have evaluated a few of these tools and even developed some of our own, albeit not as complex. We were impressed by Octave and Scilab that provide a certain level of relief from the extremely expensive MATLAB for instance. Given that these tools are much harder to install and not as user friendly. Another tool we liked was QUCS ( Quite Universal Circuit Simulator). It does a pretty good job. Although we were disappointed to find that it does not have a HEMT model that could have made a big difference to us. Another tool we really like is GNUPLOT. A very useful and user friendly plotting utility. We have been using this for a while and it has proved to be really superb. Kudos to the developers. In addition we too have a large number of calculators and small utilities for RFMW design, analog design, filter design and DSP that we have developed. They fill the gap between what we cannot find on the market and/or do need to pay a kings ransom to own. Please visit our website for more info about us and technical papers.

Identities and information to either refresh a practicing RFMW engineer’s memory or to quickly be used in the practical design of circuits and subsystems. A small Book with very useful information, equations and supporting freeware.

Half band filters- a tutorial

Half band filters are very useful digital filters that find use in decimation of multi-rate signals and in the decimation filters for delta sigma ADCs. A paper on these useful filters is available in Signal Processing Group Inc. by request. Please contact us at if you would like a copy. Please visit our website for more technical info.

Digital filter design MATLAB utilities

For those of us who may be involved in digital signal processing of signals, and specially digital filtering, MATHWORKS ( MATLAB) has developed and offers the following utilities ( among others) to help us design and analyze these types of filters. The utilities that the author has used and found very useful are: remez, freqz, fir1, impz, various window functions. Remez implements the Parks- McClellan algorithm. In this utility the user provides a frequency, magnitude pair and the order of a required filter. The utility provides the coefficients of the filter. Apparently remez has been replaced by firpm. Details of the techniques are on Google or MATLAB.
freqz calculates the frequency response of a digital filter given the coefficients of the transfer function ( b,a) and n, the number of frequency points to be calculated. The result is a two dimensional matrix [h,w] where h is the frequency response at the frequency point w. Details on Google or MATLAB.
impz is another very useful utility that calculates the impulse response of a filter. Given the numerator and denominator coefficients of he filter, impz returns the impulse response h, and the time t of the response.
stem is a very useful utility that can be used to plot the impulse response as a collection of stems with little circles at their termination points.
plot is another very useful function that plots responses of filters ( and other quantities) in MATLAB.
All of these utilities have multiple options and the user can access these using MATLAB.
Please visit the Signal Processing Group Inc. website for more useful technical information