Multiplying Two Binary Numbers
Ancient math gives a modern trick for integer multiplication that uses only shifts, parity checks, and additions. Rick Lyons demonstrates the Russian peasant method, shows why it maps to binary right shifts and least-significant-bit tests, and supplies a MATLAB snippet to run the loop. The post also points out a practical tip: put the smaller operand in the halving register to reduce iterations.
Implementing a full-duplex UART using the TMS320VC33 serial port
You can convert the TMS320VC33's synchronous serial port into a full-duplex UART in software by using DR0/DX0, on-chip timers, and an external interrupt. Manuel Herrera walks through an interrupt-driven 9600 baud, 8N1 asynchronous receiver/transmitter, explains receiver gating by start bit detection, and includes a schematic plus a complete assembly listing with timer values tied to a 150 MHz clock. Adjust timing for different clock rates.
Code Snippets Suggestions
The DSPRelated Code Snippet section is growing fast, but Stephane Boucher wants to accelerate it further with a new incentive. He is offering a one-time $20 payment for each of the next 100 submitted snippets, and he has also launched a page where readers can suggest the DSP code examples they want most. One lucky suggestion will win a copy of Notes on Digital Signal Processing.
We are famous!!
A quick bit of DSPRelated pride, the IEEE Signal Processing eNewsletter mentioned the site’s blog section in a roundup of social media resources for DSP. The post shares the moment the author heard the news and points readers to the original mention. It is short, but it captures a nice sign that the community is paying attention.
Discrete Wavelet Transform Filter Bank Implementation (part 2)
David Valencia walks through practical differences between the discrete wavelet transform and the discrete wavelet packet transform, showing why DWPT yields symmetric frequency resolution while DWT favors a single high-pass branch. He explains how Noble identities let you collapse multi-branch filter banks into equivalent single convolutions, then compares block convolution matrices with chain-processing and links to MATLAB code for both approaches.
Latest DSP Books
Rick Lyons' third edition of Understanding Digital Signal Processing has arrived, and Stephane Boucher says the new material justifies upgrading older copies. He also highlights a new title, C. Britton Rorabaugh's Notes On Digital Signal Processing, as another recent release to watch. In addition, dsprelated.com's books listing now sorts by publication date rather than database addition, making it easier to find newly published DSP titles.
Half-band filter on Xilinx FPGA
Lyons Zhang shows a practical, high-throughput implementation of a symmetric systolic half-band FIR on Xilinx FPGAs using DSP48 slices. The post includes a two-channel interleaved downsample-by-2 Verilog module, pipeline mapping to DSP48, and a symmetric rounding trick to reduce the DC shift from truncation. It highlights performance-and-latency tradeoffs and gives working code you can drop into a Spartan-6 style flow.
State Space Representation and the State of Engineering Thinking
State space is common in control, but it shows up much less often in signal processing. This post argues that the difference is really about engineering priorities: for many DSP problems, transfer functions are enough, while state space becomes valuable when internal behavior matters, like filter scaling or Kalman filtering. It is a short, practical look at why engineers choose one model over the other.
"Neat" Rectangular to Polar Conversion Algorithm
Rick Lyons revisits a clever slide-rule era trick for estimating the magnitude of a complex number without computing a square root. He highlights a neat identity, prompted by a Jerry Avins post, that converts the sqrt problem into forward and inverse trigonometric operations plus ratios. The post invites readers to derive Eq. (2) and see why a seemingly complex idea is actually simple and practical.
Matlab Programming Contest
Love puzzles or want to sharpen your MATLAB skills? Christopher Felton highlights MathWorks' biannual MATLAB programming contest, a week-long set of clever algorithm challenges that require only base MATLAB. Whether you're experienced or new, you can compete, compare solutions, or simply study others' code when later phases disclose submissions. No toolboxes or mex files allowed, so it's a pure programming playground for learning and bragging rights.
Make Hardware Great Again
US weakness in 5G and the coming AI race stems from a deeper problem, hardware decline and lack of CPU innovation. Jeff Brower argues that the software-only narrative has hollowed out semiconductor leadership, leaving only a few chipmakers and blocking vital R&D. He calls for targeted government action, funding for neural-net chips, and an industrial Hardhattan Project to rebuild CPU and hardware capabilities.
Exact Near Instantaneous Frequency Formulas Best at Zero Crossings
Cedron Dawg derives time-domain formulas that yield near-instantaneous frequency estimates optimized for zero crossings of pure tones. Complementing his earlier peak-optimized results, these difference-ratio formulas work for real and complex signals, produce four-sample estimators similar to Turners, and cancel amplitude terms, making them attractive low-latency options for clean tones while warning they degrade in noise and at peaks.
Feedback Controllers - Making Hardware with Firmware. Part 8. Control Loop Test-bed
Built around modest FPGA hardware, this post presents a practical test-bed for evaluating high-speed, low-latency feedback controllers. It covers ADC/DAC specifications, basic and arbitrary test signals, and an IFFT-based generator that can produce thousands of simultaneous tones for rapid Bode, phase, and latency measurements. The article also compares two IFFT strategies, explains turbo sampling, and shows open- and closed-loop test configurations.
Matlab Programming Contest
Love puzzles or want to sharpen your MATLAB skills? Christopher Felton highlights MathWorks' biannual MATLAB programming contest, a week-long set of clever algorithm challenges that require only base MATLAB. Whether you're experienced or new, you can compete, compare solutions, or simply study others' code when later phases disclose submissions. No toolboxes or mex files allowed, so it's a pure programming playground for learning and bragging rights.
The New Forum is LIVE!
The EmbeddedRelated forum just got a major interface refresh, and Stephane Boucher is rolling it out in beta. The new editor makes it easier to drop in images and files, add LaTeX equations with MathJax, and publish highlighted code snippets with highlight.js. Access is gated by approval for now, mainly to keep trolls, spammers, and bots out.
scipy.signal calling all developers
SciPy’s signal-processing toolbox is at a crossroads, and Christopher Felton is urging developers to jump in. He points to active discussion on scipy-dev, the possibility of a separate scikit-signal effort, and the broad set of functions already in scipy.signal. If you work in DSP and like open-source software, this is a good moment to look at the package, and maybe help shape it.
Is It True That j is Equal to the Square Root of -1 ?
A viral YouTube video claimed that saying j equals the square root of negative one is wrong. Rick Lyons shows the apparent paradox comes from misusing square-root identities with negative arguments, not from the usual definition of j. He argues it is safer to define j by j^2 = -1 and illustrates how careless root operations produce contradictions in two appendices.
50,000th Member Announced!
DSPRelated just crossed a major milestone, 50,000 registered members, and Stephane Boucher celebrates the anniversary by spotlighting the lucky winner, Charlie Tsai, an assistant professor in Taiwan. The post also looks back at more than a decade of community growth and thanks the contributors, authors, and sponsors who helped make the site a go-to DSP resource. It closes with a promise of big improvements ahead in 2010.
Linear Feedback Shift Registers for the Uninitiated, Part XIII: System Identification
Jason Sachs shows how the output of a linear feedback shift register can be used for active system identification, not just spread-spectrum testing. The article compares traditional sine-wave probing with LFSR-based PRBS methods, demonstrates a worked Ra-Rb-C example, and unpacks practical issues such as reflected pseudonoise, ADC quantization, sample counts, and noise-shaping tricks to improve estimates.
Random GPGPU Musings
Shehrzad Qureshi argues that general-purpose GPU computing is poised to reshape engineering workloads, and contrasts Nvidia's CUDA ecosystem with ATI's Stream and OpenCL. He points out that GPU architectures and programming models are similar across vendors, but Nvidia's head start in sample code and developer community gives CUDA a practical advantage. Read for a concise industry perspective on choosing a GPGPU platform.
Why is Fourier transform broken
Many engineers know the Gibbs phenomenon without grasping its root cause. This post shows that the problem comes from using the incomplete metric space of continuous functions, C[a,b], for Fourier series, and explains how switching to Lp spaces resolves convergence in the mean but allows functions to differ on sets of measure zero. It also reminds readers that Fourier analysis gives no time localization, so be mindful of its limits.
RF in Slow Motion: Sonifying a Wi-Fi 7 Packet
What would a 160 MHz OFDM waveform up in the 5 GHz U-NII band sound like if scaled to audio frequencies to keep the same wavelength (acoustic vs RF)?
More free Ebooks
A handy roundup of free engineering ebooks and journals, with a focus on where DSPRelated readers might actually find useful material. The post points to InTechOpen, highlights several MATLAB books, and even calls out a numerical methods title plus some sensor fusion content. If you like browsing for practical references, this is a good place to start.
Analytic Signal
In communication theory and modulation theory we always deal with two phases: In-phase (I) and Quadrature-phase (Q). The question that I will discuss in this blog is that why we use two phases and not more.
Compressive Sensing - Recovery of Sparse Signals (Part 1)
The amount of data that is generated has been increasing at a substantial rate since the beginning of the digital revolution. The constraints on the sampling and reconstruction of digital signals are derived from the well-known Nyquist-Shannon sampling theorem...
Project Report : Digital Filter Blocks in MyHDL and their integration in pyFDA
This Summer of Code project shows how to move from Python filter design to synthesizable HDL by building a MyHDL "filter-blocks" package and connecting it to PyFDA. The author implemented direct form I FIR and IIR blocks, added an API, tests, tutorials, and PyFDA export to VHDL and Verilog. The report also highlights practical fixed-point design choices and remaining work such as second-order sections.
In Search of The Fourth Wave
While working on Think DSP the presenter ran into a curious spectral pattern: sawtooth waves have all harmonics with amplitudes that scale like 1/f, square waves keep only odd harmonics with 1/f, and triangle waves keep odd harmonics with 1/f^2. That observation motivates a simple question: is there a basic waveform that has all integer harmonics but a 1/f^2 rolloff? The talk walks through four solution approaches, a fifth idea from the audience, and links to a runnable Colab notebook.
Determination of the transfer function of passive networks with MATLAB Functions
Starting the calculation from the output makes deriving a passive network transfer function simple, and this post shows how to do it in MATLAB using a sixth-order low-pass example. The walkthrough uses tf('s') to build a symbolic H(s), extracts coefficients with tfdata, and shows numerical frequency-response plotting via freqs or direct j*omega evaluation, with code and component values to reproduce the results.
A Complex Variable Detective Story – A Disconnect Between Theory and Implementation
A subtle phase-wrap gotcha turned a clean pencil-and-paper derivation into a software mismatch for a 5-tap FIR filter with complex coefficients. Rick Lyons shows why two algebraically equivalent-looking expressions can disagree in code, and traces the real culprit to angle limits in rectangular-form complex arithmetic. The fix is simple once you see it, but the trap is easy to miss.
SDR: Does it makes sense? Part 1/2
Software-defined radio is still a question mark for deployment, but Praveen Raghavan argues the economics are starting to line up. He points to rising process costs, especially as devices move toward FinFET technologies, and notes that consumer products usually need only a couple of wireless standards at once. That makes multi-standard silicon look more practical than ever, and he tees up the next question, what should actually be software definable?

























