Home > On-Demand Archives > Talks >
Efficient DDC Implementation for Analytic Signal Processing
Jim Shima - Watch Now - DSP Online Conference 2024 - Duration: 46:41
Abstract: Most sampled systems rely on real-valued ADC data that is then converted to complex-valued (analytic) signals for processing. Examples include comm demodulators, channelizers, adaptive beamforming, phase interferometry, etc. Since conversion to complex-valued (I/Q) happens at the native sample rate post ADC, it uses an everly increasing number of MACs (multiply accumulates) per sec. This equates to more power draw for a given system, and efficient implementations bear the most fruit in mitigating computational load.
Description: Recall, analytic signals can be created using a Hilbert transform or using the modulation property of a half-complex mixer. Digital down converters are heavily used in SDRs and direct-sampled RF digital systems to mix signals to baseband, create analytic signals from real-valued inputs, and reduce the bandwidth of said signals (via resampling) to a more usable sample rate. Efficient filters such as the Hogenauer (CIC) were developed decades ago to help mitigate the use of multiplications during resampling. This talk goes over a very efficient implementation of a specific DDC that performs 2x decimation, does not use any multiplications for the mix operation, and only requires one FIR filter to create I/Q samples from real-valued inputs. This results in 4-8x reduction in computations compared to brute-force classical techniques.
This guide was created with the help of AI, based on the presentation's transcript. Its goal is to give you useful context and background so you can get the most out of the session.
What this presentation is about and why it matters
This talk presents a compact, highly efficient digital downconverter (DDC) design that creates analytic (I/Q) signals from real-valued ADC samples while decimating by two. The speaker shows how an $F_s/4$ fixed mix plus half-band filtering and careful exploitation of coefficient symmetry and data alignment reduce the number of multiply–accumulates (MACs) by factors of 2–8 compared with straightforward implementations. For engineers working on SDR front ends, FPGA/DSP firmware, or any system that must handle high-rate ADC streams, these savings directly translate into reduced power, lower resource usage, and cheaper or smaller hardware.
Who will benefit the most from this presentation
- FPGA and ASIC engineers implementing RF front ends and channelizers
- DSP engineers building demodulators, beamformers, or high-rate receivers
- Embedded systems designers trying to optimize SWaP (size, weight, and power)
- Students and practitioners learning practical DDC architectures and analytic-signal generation
What you need to know
This talk assumes some familiarity with basic discrete-time DSP concepts. Here are the key ideas to review so you get the most out of the presentation:
- Sampling and digital frequency: digital frequency is $\omega = 2\pi f / F_s$, and Nyquist sampling relates to bandwidth (sample at > 2× bandwidth). Analytic signals remove the negative-frequency image, allowing use of the full complex band.
- Convolution and FIR filtering: a linear FIR convolution can be written as $y[n] = \sum_k x[n-k] h[k]$. For decimation, convolution and downsampling interact; polyphase and direct-form decimators are common ways to avoid wasted computation.
- Mixing/downconversion: mixing by a complex exponential applies a modulation factor $e^{j\omega_0 n}$ to shift frequency. A half-complex mixer multiplies a real input by cosine and minus-sine to produce real I and Q streams that form a complex-valued signal.
- Analytic signals and the Hilbert transform: an analytic signal is $x_a(t)=x(t)+j\,\mathrm{Hilbert}\{x(t)\}$; it has only a single-sided spectrum (no negative-frequency mirror). A Hilbert FIR at the full input rate is one way to make analytic signals, but it is often more costly than a DDC-based approach.
- Half-band filters and coefficient symmetry: half-band FIRs have every other coefficient (roughly half) equal to zero and a center tap of 1/2 (for odd-length, Type I). Coefficient symmetry (h[k]=h[N-1-k]) lets you halve multiplies by folding taps.
- The $F_s/4$ trick: using a fixed mixer at $F_s/4$ yields a short periodic sequence $e^{-j\pi n/2}$ = {1, -j, -1, j}. With a real input this becomes simple data shuffling and sign changes (no multiplies), and—importantly—aligns zeros into the convolution in a beneficial way when decimating by 2.
- Decimation-by-2 interaction: when you mix at $F_s/4$ and then decimate by 2, one of the quadrature branches can reduce to a center-tap-only operation (just a shift), while the other branch still needs a reduced set of multiplies. This is how the design achieves large MAC savings.
Glossary
- ADC: Analog-to-digital converter; produces real-valued sample stream at rate $F_s$.
- DDC: Digital downconverter; mixer + lowpass filter + downsampler to produce baseband samples.
- I/Q (Quadrature): Real (I) and imaginary (Q) components that represent a complex-valued signal.
- Analytic signal: Complex signal with no negative-frequency mirror; often generated with a Hilbert transform or specific DDC designs.
- Half-complex mixer: Mixer that operates on a real input to produce I and Q via cosine and sine multiplications.
- Half-band filter: FIR lowpass whose every second coefficient is (near) zero and whose cutoff is at $F_s/4$ for decimate-by-2 use.
- Coefficient symmetry: When FIR coefficients are symmetric, allowing tap-folding to reduce multiplies.
- CIC (Hogenauer): Cascaded integrator-comb filter, multiplier-free and efficient for large integer decimation factors.
- Polyphase: Decomposing a filter into subfilters to compute outputs at the lower decimated rate.
- Hilbert transform: A filter that produces a 90° phase-shifted version of a real signal, used to form analytic signals.
Final notes — why this talk is worth watching
Jim Shima presents a compact, clever optimization that is rooted in simple algebra and practical FPGA/DSP constraints. The talk bridges theory (analytic signals and Hilbert relationships) and real-world engineering (how to eliminate high-rate multipliers with an $F_s/4$ mixer, half-band filters, and alignment of zeros). If you design front-end signal chains or are learning how architecture choices affect power and resource budgets, you will come away with a usable trick that can be implemented and benchmarked quickly. The talk is practical, clearly motivated, and demonstrates a tangible, measurable improvement — the kind of low-hanging fruit engineers appreciate.
Thanks Rick. That is a good resource in your link. I do see the Fs/4 DDC method included there as well. You can certainly update the diagram there to get rid of the quadrature-phase LPF to make it even more efficient!
[25:10] for the multiplier-less mixer, I've also seen it done with 45 degree offsets, so 1+1j, 1-1j, and so on. Not sure why the original designers did it that way, but it still works and doesnt have multiplies. The version you have above has double the zeros of the 45 degree offset version though.
You could use a 45 degree offset but you would also need a scalar since the magnitude of the mixer output would be sqrt(2) vice unity. So something down the chain would need to account for this to keep a unity gain signal path. As you stated, you dont get the zeros in the interleaved I/Q streams this way that help you out at the filtering stage. I cant think of a reason why they would do this off the top of my head. As a rule of thumb I will always take zeros over non zero values for potential efficiency reasons.
Thanks,
Jim
15:52: I have heard many people agree that real signals are more intuitive than analytic ones, but are they really? In the frequency domain, I find real signals quite strange. The need to accommodate conjugate symmetry creates a weird factor of 2 in the Nyquist-Shannon sampling theorem. Real mixers spew out an extra spectral component I didn't ask for. And I haven't even mentioned "phase" yet! Real signals are a nightmare!
Thanks for a most enjoyable presentation. I have used exactly the same DDC/DUC architecture in FPGA designs.
I would agree that in the broad view, real signals are esoteric looking in the freq domain. Analytic signals are surely easier to understand. I agree phase with real signals is a head scratcher!
But for an EE student taking signals and systems, it is kind of ingrained "this is the way" it is. Thus when exposed to analytic signals later on, a crisis of conscience seems to set in.
Is the code in a repo somewhere? Also in the video the left portion of the code was cut off. You could potentially paste the code here as a response.
Yes sorry about that. You can try this repo for the code:
https://github.com/recreationalcombatant/DDC
If that doesnt work let me know and I can try to paste it here.
Your microphone is hypnotic!
Ha! Thanks. Hopefully the talk isn't hypnotic enough to put you to sleep...

Hi Jim. Your video is certainly a good one. For your viewer's information other methods for generating analytic signals can be found at:
https://www.dsprelated.com/showarticle/153.php