Compute Images/Aliases of CIC Interpolators/Decimators
Cascade-Integrator-Comb (CIC) filters are efficient fixed-point interpolators or decimators. For these filters, all coefficients are equal to 1, and there are no multipliers. They are typically used when a large change in sample...
Four Ways to Compute an Inverse FFT Using the Forward FFT Algorithm
If you need to compute inverse fast Fourier transforms (inverse FFTs) but you only have forward FFT software (or forward FFT FPGA cores) available to you, below are four ways to solve your problem. Preliminaries To define what we're...
Implementing Impractical Digital Filters
This blog discusses a problematic situation that can arise when we try to implement certain digital filters. Occasionally in the literature of DSP we encounter impractical digital IIR filter block diagrams, and by impractical I mean block...
Wavelets I - From Filter Banks to the Dilation Equation
This is the first in what I hope will be a series of posts about wavelets, particularly about the Fast Wavelet Transform (FWT). The FWT is extremely useful in practice and also very interesting from a theoretical point of view. Of course there...
An Efficient Linear Interpolation Scheme
This article presents a computationally-efficient linear interpolation trick that requires at most one multiply per output sample.
The Power Spectrum
Often, when calculating the spectrum of a sampled signal, we are interested in relative powers, and we don't care about the absolute accuracy of the y axis. However, when the sampled signal represents an analog signal, we sometimes need an accurate picture of the analog signal's power in the frequency domain. This post shows how to calculate an accurate power spectrum.
The Discrete Fourier Transform and the Need for Window Functions
The Discrete Fourier Transform (DFT) is used to find the frequency spectrum of a discrete-time signal. A computationally efficient version called the Fast Fourier Transform (FFT) is normally used to calculate the DFT. But, as many...
Should DSP Undergraduate Students Study Z-transform Regions of Convergence?
Not long ago I presented my 3-day DSP class to a group of engineers at Tektronix Inc. in Beaverton Oregon [1]. After I finished covering my material on IIR filters' z-plane pole locations and filter stability, one of the Tektronix engineers asked...
An Efficient Full-Band Sliding DFT Spectrum Analyzer
In this blog I present two computationally efficient full-band discrete Fourier transform (DFT) networks that compute the 0th bin and all the positive-frequency bin outputs for an N-point DFT in real-time on a sample-by-sample basis. An Even-N...
A Two Bin Exact Frequency Formula for a Pure Complex Tone in a DFT
Introduction This is an article to hopefully give a better understanding to the Discrete Fourier Transform (DFT) by deriving an exact formula for the frequency of a complex tone in a DFT. It is basically a parallel treatment to the real case...
Evaluate Noise Performance of Discrete-Time Differentiators
When it comes to noise, all differentiators are not created equal. Figure 1 shows the magnitude response of two differentiators. They both have a useful bandwidth of a little less than π/8 radians (based on maximum magnitude response...
Off-Topic: A Fluidic Model of the Universe
Introduction This article is a followup to my previous article "Off Topic: Refraction in a Varying Medium"[1]. Many of the concepts should be quite familiar and of interest to the readership of this site. In the "Speculations" section of my...
Learn About Transmission Lines Using a Discrete-Time Model
We don’t often think about signal transmission lines, but we use them every day. Familiar examples are coaxial cable, Ethernet cable, and Universal Serial Bus (USB). Like it or not, high-speed clock and signal traces on...
Determination of the transfer function of passive networks with MATLAB Functions
With MATLAB functions, the transfer function of passive networks can be determined relatively easily. The method is explained using the example of a passive low-pass filter of the sixth order, which is shown in FIG.Fig.1 Passive low-pass filter...
A DSP Quiz Question
Here's a DSP Quiz Question that I hope you find mildly interestingBACKGROUNDDue to the periodic natures an N-point discrete Fourier transform (DFT) sequence and that sequence’s inverse DFT, it is occasionally reasonable to graphically plot...
The Discrete Fourier Transform and the Need for Window Functions
The Discrete Fourier Transform (DFT) is used to find the frequency spectrum of a discrete-time signal. A computationally efficient version called the Fast Fourier Transform (FFT) is normally used to calculate the DFT. But, as many...
Modeling Anti-Alias Filters
Digitizing a signal using an Analog to Digital Converter (ADC) usually requires an anti-alias filter, as shown in Figure 1a. In this post, we’ll develop models of lowpass Butterworth and Chebyshev anti-alias filters, and compute the time...
Simulink-Simulation of SSB demodulation
Simulink-Simulation of SSB demodulation or modulation from the article “Understanding the ‘Phasing Method’ of Single Sideband Demodulation†by Richard Lyons Josef Hoffmann The article “Understanding the ‘Phasing Method’ of Single...
Setting Carrier to Noise Ratio in Simulations
When simulating digital receivers, we often want to check performance with added Gaussian noise. In this article, I’ll derive the simple equations for the rms noise level needed to produce a desired carrier to noise ratio (CNR or...
Update to a Narrow Bandpass Filter in Octave or Matlab
Following my earlier blog post (June 2020) featuring a Narrow Bandpass Filter, I’ve had some useful feedback and suggestions. This has inspired me to come up with an updated version, incorporating the following changes compared to the earlier...
PID Without a PhD
I both consult and teach in the area of digital control. Through both of these efforts, I have found that while there certainly are control problems that require all the expertise I can bring to bear, there are a great number of control problems...
The correct answer to the quiz of @apolin
The correct answer to the @apolin quiz can be easily explained using the following Simulink model: In MATLAB you have to initialize the two filters: h = dftmtx (8); h1 = h (3, :); % The filter of the quiz h2 = h (7, :); % The...
Digital PLL’s, Part 3 – Phase Lock an NCO to an External Clock
Sometimes you may need to phase-lock a numerically controlled oscillator (NCO) to an external clock that is not related to the system clocks of your ASIC or FPGA. This situation is shown in Figure 1. Assuming your system has an...
Multi-Decimation Stage Filtering: Design and Optimization
During my research on digital FIR decimation filters I have been developing various Matlab scripts and functions. In which I have decided later on to consolidate it in a form of a toolbox. I have developed this toolbox to assist and...
Linear-phase DC Removal Filter
This blog describes several DC removal networks that might be of interest to the dsprelated.com readers. Back in August 2007 there was a thread on the comp.dsp newsgroup concerning the process of removing the DC (zero Hz) component from a...
A Fixed-Point Introduction by Example
Introduction The finite-word representation of fractional numbers is known as fixed-point. Fixed-point is an interpretation of a 2's compliment number usually signed but not limited to sign representation. It...
Add the Hilbert Transformer to Your DSP Toolkit, Part 1
In some previous articles, I made use of the Hilbert transformer, but did not explain its theory in any detail. In this article, I’ll dig a little deeper into how the Hilbert Transformer works. Understanding the Hilbert Transformer...
Modeling Anti-Alias Filters
Digitizing a signal using an Analog to Digital Converter (ADC) usually requires an anti-alias filter, as shown in Figure 1a. In this post, we’ll develop models of lowpass Butterworth and Chebyshev anti-alias filters, and compute the time...
Multiplierless Exponential Averaging
This blog discusses an interesting approach to exponential averaging. To begin my story, a traditional exponential averager (also called a "leaky integrator"), shown in Figure 1(a), is commonly used to reduce noise fluctuations that contaminate...






