539 lines
15 KiB
Markdown
539 lines
15 KiB
Markdown
+++
|
|
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
|
|
: (<a href="#citeproc_bib_item_1">Lyons 2011</a>)
|
|
|
|
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}
|
|
|
|
<a id="figure--fig:lyons11-lti-impulse-response"></a>
|
|
|
|
{{< figure src="/ox-hugo/lyons11_lti_impulse_response.png" caption="<span class=\"figure-number\">Figure 1: </span>LTI system unit impulse response sequences. (a) system block diagram. (b) impulse input sequence \\(x(n)\\) and impulse reponse output sequence \\(y(n)\\)." >}}
|
|
|
|
<a id="figure--fig:lyons11-moving-average"></a>
|
|
|
|
{{< figure src="/ox-hugo/lyons11_moving_average.png" caption="<span class=\"figure-number\">Figure 2: </span>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}
|
|
|
|
<a id="figure--fig:lyons11-frequency-ambiguity"></a>
|
|
|
|
{{< figure src="/ox-hugo/lyons11_frequency_ambiguity.png" caption="<span class=\"figure-number\">Figure 3: </span>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}
|
|
|
|
<a id="figure--fig:lyons11-noise-spectral-replication"></a>
|
|
|
|
{{< figure src="/ox-hugo/lyons11_noise_spectral_replication.png" caption="<span class=\"figure-number\">Figure 4: </span>Spectral replications; (a) original continuous signal plus noise spectrum; (b) discrete spectrum with noise contaminating the signal of interest" >}}
|
|
|
|
<a id="figure--fig:lyons11-lowpass-sampling"></a>
|
|
|
|
{{< figure src="/ox-hugo/lyons11_lowpass_sampling.png" caption="<span class=\"figure-number\">Figure 5: </span>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}
|
|
|
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
|
<div class="csl-entry"><a id="citeproc_bib_item_1"></a>Lyons, Richard. 2011. <i>Understanding Digital Signal Processing</i>. Upper Saddle River, NJ: Prentice Hall.</div>
|
|
</div>
|