### Neil Robertson (@neirober)

Neil Robertson worked at Scientific Atlanta, Cisco, and ST Micro doing RF design, System Design, and DSP design for cable TV set-top boxes and cable modems. He is retired and lives in Columbus, Ohio.

December 4, 2022

In this part, I’ll show how to design a Hilbert Transformer using the coefficients of a half-band filter as a starting point, which turns out to be remarkably simple.  I’ll also show how a half-band filter can be synthesized using the Matlab function firpm, which employs the Parks-McClellan algorithm.

A half-band filter is a type of lowpass, even-symmetric FIR filter having an odd number of taps, with the even-numbered taps (except for the main tap) equal to zero.  This...

In some previous articles, I made use of the Hilbert transformer, but did not explain its theory in any detail.  In this article, I’ll dig a little deeper into how the Hilbert Transformer works.  Understanding the Hilbert Transformer involves a modest amount of mathematics, but the payoff in useful applications is worth it.

As we’ll learn, a Hilbert Transformer is just a particular type of Finite Impulse Response (FIR) filter.  In Part 1 of this article, I’ll...

## Book Recommendation "What is Mathematics?"

What is Mathematics is a classic, lucidly written survey of mathematics by Courant and Robbins.  The first edition was published in 1941!  I have only read a portion of it, mainly the chapter on calculus.  One page of Courant is worth about five pages of my old college calculus textbook, and it’s a lot more fun to read.

The reader of this book should already be familiar with algebra and trigonometry.  For engineers, some worthwhile sections of the book are:

## Evaluate Noise Performance of Discrete-Time Differentiators

When it comes to noise, all differentiators are not created equal.  Figure 1 shows the magnitude response of two differentiators.  They both have a useful bandwidth of a little less than π/8 radians (based on maximum magnitude response error of 2%).  Suppose we apply a signal with Gaussian noise to each of these differentiators.  The sinusoidal signal with noise is shown in the top of Figure 2.  Signal frequency is π/12.5 radians.  The output of the so-called...

## Learn About Transmission Lines Using a Discrete-Time Model

January 12, 2022

We don’t often think about signal transmission lines, but we use them every day.  Familiar examples are coaxial cable, Ethernet cable, and Universal Serial Bus (USB).  Like it or not, high-speed clock and signal traces on printed-circuit boards are also transmission lines.

While modeling transmission lines is in general a complex undertaking, it is surprisingly simple to model a lossless, uniform line with resistive terminations by using a discrete-time approach.  A...

## The Discrete Fourier Transform and the Need for Window Functions

The Discrete Fourier Transform (DFT) is used to find the frequency spectrum of a discrete-time signal.  A computationally efficient version called the Fast Fourier Transform (FFT) is normally used to calculate the DFT.  But, as many have found to their dismay, the FFT, when used alone, usually does not provide an accurate spectrum.  The reason is a phenomenon called spectral leakage.

Spectral leakage can be reduced drastically by using a window function in conjunction...

## Modeling Anti-Alias Filters

September 26, 2021

Digitizing a signal using an Analog to Digital Converter (ADC) usually requires an anti-alias filter, as shown in Figure 1a.  In this post, we’ll develop models of lowpass Butterworth and Chebyshev anti-alias filters, and compute the time domain and frequency domain output of the ADC for an example input signal.  We’ll also model aliasing of Gaussian noise.  I hope the examples make the textbook explanations of aliasing seem a little more real.  Of course, modeling of...

## Digital Filter Instructions from IKEA?

Swedish “Bygglek” = build and play.   Swedish “Bygglek” = build and play.

Swedish “Bygglek” = build and play.  Swedish “Bygglek” = build and play.

Swedish “Bygglek” = build and play.  Swedish “Bygglek” = build and play.

Swedish “Bygglek” = build and play.  Swedish “Bygglek” = build and play.

Swedish “Bygglek” = build and play.  Swedish “Bygglek” = build and...

## Setting Carrier to Noise Ratio in Simulations

April 11, 2021

When simulating digital receivers, we often want to check performance with added Gaussian noise.  In this article, I’ll derive the simple equations for the rms noise level needed to produce a desired carrier to noise ratio (CNR or C/N).  I also provide a short Matlab function to generate a noise vector of the desired level for a given signal vector.

Definition of C/N

The Carrier to noise ratio is defined as the ratio of average signal power to noise power for a modulated...

## Add a Power Marker to a Power Spectral Density (PSD) Plot

February 7, 2021

Perhaps we should call most Power Spectral Density (PSD) calculations relative PSD, because usually we don’t have to worry about absolute power levels.  However, for cases (e.g., measurements or simulations) where we are concerned with absolute power, it would be nice to be able to display it on a PSD plot.  Unfortunately, you can’t read the power directly from the plot.  For example, the plotted spectral peak of a narrowband signal, such as a sinewave, is lower than the...

## Find Aliased ADC or DAC Harmonics (with animation)

January 11, 2021

When a sinewave is applied to a data converter (ADC or DAC), device nonlinearities produce harmonics.  If a harmonic frequency is greater than the Nyquist frequency, the harmonic appears as an alias.  In this case, it is not at once obvious if a given spur is a harmonic, and if so, its order.  In this article, we’ll present Matlab code to simulate the data converter nonlinearities and find the harmonic alias frequencies.  Note that Analog Devices has an online tool for...

## Compute Images/Aliases of CIC Interpolators/Decimators

Cascade-Integrator-Comb (CIC) filters are efficient fixed-point interpolators or decimators.  For these filters, all coefficients are equal to 1, and there are no multipliers.  They are typically used when a large change in sample rate is needed.  This article provides two very simple Matlab functions that can be used to compute the spectral images of CIC interpolators and the aliases of CIC decimators.

1.  CIC Interpolators

Figure 1 shows three interpolate-by-M...

## Design Square-Root Nyquist Filters

July 13, 2020

In his book on multirate signal processing, harris presents a nifty technique for designing square-root Nyquist FIR filters with good stopband attenuation [1].  In this post, I describe the method and provide a Matlab function for designing the filters.  You can find a Matlab function by harris for designing the filters at [2].

Background

Single-carrier modulation, such as QAM, uses filters to limit the bandwidth of the signal.  Figure 1 shows a simplified QAM system block...

## Third-Order Distortion of a Digitally-Modulated Signal

June 9, 2020
Analog designers are always harping about amplifier third-order distortion.  Why?  In this article, we’ll look at why third-order distortion is important, and simulate a QAM signal with third-order distortion.

In the following analysis, we assume that signal phase at the amplifier output is not a function of amplitude.  With this assumption, the output y of a non-ideal amplifier can be written as a power series of the input signal x:

$$y=... ## Second Order Discrete-Time System Demonstration April 1, 20202 comments Discrete-time systems are remarkable: the time response can be computed from mere difference equations, and the coefficients ai, bi of these equations are also the coefficients of H(z). Here, I try to illustrate this remarkableness by converting a continuous-time second-order system to an approximately equivalent discrete-time system. With a discrete-time model, we can then easily compute the time response to any input. But note that the goal here is as much to... ## A Simplified Matlab Function for Power Spectral Density March 3, 20204 comments In an earlier post [1], I showed how to compute power spectral density (PSD) of a discrete-time signal using the Matlab function pwelch [2]. Pwelch is a useful function because it gives the correct output, and it has the option to average multiple Discrete Fourier Transforms (DFTs). However, a typical function call has five arguments, and it can be hard to remember how to set them all and how they default. In this post, I create a simplified PSD function by putting a... ## Fractional Delay FIR Filters February 9, 202014 comments Consider the following Finite Impulse Response (FIR) coefficients: b = [b0 b1 b2 b1 b0] These coefficients form a 5-tap symmetrical FIR filter having constant group delay [1,2] over 0 to fs/2 of: D = (ntaps – 1)/2 = 2 samples For a symmetrical filter with an odd number of taps, the group delay is always an integer number of samples, while for one with an even number of taps, the group delay is always an integer + 0.5 samples. Can we design a filter... ## Model Signal Impairments at Complex Baseband December 11, 20195 comments In this article, we develop complex-baseband models for several signal impairments: interfering carrier, multipath, phase noise, and Gaussian noise. To provide concrete examples, we’ll apply the impairments to a QAM system. The impairment models are Matlab functions that each use at most seven lines of code. Although our example system is QAM, the models can be used for any complex-baseband signal. I used a very simple complex-baseband model of a QAM system in my last ## Compute Modulation Error Ratio (MER) for QAM November 5, 20192 comments This post defines the Modulation Error Ratio (MER) for QAM signals, and shows how to compute it. As we’ll see, in the absence of impairments other than noise, the MER tracks the signal’s Carrier-to-Noise Ratio (over a limited range). A Matlab script at the end of the PDF version of this post computes MER for a simplified QAM-64 system. Figure 1 is a simplified block diagram of a QAM system. The transmitter includes a source of QAM symbols, a root-Nyquist... ## Plotting Discrete-Time Signals September 15, 20195 comments A discrete-time sinusoid can have frequency up to just shy of half the sample frequency. But if you try to plot the sinusoid, the result is not always recognizable. For example, if you plot a 9 Hz sinusoid sampled at 100 Hz, you get the result shown in the top of Figure 1, which looks like a sine. But if you plot a 35 Hz sinusoid sampled at 100 Hz, you get the bottom graph, which does not look like a sine when you connect the dots. We typically want the plot of a... ## Interpolation Basics August 20, 201915 comments This article covers interpolation basics, and provides a numerical example of interpolation of a time signal. Figure 1 illustrates what we mean by interpolation. The top plot shows a continuous time signal, and the middle plot shows a sampled version with sample time Ts. The goal of interpolation is to increase the sample rate such that the new (interpolated) sample values are close to the values of the continuous signal at the sample times [1]. For example, if... ## A Direct Digital Synthesizer with Arbitrary Modulus June 3, 20195 comments Suppose you have a system with a 10 MHz sample clock, and you want to generate a sampled sinewave at any frequency below 5 MHz on 500 kHz spacing; i.e., 0.5, 1.0, 1.5, … MHz. In other words, f = k*fs/20, where k is an integer and fs is sample frequency. This article shows how to do this using a simple Direct Digital Synthesizer (DDS) with a look-up table that is at most 20 entries long. We’ll also demonstrate a Quadrature-output DDS. A note on... ## IIR Bandpass Filters Using Cascaded Biquads April 20, 201911 comments In an earlier post [1], we implemented lowpass IIR filters using a cascade of second-order IIR filters, or biquads. This post provides a Matlab function to do the same for Butterworth bandpass IIR filters. Compared to conventional implementations, bandpass filters based on biquads are less sensitive to coefficient quantization [2]. This becomes important when designing narrowband filters. A biquad section block diagram using the Direct Form II structure [3,4] is... ## Demonstrating the Periodic Spectrum of a Sampled Signal Using the DFT March 9, 201920 comments One of the basic DSP principles states that a sampled time signal has a periodic spectrum with period equal to the sample rate. The derivation of can be found in textbooks [1,2]. You can also demonstrate this principle numerically using the Discrete Fourier Transform (DFT). The DFT of the sampled signal x(n) is defined as:$$X(k)=\sum_{n=0}^{N-1}x(n)e^{-j2\pi kn/N} \qquad (1)

Where

X(k) = discrete frequency spectrum of time sequence x(n)

## Compute the Frequency Response of a Multistage Decimator

Figure 1a shows the block diagram of a decimation-by-8 filter, consisting of a low-pass finite impulse response (FIR) filter followed by downsampling by 8 [1].  A more efficient version is shown in Figure 1b, which uses three cascaded decimate-by-two filters.  This implementation has the advantages that only FIR 1 is sampled at the highest sample rate, and the total number of filter taps is lower.

The frequency response of the single-stage decimator before downsampling is just...

## Use Matlab Function pwelch to Find Power Spectral Density – or Do It Yourself

In my last post, we saw that finding the spectrum of a signal requires several steps beyond computing the discrete Fourier transform (DFT)[1].  These include windowing the signal, taking the magnitude-squared of the DFT, and computing the vector of frequencies.  The Matlab function pwelch [2] performs all these steps, and it also has the option to use DFT averaging to compute the so-called Welch power spectral density estimate [3,4].

## Evaluate Window Functions for the Discrete Fourier Transform

December 18, 2018

The Discrete Fourier Transform (DFT) operates on a finite length time sequence to compute its spectrum.  For a continuous signal like a sinewave, you need to capture a segment of the signal in order to perform the DFT.  Usually, you also need to apply a window function to the captured signal before taking the DFT [1 - 3].  There are many different window functions and each produces a different approximation of the spectrum.  In this post, we’ll present Matlab code that...

## Design a DAC sinx/x Corrector

This post provides a Matlab function that designs linear-phase FIR sinx/x correctors.  It includes a table of fixed-point sinx/x corrector coefficients for different DAC frequency ranges.

A sinx/x corrector is a digital (or analog) filter used to compensate for the sinx/x roll-off inherent in the digital to analog conversion process.  In DSP math, we treat the digital signal applied to the DAC is a sequence of impulses.  These are converted by the DAC into contiguous pulses...

## Digital PLL’s, Part 3 – Phase Lock an NCO to an External Clock

Sometimes you may need to phase-lock a numerically controlled oscillator (NCO) to an external clock that is not related to the system clocks of your ASIC or FPGA.  This situation is shown in Figure 1.  Assuming your system has an analog-to-digital converter (ADC) available, you can sync to the external clock using the scheme shown in Figure 2.  This time-domain PLL model is similar to the one presented in Part 1 of this series on digital PLL’s [1].  In that PLL, we...

## ADC Clock Jitter Model, Part 2 – Random Jitter

In Part 1, I presented a Matlab function to model an ADC with jitter on the sample clock, and applied it to examples with deterministic jitter.  Now we’ll investigate an ADC with random clock jitter, by using a filtered or unfiltered Gaussian sequence as the jitter source.  What we are calling jitter can also be called time jitter, phase jitter, or phase noise.  It’s all the same phenomenon.  Typically, we call it jitter when we have a time-domain representation,...

## ADC Clock Jitter Model, Part 1 – Deterministic Jitter

Analog to digital converters (ADC’s) have several imperfections that affect communications signals, including thermal noise, differential nonlinearity, and sample clock jitter [1, 2].  As shown in Figure 1, the ADC has a sample/hold function that is clocked by a sample clock.  Jitter on the sample clock causes the sampling instants to vary from the ideal sample time.  This transfers the jitter from the sample clock to the input signal.

## Phase or Frequency Shifter Using a Hilbert Transformer

In this article, we’ll describe how to use a Hilbert transformer to make a phase shifter or frequency shifter.  In either case, the input is a real signal and the output is a real signal.  We’ll use some simple Matlab code to simulate these systems.  After that, we’ll go into a little more detail on Hilbert transformer theory and design.

Phase Shifter

A conceptual diagram of a phase shifter is shown in Figure 1, where the bold lines indicate complex...

## Coefficients of Cascaded Discrete-Time Systems

March 4, 2018

In this article, we’ll show how to compute the coefficients that result when you cascade discrete-time systems.  With the coefficients in hand, it’s then easy to compute the time or frequency response.  The computation presented here can also be used to find coefficients of mixed discrete-time and continuous-time systems, by using a discrete time model of the continuous-time portion [1].

This article shows how to implement a Butterworth IIR lowpass filter as a cascade of second-order IIR filters, or biquads.  We’ll derive how to calculate the coefficients of the biquads and do some examples using a Matlab function biquad_synth provided in the Appendix.  Although we’ll be designing Butterworth filters, the approach applies to any all-pole lowpass filter (Chebyshev, Bessel, etc).  As we’ll see, the cascaded-biquad design is less sensitive to coefficient...

## Design IIR Highpass Filters

This post is the fourth in a series of tutorials on IIR Butterworth filter design.  So far we covered lowpass [1], bandpass [2], and band-reject [3] filters; now we’ll design highpass filters.  The general approach, as before, has six steps:

Find the poles of a lowpass analog prototype filter with Ωc = 1 rad/s. Given the -3 dB frequency of the digital highpass filter, find the corresponding frequency of the analog highpass filter (pre-warping). Transform the...

## Design IIR Band-Reject Filters

In this post, I show how to design IIR Butterworth band-reject filters, and provide two Matlab functions for band-reject filter synthesis.  Earlier posts covered IIR Butterworth lowpass [1] and bandpass [2] filters.  Here, the function br_synth1.m designs band-reject filters based on null frequency and upper -3 dB frequency, while br_synth2.m designs them based on lower and upper -3 dB frequencies.   I’ll discuss the differences between the two approaches later in this...

## Design IIR Bandpass Filters

In this post, I present a method to design Butterworth IIR bandpass filters.  My previous post [1] covered lowpass IIR filter design, and provided a Matlab function to design them.  Here, we’ll do the same thing for IIR bandpass filters, with a Matlab function bp_synth.m.  Here is an example function call for a bandpass filter based on a 3rd order lowpass prototype:

N= 3; % order of prototype LPF fcenter= 22.5; % Hz center frequency, Hz bw= 5; ...

## Design IIR Butterworth Filters Using 12 Lines of Code

While there are plenty of canned functions to design Butterworth IIR filters [1], it’s instructive and not that complicated to design them from scratch.  You can do it in 12 lines of Matlab code.  In this article, we’ll create a Matlab function butter_synth.m to design lowpass Butterworth filters of any order.  Here is an example function call for a 5th order filter:

N= 5 % Filter order fc= 10; % Hz cutoff freq fs= 100; % Hz sample freq [b,a]=...

## Simplest Calculation of Half-band Filter Coefficients

Half-band filters are lowpass FIR filters with cut-off frequency of one-quarter of sampling frequency fs and odd symmetry about fs/4  [1]*.  And it so happens that almost half of the coefficients are zero.  The passband and stopband bandwiths are equal, making these filters useful for decimation-by-2 and interpolation-by-2.  Since the zero coefficients make them computationally efficient, these filters are ubiquitous in DSP systems.

Here we will compute half-band...

## There's No End to It -- Matlab Code Plots Frequency Response above the Unit Circle

Reference [1] has some 3D plots of frequency response magnitude above the unit circle in the Z-plane.  I liked them enough that I wrote a Matlab function to plot the response of any digital filter this way.  I’m not sure how useful these plots are, but they’re fun to look at. The Matlab code is listed in the Appendix.

This post is available in PDF format for easy...

## Modeling a Continuous-Time System with Matlab

Many of us are familiar with modeling a continuous-time system in the frequency domain using its transfer function H(s) or H(jω).  However, finding the time response can be challenging, and traditionally involves finding the inverse Laplace transform of H(s).  An alternative way to get both time and frequency responses is to transform H(s) to a discrete-time system H(z) using the impulse-invariant transform [1,2].  This method provides an exact match to the continuous-time...

## Canonic Signed Digit (CSD) Representation of Integers

February 18, 2017

In my last post I presented Matlab code to synthesize multiplierless FIR filters using Canonic Signed Digit (CSD) coefficients.  I included a function dec2csd1.m (repeated here in Appendix A) to convert decimal integers to binary CSD values.  Here I want to use that function to illustrate a few properties of CSD numbers.

In a binary signed-digit number system, we allow each binary digit to have one of the three values {0, 1, -1}.  Thus, for example, the binary value 1 1...

## Matlab Code to Synthesize Multiplierless FIR Filters

This article presents Matlab code to synthesize multiplierless Finite Impulse Response (FIR) lowpass filters.

A filter coefficient can be represented as a sum of powers of 2.  For example, if a coefficient = decimal 5 multiplies input x, the output is $y= 2^2*x + 2^0*x$.  The factor of $2^2$ is then implemented with a shift of 2 bits.  This method is not efficient for coefficients having a lot of 1’s, e.g. decimal 31 = 11111.  To reduce the number of non-zero...

## The Power Spectrum

October 8, 2016

Often, when calculating the spectrum of a sampled signal, we are interested in relative powers, and we don’t care about the absolute accuracy of the y axis.  However, when the sampled signal represents an analog signal, we sometimes need an accurate picture of the analog signal’s power in the frequency domain.  This post shows how to calculate an accurate power spectrum.

Parseval’s theorem [1,2] is a property of the Discrete Fourier Transform (DFT) that...

## Digital PLL's -- Part 2

In Part 1, we found the time response of a 2nd order PLL with a proportional + integral (lead-lag) loop filter.  Now let’s look at this PLL in the Z-domain [1, 2].  We will find that the response is characterized by a loop natural frequency ωn and damping coefficient ζ.

Having a Z-domain model of the DPLL will allow us to do three things:

Compute the values of loop filter proportional gain KL and integrator gain KI that give the desired loop natural...

## Digital PLL's -- Part 1

1. Introduction

Figure 1.1 is a block diagram of a digital PLL (DPLL).  The purpose of the DPLL is to lock the phase of a numerically controlled oscillator (NCO) to a reference signal.  The loop includes a phase detector to compute phase error and a loop filter to set loop dynamic performance.  The output of the loop filter controls the frequency and phase of the NCO, driving the phase error to zero.

One application of the DPLL is to recover the timing in a digital...

## Peak to Average Power Ratio and CCDF

Peak to Average Power Ratio (PAPR) is often used to characterize digitally modulated signals.  One example application is setting the level of the signal in a digital modulator.  Knowing PAPR allows setting the average power to a level that is just low enough to minimize clipping.

However, for a random signal, PAPR is a statistical quantity.  We have to ask, what is the probability of a given peak power?  Then we can decide where to set the average...

## Filter a Rectangular Pulse with no Ringing

To filter a rectangular pulse without any ringing, there is only one requirement on the filter coefficients:  they must all be positive.  However, if we want the leading and trailing edge of the pulse to be symmetrical, then the coefficients must be symmetrical.  What we are describing is basically a window function.

Consider a rectangular pulse 32 samples long with fs = 1 kHz.  Here is the Matlab code to generate the pulse:

N= 64; fs= 1000; % Hz sample...

## Re: The Nyquist Sampling Theorem

"In the style of Bob Dylan" is a lot to ask -- The song sounds more like a cross between Dylan and Dr. Seuss.

## Re: GNURadio BPSK Position Costas Loop and Clocksync

No, the timing synchronization must occur before carrier synchronization.  I know this from designing QPSK demods.  There is some limit to the amount of carrier...

## Re: Good site for distance Learning

Thanks Dave, looks interesting.

## Re: Channel power measurement

Loganathan,I wrote a post that includes a Matlab function to compute power over a band:https://www.dsprelated.com/showarticle/1387.phpI'm not sure it applies to...

## Re: Difference between fft and pspectrum in Matlab

Hi MK,I think pspectrum is similar to another Matlab function called pwelch.  Like pspectrum, pwelch computes the power spectral density.  I wrote a tutorial on...

## Re: Determine Classical Phase Noise from EVM

I haven't tried to calculate phase noise from EVM or MER. I used to measure the noise spectrum of the unmodulated carrier on a spectrum analyzer and record the...

## Re: Determine Classical Phase Noise from EVM

Hi Maxplus,I wrote a blog post: "Model Signal Impairments at Complex Baseband" that computes a QAM constellation with added phase noise.  It also calculates MER...

## Re: Phase brake in tonal signal and frequency estimation

Hi,It appears you are not using a window function, so I think you are getting different spectral leakage components, depending on the phase of the sine.  I discussed...

Thanks Marcin!

## Free book: Software-Defined Radio for Engineers

This pdf book is available on the Analog Devices site here.  I have not read it, but it appears to contain a reasonable mix of theory and practice.  The book...

## Re: Dealing with aliased sinc function when computing spectra

Rick,I vaguely recall fred harris deprecating Chebyshev windows.  I think it was because the flat sidelobes alias.  By contrast, the Kaiser window has sidelobes...

## Re: Dealing with aliased sinc function when computing spectra

fred and Rick,Thanks for these very useful comments.  I have been incorrectly using hanning(N) for DFT windowing, when I should have been using hanning(N,'periodic'). ...

## Re: Removing Attenuator (S -Parameter) influence on the received Baseband signal in Radar Transmitter - Radar signal processing

For non-RF people:  VNA = Vector Network Analyzer.  This is a piece of lab equipment that is used to measure the complex S-parameters over some frequency range...

## Re: Can you find the illegal step?

If you let b = 1, then you get the "classic" homework result:2 = 1From this follows the other classic result: 1 = 0. Neil

## Re: Overdriven Sine Wave through DSP Filter

Hi Groger,What is the sample rate of your A/D converter?  Are you using an anti-aliasing (AA) filter?  What is the AA filter's stopband frequency/attenuation?Note...

## Re: Single Sideband Demodulation

Hi,Go to "contact" at the bottom and send a message.  The site owner is named StephaneNeil

## Re: Real Numbers

Rick,I like it too.  But what about lucky numbers and unlucky numbers?  I think they are a subset of the integers.-- Neil

...

## Re: time recovery algorithm and CORDIC

Hi Ali,A good introductory reference for timing recovery is in Michael Rice's book:  "Digital Communications, A Discrete-Time Approach". Pearson Prentice Hall,...

## Re: Calculating the Effective bit resolution from a .WAV recording?

I don't know.  I usually deal with signals that are ac-coupled.

## Re: Calculating the Effective bit resolution from a .WAV recording?

Hi artmez,Actually, S/N in the ENOB formula is full-scale sine power relative to the total noise power.  So you have to integrate the noise power to find the S/N. ...

Hallelujah!   Thanks.  If you don't watch out, someone may ask you to explain your demo.-- Neil

I may be the last one to know this trick, but if you turn on your computer speakers and type the following code in Matlab, it plays a gong sound: load gong.mat; sound(y) Silly,...

## Matlab Basic Functions Reference (pdf)

Matlab has posted a pdf document that lists basic functions.  Here is a link to the pdf.-- Neil

...

...

## Re: Multi-filter Parks McClellan algorithm

Woodpecker,I just reviewed the post I referenced -- it turns out I actually used a least-squares approximation (Matlab firls), not PM.  I don't recall if it worked...

## Re: Multi-filter Parks McClellan algorithm

Hi Woodpecker,It seems to me it could work well for a droop-compensation filter.  For example, I have used the Matlab firls [not PM] algorithm to design sinx/x...

## Re: Multi-filter Parks McClellan algorithm

Also,If H1(f) has a region where it is very small (e.g. filter stopband), this region can be excluded.  For example, if H1 is a LP, you could just compute H2 over...

## Re: Multi-filter Parks McClellan algorithm

Hi Woodpecker,Suppose you want overall magnitude response H(f), and you will realize this with cascaded responses H1(f) and H2(f), where H1(f) is given and H2(f)...

## Re: Off-topic: Xmas gift for a techie?

Hi Woodpecker,I guess we may find out how well AI works next time we buy a car...Neil

## Off-topic: Xmas gift for a techie?

I am reading Ian Stewart's great book:  In Pursuit of the Unknown, subtitled "17 Equations that Changed the World".  Here are the subjects of some chapters:Pythagoras's...

## Re: Best way to represent "...and this computation comes from somewhere else" in a block diagram?

Maybe a pentagon formed by uniting a square with a triangle on its right edge.  In other words, the same symbol that is used on schematics when a signal comes from...

## Re: SDR/DSP Question

Hi,A cleaner solution would be to perform the upconversion in the digital domain.  You could use a quadrature Digital UpConverter (DUC) chip, which includes an...

## Re: Tilt correction in modulators

nbtech,So was the tilt correction a matter of DAC sinx/x correction or something else?regards,Neil

## Re: DSPOnlineConference.com - need help testing it.

Hi Stephane,The website looks good.  Note it says "Free for early registration", so you may want to change that to "half-price for early registration".Neil

## Re: fractional delay filter for non real time applications

Hi JGruber,You can try changing the dB ripple parameter "r" of the Chebychev window in my function.  It is set at 70 dB -- you can improve accuracy by using a...

## Re: fractional delay filter for non real time applications

As others have said, you can do it in the time domain.  You could use a Farrow interpolator, or for better accuracy of the amplitude response, you could use a Fractional-delay...

## Re: One raised cosine filter vs two cascaded root raised cosine filters

Hi Jon,Looks like progress!  You could of course reduce the number of taps by reducing the number of samples per symbol in the RRC filters.  It is common to use...

## Re: One raised cosine filter vs two cascaded root raised cosine filters

Jon,Here is an example of random symbols of value +.5/-.5 filtered by cascaded root-Nyquist filters.  The m-file eye1.m calls the function eyeplot.m.  Both mfile...

## Re: One raised cosine filter vs two cascaded root raised cosine filters

Yes, the two cases you mentioned won't be the same length.  However, there will be samples at either end of the cascaded root-Nyquist response that are close to...

## Re: One raised cosine filter vs two cascaded root raised cosine filters

Jon,Actually, the 2nd filter should be identical to the first one.  you are correct to upsample before filtering on the transmit side.  Are you viewing an eyeplot...

## Re: Covid-19 Stories

Hi everyone,I'm in Columbus, Ohio.  I am wondering how long my hair will be before my barber is open for business again.  OK, not a big issue!

## Re: Tunable power divider

So, if P1 + P2 = Ptotal,P2/Ptotal = 1 - P1/Ptotallet P1 dB = 10log10(P1/Ptotal)    P2 dB = 10log10(P2/Ptotal)thenP2 dB = 10log10(1 - 10^(P1dB/10))e.g.  for...

## Re: Tunable power divider

Sumit,Sorry, but I don't have anything specific.  Since passive devices tend to be based on transformers, they tend to have a fixed loss.  Maybe you could just...

## Re: Tunable power divider

Hi Sumit,What is the frequency range required?  Must this be a passive device, or can it be powered?-- Neil

## Re: Advice for FM Demodulation Techniques

Greg,Make sure to use atan2(Q,I), and not atan(Q/I).  Another option is to use the block diagram in Figure 13-61 (b).Neil

## Re: Advice for FM Demodulation Techniques

Here is a post by Rick Lyons on FM demodulation.  You can also refer to section 13.22 of his book Understanding Digital Signal Processing (3rd ed.)https://www.embedded.com/dsp-tricks-frequency-demodulation-algorithms/One...

## Update to my last blog post

I made an update to my blog post:  "Model Signal Impairments at Complex Baseband".  I simplified the math for adding phase noise in section 3, and I updated...

## Re: Practical digital communications book

Hi Simonzz,A good book that covers theory and practice is Digital Communications, A Discrete-Time Approach, by Michael Rice. (Pearson, 2009).  Among other topics,...

...

## Re: New IEEE Signal Processing Society Journal

Hi Stephane,I suppose most readers of DSPrelated come here to get informed and instructed about somewhat general DSP theory and tips.  They want to get some education...

## Re: New IEEE Signal Processing Society Journal

For that price, they should at least throw in a diploma from IEEE School of Truck Driving or IEEE Beauty College.Neil

## Re: Designing an IIR comb (peak) filter

bobby_k:1.  Since you said your band of interest was 0 -200 Hz, it is ok to decimate by 4 to give fs= 3750 Hz.  You don't have to decimate, but if you don't,...

## Re: Designing an IIR comb (peak) filter

bobby_k,Your sample rate is 15 kHz.  So you can decimate by 4 to 3750 kHz.  Then this code gives the response you are looking for, I think.regards,Neilfs= 3750; b=...

## Re: reconstruct phase-shifted sine tone

Hi fred,Thanks for being so helpful!

## Re: reconstruct phase-shifted sine tone

Note cost of the paper is \$33.00 for non-IEEE members.

## Re: Clock drift and compensation

Are the crystal frequencies equal or related by an integer factor?  If so, it may be easier to drive the DSP chip with the clock from the tuner.

## Re: Real to Complex conversion

I don't think method a) works.  I discuss the Hilbert transformer in this post:https://www.dsprelated.com/showarticle/1147.phpA Hilbert transformer could work. ...

## Re: OFF TOPIC: A Question About PI

Rick,The girl in the video asked what pi is good for.  Obviously, it's good for designing the NCO in the demodulator of her smart phone.

## Re: Window Impulse Response

The impulse response just the output of your system when the input is the unit impulse function.  The Fourier transform of the impulse response is the transfer...

## Re: Window Impulse Response

Hi Samp17,When using a window, be sure to multiply your signal by the window, sample-by-sample.  That will allow your spectrum to cover the range of 0 to fs/2. ...

## Re: Low cost audio DSP Exploration

Send a message to stephaneb -- you can contact him by clicking on his name.Neil

## Re: What papers should beginners in signal processing research read?

To continue the discussion of linear algebra:  the classic application we learned in EE was steady-state simulation of linear RLC circuits.  A circuit with N loops can...

## Re: Timing Recovery Loop Filter Rate

I agree that there is no advantage to running the loop filter faster than the rate of the TED.  It is not a big deal to do the loop computations with the loop filter...

## Re: What papers should beginners in signal processing research read?

Maybe the rules for authors that Rick mentions should be modified as follows:After you are done writing the paper add 100 or 200 words to explain "the obvious".

## Re: Todo List: Improvements to the Related Sites

Hi Stephane,On the home page, I preferred the previous list of recent blogs to the present list, which only contains 6 posts.  The present format causes blogs to...

## Re: Calculating noise floor of digitization system using FFT

Hi Naumankalia,What is the difference between your scheme and just applying a full-scale sinewave and then taking the windowed fft?  What is your definition of...

## Re: Trying to go live SOON

Stephane,Thanks for the intro to New Brunswick humor.Neil

## Re: introduction to error correcting codes book (including FEC)

Hi,I have read parts of this book by Lin and Costello.  It may be out of print.  The book was pretty straightforward, however, it is a long slog to get to the...

## Re: What is the frequency response of a resampling filter?

"Then, I view the "Taking aliasing into account" section as doing all of the decimation in one go"Yes, that's right.Neil

## Re: What is the frequency response of a resampling filter?

Weetabixharry,I'm not saying to reorder the filtering and downsampling -- If you look at figure 5, what I am doing is cascading versions of each filter that are...

## Re: What is the frequency response of a resampling filter?

Hi,Take a look at my post on this subject:https://www.dsprelated.com/showarticle/1228.phpregards,Neil

## Re: Band Edge Detector dervied from Maximum Liklihood Principle?

No need to repost.  You might want to look at Michael Rice's book, Chapter 8.https://www.pearson.com/us/higher-education/progra...

## Re: SC FDMA Channel Equalization

Hi,I think you posted this around the time dsprelated.com suffered a host outage.  It may have gone unnoticed by some.regards,Neil

## Re: Band Edge Detector dervied from Maximum Liklihood Principle?

Hi Michael,I think you posted this around the time dsprelated.com suffered a host outage.  It may have gone unnoticed by some.regards,Neil

## Re: Regarding my recent post on Multistage Decimators

Hi Kaz,Your code computes the impulse response of the decimator at the output sample rate of fs/8.  My post computes the impulse response and frequency response...

## Regarding my recent post on Multistage Decimators

I posted an article on Multistage decimators yesterday.  I decided it needed some tweaking, so today I updated it to show the stopband requirements in a couple...

## Re: 50Hz and harmonics filtering

Also, what is the band of the desired signal?

## Re: 50Hz and harmonics filtering

Hi Dimaios,What is your sample rate?Which harmonics are you trying to attenuate?  Odd? Even? Odd and even?How high in frequency do the harmonics extend?  5th harm,...

## Re: Time domain signal slikes

Imoshe,I think you will need to provide more details.  Not being a radar person, I can make one comment -- it is probably not a good idea to zero-out data before...

## Re: Phase Locked Loop Books in a time of DSP

Tim,I'm not sure if it is appropriate, but you could do a search on "Time to Digital Converter" (TDC).regards,Neil

## Re: Real to Complex conversion

Here is my post that uses a Hilbert xfrmr:https://www.dsprelated.com/showarticle/1147.php

## Re: High-cost communications in the old days -- telegrams

Ah yes -- the Old West, before the color subcarrier.Neil

## Re: High-cost communications in the old days -- telegrams

For the elderly out there (I had to look it up):  ASA = as soon asNeil

## High-cost communications in the old days -- telegrams

I've been reading a P.G. Wodehouse book (Right-Ho, Jeeves) that has several fictional telegrams in it.  For example:Fink-Nottle, Brinkley Court, Market Snodsbury,...

## Re: Is it possible to use dsp to tune an active analog filter

Carneyc,So presumably the varactors are controlled by DC outputs of some kind of DACs (e.g. sigma-delta DACs).  I imagine you have a DAC assigned to each varactor,...

## Re: Is it possible to use dsp to tune an active analog filter

Carneyc,Can you provide more detail about what you mean by "a 4x4 array of bandpass filters"?  Also, how are the filters now tuned/calibrated?  Do they have variable...

## Re: Any examples / literature on the purposeful insertion of errors into audio / video as a means of DRM (digital rights management)?

Nelson,Pay TV is much more sophisticated now than back in the days of "scrambling" of analog video.  For that matter, analog video is almost non-existent now. ...

## Re: For those who downloaded the PDF file for Lyons' recent "FFT Interpolation" blog

Rick,Thanks.  This is an occupational hazard of being an engineer.  Another hazard is getting something to work, but having the wrong explanation of why it works...

## Re: Digital lock in amplifier on FPGA

Gabrics,I notice there are a lot of articles on this subject on the web.  For example:Microchip App note AN1115:  Implementing Digital Lock-In Amplifiers Using...

## Re: DSP diagramming software?

Hi,I use Microsoft Visio.  I created my own library of symbols for my particular applications.  It's not perfect, but it does have a lot of flexibility.Another...

## Re: MATLAB simulation of bilinear transformation

Simon,You have a lot of steps, so it's hard to say quickly where the problem is.  You can design a band-reject filter in one step using:[b,a]= butter(N,[fL fU]*2/fs,'stop')where...

## Re: DSP History

Yes!  I used a slide rule for my freshman year, and got a Texas Instrument SR-50 scientific calculator (with red LED display) my sophomore year.

## Re: DSP History

Rick,I was working on analog video modulators back in the early '80's.  Little did I know that these DSP pioneers had set in motion the technology that would replace...

## Re: How to Obtain Biquad Coefficients

I noticed there is some Matlab code for the A-weighted filter in a DSPrelated post from 2011:https://www.dsprelated.com/showcode/214.phpHere is the code, with the...

## Re: How to Obtain Biquad Coefficients

Hi,For a biquad, the feedback coeffs are [1 a1 a2] and the feedforward coeffs are [b0 b1 b2].  The a0 coefficient does not appear explicitly in the filter structure. ...

## Re: IIR filters

Hi,Good point! Thanks,Neil

## IIR filters

I am curious about the usefulness of IIR filters above 2nd order in DSP applications.  I know that first order IIR's are common, and presumably so are biquads. ...

## Re: PLL jitter and double-sideband suppressed carrier demodulation

Konejisimo,I don't want to make specific suggestions that may be totally off the mark for your situation.  A couple of possibilities for phase detectors in an all-digtial...

## Re: PLL jitter and double-sideband suppressed carrier demodulation

Konejesimo,Here are posts I wrote on digital PLL design that you might find useful:https://www.dsprelated.com/showarticle/967.phphttps://www.dsprelated.com/showarticle/973.phpUsing...

## Re: AGC on FPGA

Kaz,I am not expert on AGC.  Maybe that's something I can study and write about sometime in the future.regards,Neil

## Re: AGC on FPGA

Hi,I think you need to read up on how digital agc is typically done.  At its simplest, digital AGC consists of a threshold detector, integrator, and multiplier.Here...

## Re: New DSP FAQ Section - please suggest topics

How do I make an FIR filter have gain of 1 at f = 0?

## Re: New DSP FAQ Section - please suggest topics

What is the difference between FIR and IIR fiters?

## Re: New DSP FAQ Section - please suggest topics

I'm not sure I understand what you're getting at here.  I view the bilinear xform as a tool.  Does a hammer matter?regards,Neil

## Re: Differential frequency measurement

Hi,By way of background, Mitra discusses DTMF decoding in his book, and provides an m-file:Sanjit K. Mitra, Digital Signal Processing 2nd Ed., McGraw-Hill 2001,...

## Re: Gapped-signals

Tudelft_Res,To get more frequency resolution, you could zero-pad the segments **after** windowing.  For example, if one segment were length 1500, you could window...

## Re: Gapped-signals

Tudelft_Res,I guess the answer depends on the type of signal and what you are using the signal for.  For example, if your purpose were spectral analysis, you could...

## Re: How does one delay a signal and allow its phase to propagate vs time with a specific slope or rate?

Hi,A delay of length T can be implemented by a series of one-sample delays, and it will have a linear phase slope.  For example, if you want a delay of 5 ms and...

## Re: DSP project suggestion

Hi,A very simple project would be a one-bit sigma-delta DAC.  You could use various constants as input and measure the DC output of a one-pole RC lowpass filter...

## Re: Advice on digital phase locked loop with square wave input wanted

Yeah,I once implemented a TDC phase detector who's input was just an external clock that was captured asynchronously as a single-bit signal.  I forget how much...

## Re: Advice on digital phase locked loop with square wave input wanted

Hi John,The analysis in my PLL tutorial still applies -- however, to use that approach you would need to calculate the gain Kp of the time-stamp based phase detector....

## Re: DFT of a signal and system

Yeah, it stems from the continuous system H(s):  the transfer function H(s) is the Laplace transform of the impulse response, and H(jw) is the Fourier transform...

...

## Re: The adoption of the frequency measure "Hertz"

So you could say that they put Hertz in the driver's seat.

## Re: Eye diagram

Avi,I have not looked at your code, so this may not apply.  However...If you have RRC filtered data, to look at the eye, you need to filter it again with the same RRC...

## Re: Matlab Home-use version

Mark,They say "Get the full Capabilities of Matlab", so that implies it is full-featured.  As you noted, the DSP toolbox (a key feature) appears to be extra --...

## Matlab Home-use version

As many of you know, #Matlab is a very expensive tool -- its cost brings to mind Mylan Pharmeceuticals and the EpiPen.However, besides the student version, they...

## Re: Understanding maths behind DFT?

Hi,The tricky thing is that textbooks are not always the best at clearly explaining the DFT. You may need to try a few to find an approach you like.  You might...

...

## Re: thought experiment for modeling an aliased tone through a system

Hi,This may not relate exactly to your problem, but take a look at this article.  It shows how to plot the image response of a decimator.  This method automatically...

## Re: Error correction codes: good intuitive theory for FW developpers?

Hi Andy,I'm not an expert, but FEC can be a tricky subject to jump into. The math can be tedious. I have read parts of the Lin and Costello book below -- it...

## Re: A digital filter question

Rick,As a practical matter, if the sample rate is much higher than the filter passband,  you could insert a delay of one sample in the block diagram without affecting...

## Re: A digital filter question

Hi Rick,No I have not seen that structure -- I have seen feed-forward structures for that purpose.The transfer function of your structure is of course Ha = 1/(1...

## Re: Decimator Image response

Rick,Regarding the non-symmetric b_down and u_down: If I change two lines of code     b_down = 4*b(4:4:end);     (instead of (1:4:end) )     u_down = 4*u(2:4:end);...

## Re: Decimator Image response

Hi Rick,1.  The definition I would propose for image response would be the sum of the undesired component levels that fall in-band due to decimation, with respect...

## Decimator Image response

...

Use this form to contact neirober

Before you can contact a member of the *Related Sites:

• You must be logged in (register here)
• You must confirm you email address