DSPRelated.com

Fractional Delay FIR Filters

Neil RobertsonNeil Robertson February 9, 202017 comments

You can realize arbitrary fractional-sample delays with standard FIR filters by shifting a sinc impulse response and removing symmetry, then windowing the result. This post shows a practical window-method implementation using Chebyshev windows, gives Matlab functions (frac_delay_fir.m and frac_delay_lpf.m) in the appendix, and walks through examples that demonstrate the delay, magnitude trade-offs, and how increasing taps widens the flat-delay bandwidth.


The DFT of Finite-Length Time-Reversed Sequences

Rick LyonsRick Lyons December 20, 201910 comments

Rick Lyons digs into a surprisingly under-documented corner of DSP, showing how finite-length time reversal changes a sequence's DFT. The post distinguishes flip and circular time-reversal, gives closed-form DFT relationships, and explains why modulo N arithmetic matters. Engineers get ready-to-use tables and derivations that clarify when and how time reversal affects spectral analysis.


Model Signal Impairments at Complex Baseband

Neil RobertsonNeil Robertson December 11, 20197 comments

Neil Robertson presents compact complex-baseband channel models for common signal impairments, implemented as short Matlab functions of up to seven lines. Using QAM examples and constellation plots, he demonstrates how interfering carriers, two-path multipath, sinusoidal phase noise, and Gaussian noise distort constellations and affect MER. The examples are lightweight and practical, making it easy to test receiver diagnostics and prototype adaptive-equalizer scenarios.


Update To: A Wide-Notch Comb Filter

Rick LyonsRick Lyons December 9, 2019

Rick Lyons extends his earlier wide-notch comb filter work with a set of practical alternatives, including a linear-phase 3-RRS version and a dual 2-RRS structure. The post lays out the block diagrams, z-domain transfer functions, and MATLAB coefficients needed to model each option, then compares their frequency responses against the original design. It is a compact update for engineers who want more flexibility in notch width and realization style.


A Wide-Notch Comb Filter

Rick LyonsRick Lyons November 24, 201918 comments

Traditional comb filters make very narrow stopband notches, which limits their ability to suppress broader interfering tones. Rick Lyons presents a linear-phase comb filter that produces wider stopband notches than the conventional design while preserving linear-phase behavior. The post also reviews the traditional cascaded recursive running-sum architecture, its co-located dual poles and zeros on the z-plane, and the placement of nulls at integer multiples of fs/D.


An Efficient Lowpass Filter in Octave

Paul LovellPaul Lovell November 6, 2019

Paul Lovell presents an efficient linear-phase lowpass FIR implemented in Octave, built as a Matrix IFIR with two matrix band-edge shaping stages followed by three recursive running-sum stages. The design reshapes input blocks into matrices to exploit interpolation structure and uses cumsum-based moving sums for speed. For a 200 Hz cutoff at 48 kHz the five-stage example ran about 15 times faster than a single-stage FIR.


Compute Modulation Error Ratio (MER) for QAM

Neil RobertsonNeil Robertson November 5, 20192 comments

Neil Robertson shows how to define and compute Modulation Error Ratio (MER) for QAM using a simplified baseband model and decision-slice errors. The post derives per-symbol and averaged MER formulas, explains when MER tracks carrier-to-noise ratio under AWGN and matched root-Nyquist filters, and provides example Pav values for QAM-16 and QAM-64 plus a Matlab script and practical tips.


Polynomial calculations on an FIR filter engine, part 1

Kendall Castor-PerryKendall Castor-Perry October 1, 20192 comments

FIR filter blocks can be repurposed as fast polynomial evaluators, offering hardware acceleration for non-linear compensation, function approximation, and harmonic synthesis, but they require careful scaling and coefficient management. This article outlines when to use binomial or fitted polynomials, compares Horner's nested evaluation with the direct power-sum approach, and highlights precision and overflow pitfalls on fixed-point engines like the Cypress DFB.


The Risk In Using Frequency Domain Curves To Evaluate Digital Integrator Performance

Rick LyonsRick Lyons September 24, 201933 comments

Frequency-response curves can be misleading when selecting a digital integrator, Rick Lyons shows, and he proves it with counterexamples using seven test signals. By comparing methods such as Simpson's 1/3 rule, Al-Alaoui, and Tick's rule on definite-integral tasks, Lyons demonstrates that a close match to the ideal frequency response does not guarantee accurate integrals, because input signal traits strongly affect results.


Plotting Discrete-Time Signals

Neil RobertsonNeil Robertson September 15, 20195 comments

Neil Robertson demonstrates a practical interpolate-by-8 FIR approach to make sampled signals look like their continuous-time counterparts when plotted. The post explains a 121-tap filter designed for signals up to 0.4*fs, shows Matlab examples for a sinusoid and a filtered pulse, and highlights the transient and design trade-offs so you can reproduce clean plots with the supplied interp_by_8.m code.


A poor man's Simulink

Markus NentwigMarkus Nentwig January 24, 20153 comments

Markus Nentwig built a compact glue layer that embeds NGSPICE into Octave to cosimulate continuous-time circuits and digital control. The article walks through an RC lowpass example, the MEX-based Octave interface, and the breakpoint-driven cosimulation flow, showing how adaptive SPICE integration handles asynchronous and time-triggered events. It presents a practical, low-cost alternative to Simulink for tightly coupled analog-digital system design.


Sampling bandpass signals

Josef HoffmannJosef Hoffmann June 26, 20215 comments

Bandpass signals can be sampled at rates below the usual Nyquist limit, and this note shows how the band-limited spectrum appears in baseband after sampling. Using a simple example figure, it defines the center frequency fc = (fmax + fmin)/2 and bandwidth Δf = fmax - fmin, and highlights that choosing fs less than twice the signal's highest frequency violates the sampling theorem.


Recruiting New Bloggers!

Stephane BoucherStephane Boucher October 16, 20157 comments

EmbeddedRelated is expanding its blogging team, and Stephane Boucher is inviting engineers, students, hobbyists, and researchers to contribute. He points to the success of earlier contributors and says the community has already read their articles more than 1,250,000 times. If you have knowledge to share, this post explains how to pitch a topic and get started.


Goertzel Algorithm for a Non-integer Frequency Index

Rick LyonsRick Lyons October 7, 201325 comments

Rick Lyons demonstrates how to run the Goertzel algorithm with a non-integer frequency index k, letting you target DTFT frequencies that do not align with DFT bin centers. He interprets Rajmic and Sysel's generalization, provides a simple implementation, and presents a real-valued reformulation that reduces the final multiplies for real inputs. Example Matlab code is included to reproduce and adapt the technique.


Signed serial-/parallel multiplication

Markus NentwigMarkus Nentwig February 16, 2014

Struggling with costly wide adders for signed multiplication on FPGAs? Markus Nentwig unpacks a neat bit-level trick that turns two's-complement signed-signed multiplication into a serial-parallel routine using only a one-bit wider adder. Learn how flipping sign bits and a small, controlled constant cancel lets you avoid full sign-extension, and get a parametrized Verilog RTL plus synthesis notes to try it yourself.


Wavelets II - Vanishing Moments and Spectral Factorization

Vincent HerrmannVincent Herrmann October 11, 2016

This post walks through how vanishing moments turn into concrete algebraic constraints on wavelet filter coefficients, and why that leads to Daubechies filters. It explains how a wavelet with A vanishing moments is orthogonal to all polynomials up to degree A minus one, and it shows how those continuous conditions become discrete sums like sum_k k^n h1(k)=0. Expect clear links between approximation power and filter length.


Signal Processing Contest in Python (PREVIEW): The Worst Encoder in the World

Jason SachsJason Sachs September 7, 20136 comments

Jason Sachs previews a hands-on Python contest to find the best velocity estimator for a noisy, low-cost quadrature encoder. The post explains the Estimator API, submission constraints, and a 5 second, 10 kHz evaluation harness that uses a simulated "Lucky Wheel" encoder with realistic manufacturing timing errors. Jason also includes a simple baseline estimator and discusses the practical tradeoff between noise reduction and phase lag in velocity estimation.


Sinusoidal Frequency Estimation Based on Time-Domain Samples

Rick LyonsRick Lyons April 20, 201719 comments

Rick Lyons presents three time-domain algorithms for estimating the frequency of real and complex sinusoids from samples. He shows that the Real 3-Sample and Real 4-Sample estimators, while mathematically exact, fail in the presence of noise and can produce biased or invalid outputs. The Complex 2-Sample (Lank-Reed-Pollon) estimator is more robust but can be biased at low SNR and near 0 or Fs/2, so narrowband filtering is recommended.


The History of CIC Filters: The Untold Story

Rick LyonsRick Lyons February 20, 20126 comments

Hogenauer's 1981 paper is the canonical CIC reference, but this post uncovers an earlier, practical origin story: engineer Richard Newbold used and documented a CIC decimation filter in late 1979. Rick Lyons recounts how Newbold’s HP-35 calculations produced the now-familiar frequency-response plot that appeared in Hogenauer's paper, why managers feared a pole at DC, and how demonstrations won adoption.


Went 280km/h (174mph) in a Porsche Panamera in Germany!

Stephane BoucherStephane Boucher July 10, 201712 comments

A week at SEGGER’s headquarters in Germany turned into more than a video shoot, it became a look inside a company that clearly runs on passion, trust, and a lot of teamwork. Stephane Boucher also gets an unforgettable autobahn ride in a Porsche Panamera, hitting 280 km/h along the way. Between interviews, B-roll, and a 25th anniversary celebration, he comes away impressed by both the people and the pace.