+++ title = "Understanding Digital Signal Processing" author = ["Dehaeze Thomas"] draft = true +++ Tags : [IRR and FIR Filters]({{< relref "irr_and_fir_filters.md" >}}), [Digital Filters]({{< relref "digital_filters.md" >}}) Reference : (Lyons 2011) Author(s) : Lyons, R. Year : 2011 ## Discrete Sequences And Systems {#discrete-sequences-and-systems} ### Discrete Sequences And Their Notation {#discrete-sequences-and-their-notation} ### Signal Amplitude, Magnitude, Power {#signal-amplitude-magnitude-power} ### Signal Processing Operational Symbols {#signal-processing-operational-symbols} ### Introduction To Discrete Linear Time-Invariant Systems {#introduction-to-discrete-linear-time-invariant-systems} ### Discrete Linear Systems {#discrete-linear-systems} ### Time-Invariant Systems {#time-invariant-systems} ### The Commutative Property Of Linear Time-Invariant Systems {#the-commutative-property-of-linear-time-invariant-systems} ### Analyzing Linear Time-Invariant Systems {#analyzing-linear-time-invariant-systems} {{< figure src="/ox-hugo/lyons11_lti_impulse_response.png" caption="Figure 1: LTI system unit impulse response sequences. (a) system block diagram. (b) impulse input sequence \\(x(n)\\) and impulse reponse output sequence \\(y(n)\\)." >}} {{< figure src="/ox-hugo/lyons11_moving_average.png" caption="Figure 2: Analyzing a moving average filter. (a) averager block diagram; (b) impulse input and impulse response; (c) averager frequency magnitude reponse." >}} ## Periodic Sampling {#periodic-sampling} ### Aliasing: Signal Ambiguity In The Frequency Domain {#aliasing-signal-ambiguity-in-the-frequency-domain} {{< figure src="/ox-hugo/lyons11_frequency_ambiguity.png" caption="Figure 3: Frequency ambiguity; (a) discrete time sequence of values; (b) two different sinewaves that pass through the points of discete sequence" >}} ### Sampling Lowpass Signals {#sampling-lowpass-signals} {{< figure src="/ox-hugo/lyons11_noise_spectral_replication.png" caption="Figure 4: Spectral replications; (a) original continuous signal plus noise spectrum; (b) discrete spectrum with noise contaminating the signal of interest" >}} {{< figure src="/ox-hugo/lyons11_lowpass_sampling.png" caption="Figure 5: Low pass analog filtering prior to sampling at a rate of \\(f\_s\\) Hz." >}} ## The Discrete Fourier Transform {#the-discrete-fourier-transform} \begin{equation} X(f) = \int\_{-\infty}^{\infty} x(t) e^{-j2\pi f t} dt \end{equation} \begin{equation} X(m) = \sum\_{n = 0}^{N-1} x(n) e^{-j2 \pi n m /N} \end{equation} ### Understanding The Dft Equation {#understanding-the-dft-equation} ### Dft Symmetry {#dft-symmetry} ### Dft Linearity {#dft-linearity} ### Dft Magnitudes {#dft-magnitudes} ### Dft Frequency Axis {#dft-frequency-axis} ### Dft Shifting Theorem {#dft-shifting-theorem} ### Inverse Dft {#inverse-dft} ### Dft Leakage {#dft-leakage} ### Windows {#windows} ### Dft Scalloping Loss {#dft-scalloping-loss} ### Dft Resolution, Zero Padding, And Frequency-Domain Sampling {#dft-resolution-zero-padding-and-frequency-domain-sampling} ### Dft Processing Gain {#dft-processing-gain} ### The Dft Of Rectangular Functions {#the-dft-of-rectangular-functions} ### Interpreting The Dft Using The Discrete-Time Fourier Transform {#interpreting-the-dft-using-the-discrete-time-fourier-transform} ## The Fast Fourier Transform {#the-fast-fourier-transform} ### Relationship Of The Fft To The Dft {#relationship-of-the-fft-to-the-dft} ### Hints On Using Ffts In Practice {#hints-on-using-ffts-in-practice} ### Derivation Of The Radix-2 Fft Algorithm {#derivation-of-the-radix-2-fft-algorithm} ### Fft Input/Output Data Index Bit Reversal {#fft-input-output-data-index-bit-reversal} ### Radix-2 Fft Butterfly Structures {#radix-2-fft-butterfly-structures} ### Alternate Single-Butterfly Structures {#alternate-single-butterfly-structures} ## Finite Impulse Response Filters {#finite-impulse-response-filters} ### An Introduction To Finite Impulse Response (Fir) Filters {#an-introduction-to-finite-impulse-response--fir--filters} ### Convolution In Fir Filters {#convolution-in-fir-filters} ### Lowpass Fir Filter Design {#lowpass-fir-filter-design} ### Bandpass Fir Filter Design {#bandpass-fir-filter-design} ### Highpass Fir Filter Design {#highpass-fir-filter-design} ### Parks-Mcclellan Exchange Fir Filter Design Method {#parks-mcclellan-exchange-fir-filter-design-method} ### Half-Band Fir Filters {#half-band-fir-filters} ### Phase Response Of Fir Filters {#phase-response-of-fir-filters} ### A Generic Description Of Discrete Convolution {#a-generic-description-of-discrete-convolution} ### Analyzing Fir Filters {#analyzing-fir-filters} ## Infinite Impulse Response Filters {#infinite-impulse-response-filters} ### An Introduction To Infinite Impulse Response Filters {#an-introduction-to-infinite-impulse-response-filters} ### The Laplace Transform {#the-laplace-transform} ### The Z-Transform {#the-z-transform} ### Using The Z-Transform To Analyze Iir Filters {#using-the-z-transform-to-analyze-iir-filters} ### Using Poles And Zeros To Analyze Iir Filters {#using-poles-and-zeros-to-analyze-iir-filters} ### Alternate Iir Filter Structures {#alternate-iir-filter-structures} ### Pitfalls In Building Iir Filters {#pitfalls-in-building-iir-filters} ### Improving Iir Filters With Cascaded Structures {#improving-iir-filters-with-cascaded-structures} ### Scaling The Gain Of Iir Filters {#scaling-the-gain-of-iir-filters} ### Impulse Invariance Iir Filter Design Method {#impulse-invariance-iir-filter-design-method} ### Bilinear Transform Iir Filter Design Method {#bilinear-transform-iir-filter-design-method} ### Optimized Iir Filter Design Method {#optimized-iir-filter-design-method} ### A Brief Comparison Of Iir And Fir Filters {#a-brief-comparison-of-iir-and-fir-filters} ## Specialized Digital Networks And Filters {#specialized-digital-networks-and-filters} ### Differentiators {#differentiators} ### Integrators {#integrators} ### Matched Filters {#matched-filters} ### Interpolated Lowpass Fir Filters {#interpolated-lowpass-fir-filters} ### Frequency Sampling Filters: The Lost Art {#frequency-sampling-filters-the-lost-art} ## Quadrature Signals {#quadrature-signals} ### Why Care About Quadrature Signals? {#why-care-about-quadrature-signals} ### The Notation Of Complex Numbers {#the-notation-of-complex-numbers} ### Representing Real Signals Using Complex Phasors {#representing-real-signals-using-complex-phasors} ### A Few Thoughts On Negative Frequency {#a-few-thoughts-on-negative-frequency} ### Quadrature Signals In The Frequency Domain {#quadrature-signals-in-the-frequency-domain} ### Bandpass Quadrature Signals In The Frequency Domain {#bandpass-quadrature-signals-in-the-frequency-domain} ### Complex Down-Conversion {#complex-down-conversion} ### A Complex Down-Conversion Example {#a-complex-down-conversion-example} ### An Alternate Down-Conversion Method {#an-alternate-down-conversion-method} ## The Discrete Hilbert Transform {#the-discrete-hilbert-transform} ### Hilbert Transform Definition {#hilbert-transform-definition} ### Why Care About The Hilbert Transform? {#why-care-about-the-hilbert-transform} ### Impulse Response Of A Hilbert Transformer {#impulse-response-of-a-hilbert-transformer} ### Designing A Discrete Hilbert Transformer {#designing-a-discrete-hilbert-transformer} ### Time-Domain Analytic Signal Generation {#time-domain-analytic-signal-generation} ### Comparing Analytical Signal Generation Methods {#comparing-analytical-signal-generation-methods} ## 10 Sample Rate Conversion {#10-sample-rate-conversion} ### 10.1 Decimation {#10-dot-1-decimation} ### 10.2 Two-Stage Decimation {#10-dot-2-two-stage-decimation} ### 10.3 Properties Of Downsampling {#10-dot-3-properties-of-downsampling} ### 10.4 Interpolation {#10-dot-4-interpolation} ### 10.5 Properties Of Interpolation {#10-dot-5-properties-of-interpolation} ### 10.6 Combining Decimation And Interpolation {#10-dot-6-combining-decimation-and-interpolation} ### 10.7 Polyphase Filters {#10-dot-7-polyphase-filters} ### 10.8 Two-Stage Interpolation {#10-dot-8-two-stage-interpolation} ### 10.9 Z-Transform Analysis Of Multirate Systems {#10-dot-9-z-transform-analysis-of-multirate-systems} ### 10.10 Polyphase Filter Implementations {#10-dot-10-polyphase-filter-implementations} ### 10.11 Sample Rate Conversion By Rational Factors {#10-dot-11-sample-rate-conversion-by-rational-factors} ### 10.12 Sample Rate Conversion With Half-Band Filters {#10-dot-12-sample-rate-conversion-with-half-band-filters} ### 10.13 Sample Rate Conversion With Ifir Filters {#10-dot-13-sample-rate-conversion-with-ifir-filters} ### 10.14 Cascaded Integrator-Comb Filters {#10-dot-14-cascaded-integrator-comb-filters} ## 11 Signal Averaging {#11-signal-averaging} ### 11.1 Coherent Averaging {#11-dot-1-coherent-averaging} ### 11.2 Incoherent Averaging {#11-dot-2-incoherent-averaging} ### 11.3 Averaging Multiple Fast Fourier Transforms {#11-dot-3-averaging-multiple-fast-fourier-transforms} ### 11.4 Averaging Phase Angles {#11-dot-4-averaging-phase-angles} ### 11.5 Filtering Aspects Of Time-Domain Averaging {#11-dot-5-filtering-aspects-of-time-domain-averaging} ### 11.6 Exponential Averaging {#11-dot-6-exponential-averaging} ## 12 Digital Data Formats And Their Effects {#12-digital-data-formats-and-their-effects} ### 12.1 Fixed-Point Binary Formats {#12-dot-1-fixed-point-binary-formats} ### 12.2 Binary Number Precision And Dynamic Range {#12-dot-2-binary-number-precision-and-dynamic-range} ### 12.3 Effects Of Finite Fixed-Point Binary Word Length {#12-dot-3-effects-of-finite-fixed-point-binary-word-length} ### 12.4 Floating-Point Binary Formats {#12-dot-4-floating-point-binary-formats} ### 12.5 Block Floating-Point Binary Format {#12-dot-5-block-floating-point-binary-format} ## 13 Digital Signal Processing Tricks {#13-digital-signal-processing-tricks} ### 13.1 Frequency Translation Without Multiplication {#13-dot-1-frequency-translation-without-multiplication} ### 13.2 High-Speed Vector Magnitude Approximation {#13-dot-2-high-speed-vector-magnitude-approximation} ### 13.3 Frequency-Domain Windowing {#13-dot-3-frequency-domain-windowing} ### 13.4 Fast Multiplication Of Complex Numbers {#13-dot-4-fast-multiplication-of-complex-numbers} ### 13.5 Efficiently Performing The Fft Of Real Sequences {#13-dot-5-efficiently-performing-the-fft-of-real-sequences} ### 13.6 Computing The Inverse Fft Using The Forward Fft {#13-dot-6-computing-the-inverse-fft-using-the-forward-fft} ### 13.7 Simplified Fir Filter Structure {#13-dot-7-simplified-fir-filter-structure} ### 13.8 Reducing A/D Converter Quantization Noise {#13-dot-8-reducing-a-d-converter-quantization-noise} ### 13.9 A/D Converter Testing Techniques {#13-dot-9-a-d-converter-testing-techniques} ### 13.10 Fast Fir Filtering Using The Fft {#13-dot-10-fast-fir-filtering-using-the-fft} ### 13.11 Generating Normally Distributed Random Data {#13-dot-11-generating-normally-distributed-random-data} ### 13.12 Zero-Phase Filtering {#13-dot-12-zero-phase-filtering} ### 13.13 Sharpened Fir Filters {#13-dot-13-sharpened-fir-filters} ### 13.14 Interpolating A Bandpass Signal {#13-dot-14-interpolating-a-bandpass-signal} ### 13.15 Spectral Peak Location Algorithm {#13-dot-15-spectral-peak-location-algorithm} ### 13.16 Computing Fft Twiddle Factors {#13-dot-16-computing-fft-twiddle-factors} ### 13.17 Single Tone Detection {#13-dot-17-single-tone-detection} ### 13.18 The Sliding Dft {#13-dot-18-the-sliding-dft} ### 13.19 The Zoom Fft {#13-dot-19-the-zoom-fft} ### 13.20 A Practical Spectrum Analyzer {#13-dot-20-a-practical-spectrum-analyzer} ### 13.21 An Efficient Arctangent Approximation {#13-dot-21-an-efficient-arctangent-approximation} ### 13.22 Frequency Demodulation Algorithms {#13-dot-22-frequency-demodulation-algorithms} ### 13.23 Dc Removal {#13-dot-23-dc-removal} ### 13.24 Improving Traditional Cic Filters {#13-dot-24-improving-traditional-cic-filters} ### 13.25 Smoothing Impulsive Noise {#13-dot-25-smoothing-impulsive-noise} ### 13.26 Efficient Polynomial Evaluation {#13-dot-26-efficient-polynomial-evaluation} ### 13.27 Designing Very High-Order Fir Filters {#13-dot-27-designing-very-high-order-fir-filters} ### 13.28 Time-Domain Interpolation Using The Fft {#13-dot-28-time-domain-interpolation-using-the-fft} ### 13.29 Frequency Translation Using Decimation {#13-dot-29-frequency-translation-using-decimation} ### 13.30 Automatic Gain Control (Agc) {#13-dot-30-automatic-gain-control--agc} ### 13.31 Approximate Envelope Detection {#13-dot-31-approximate-envelope-detection} ### 13.32 A Quadrature Oscillator {#13-dot-32-a-quadrature-oscillator} ### 13.33 Specialized Exponential Averaging {#13-dot-33-specialized-exponential-averaging} ### 13.34 Filtering Narrowband Noise Using Filter Nulls {#13-dot-34-filtering-narrowband-noise-using-filter-nulls} ### 13.35 Efficient Computation Of Signal Variance {#13-dot-35-efficient-computation-of-signal-variance} ### 13.36 Real-Time Computation Of Signal Averages And Variances {#13-dot-36-real-time-computation-of-signal-averages-and-variances} ### 13.37 Building Hilbert Transformers From Half-Band Filters {#13-dot-37-building-hilbert-transformers-from-half-band-filters} ### 13.38 Complex Vector Rotation With Arctangents {#13-dot-38-complex-vector-rotation-with-arctangents} ### 13.39 An Efficient Differentiating Network {#13-dot-39-an-efficient-differentiating-network} ### 13.40 Linear-Phase Dc-Removal Filter {#13-dot-40-linear-phase-dc-removal-filter} ### 13.41 Avoiding Overflow In Magnitude Computations {#13-dot-41-avoiding-overflow-in-magnitude-computations} ### 13.42 Efficient Linear Interpolation {#13-dot-42-efficient-linear-interpolation} ### 13.43 Alternate Complex Down-Conversion Schemes {#13-dot-43-alternate-complex-down-conversion-schemes} ### 13.44 Signal Transition Detection {#13-dot-44-signal-transition-detection} ### 13.45 Spectral Flipping Around Signal Center Frequency {#13-dot-45-spectral-flipping-around-signal-center-frequency} ### 13.46 Computing Missing Signal Samples {#13-dot-46-computing-missing-signal-samples} ### 13.47 Computing Large Dfts Using Small Ffts {#13-dot-47-computing-large-dfts-using-small-ffts} ### 13.48 Computing Filter Group Delay Without Arctangents {#13-dot-48-computing-filter-group-delay-without-arctangents} ### 13.49 Computing A Forward And Inverse Fft Using A Single Fft {#13-dot-49-computing-a-forward-and-inverse-fft-using-a-single-fft} ### 13.50 Improved Narrowband Lowpass Iir Filters {#13-dot-50-improved-narrowband-lowpass-iir-filters} ### 13.51 A Stable Goertzel Algorithm {#13-dot-51-a-stable-goertzel-algorithm} ## Bibliography {#bibliography}