520 likes | 801 Views
Chapter 7. Over-Sampling and Multi-Rate DSP Systems. Objectives. Describe the anti-aliasing problem and its solution with over-sampling. Demonstrate the details of digital anti-aliasing and anti-imaging.
E N D
Chapter 7 Over-Sampling and Multi-Rate DSP Systems
Objectives • Describe the anti-aliasing problem and its solution with over-sampling. • Demonstrate the details of digital anti-aliasing and anti-imaging. • Demonstrate the processes of down-sampling (decimation) and up-sampling (interpolation) to change the effective sampling rate of a digital signal. • Show that interpolation is accomplished by up-sampling and a gain-adjusted low-pass filter. • Demonstrate the process of rational rate conversion by cascaded interpolation and decimation. • Derive the relationship between sampling rate and the spectral density of random noise. • Demonstrate the de-noising of signals with over-sampling. • Describe the process of delta-sigma quantization and derive the transfer functions for a first-order noise-shaping quantizer. • Demonstrate the process of delta-sigma quantization and the recovery of a quantized signal by low-pass filtering
The Anti-Aliasing Problem • If a signal contains a band-width of interest, W, then the minimum sampling frequency is 2W (Nyquist requirement) • However, to prevent aliasing, the signal must be analog pre-filtered to a band-width of fs/2 prior to sampling • If the signal contains frequency components or noise beyond W, the analog low-pass filter (“anti-aliasing” filter) must be impractically sharp if sampling is done at 2W • Solution: Multi-rate processing • Over-sample the signal at a rate considerably higher than 2W and band-width limit the signal with a sharp digital low-pass filter • “Down-sample” the signal digitally to an effective rate 2W after digital filtering • This allows the use of a simple analog anti-aliasing filter
Why Does Over-Sampling Help Anti-Aliasing? Over-sampled W W 0fs 1fs 2fs Nyquist-sampled W W Magnitude Responses of Required Anti-Aliasing Analog Filters
Aliasing Noise Example Suppose a communications speech signal has a bandwidth of interest of 4 kHz. The signal is bandwidth-limited by a 2nd order Butterworth analog filter (fc = 4 kHz) prior to sampling. Compare the aliasing noise at 3 kHz for: • fs = 8 kHz (Nyquist sampling) • fs = 128 kHz (16x over-sampling)
Aliasing Noise Example % Use M-file ALIASNOISE=alias_effect_mag(filterorder,fc,fs,f1 >> alias_effect_mag(2,4000,8000,3000); figure, >> alias_effect_mag(2,4000,128e3,3000);
Digital Anti-Aliasing and Anti-Imaging Simple Analog LP Filter High Rate Sampling (ADC) Down-sample to Nyquist Rate Digital LP Filter Decimation Anti-Aliasing Step Up-sample to high rate Digital LP Filter DAC at High Rate Simple Analog LP Filter Interpolation Anti-Imaging Step
Down-Sampling and Decimation • Removal of samples is called “down-sampling” • Down-sampling by a factor N reduces the effective sampling frequency by the same factor. That is, the new sampling frequency is fs/N • To prevent aliasing, the down-sampled signal should be band-width limited to fs/2N by low-pass filtering prior to sample removal • Low-pass filtering followed by down-sampling is called “decimation”
Down-Sampling a Sinusoid >> [ysin,tsin]=analog(100,1,30,8000); >> stem(ysin),title('100 Hz Sinusoid Sampled at 8 kHz') >> xlabel('Sample') >> dysin=downsample(ysin,4); >> figure,stem(dysin); >> title('100 Hz Sinusoid Sampled at 8 kHz, Down-Sampled by 4x') >> xlabel('Sample')
Decimation • With decimation, low-pass filtering precedes down-sampling to prevent aliasing. • Example: Decimating a 100 & 1200 Hz signal by a factor of 4 with the MATLAB “decimate” command >> x=analog([100,1200],[1,1],1000,8000); >> xd4=downsample(x,4); % Effective sampling frequency is now 2000 Hz >> xdecim4=decimate(x,4); % The LP filter will have a cut-off of 0.8*(8000/8) = 800 Hz and will remove the 1200 Hz component >> subplot(3,1,1),dtft_demof(x,0,1500,2024,8000); >> title('Original Signal') >> subplot(3,1,2),dtft_demof(xd4,0,1500,2024,2000); >> title('Down-Sampled (Aliasing)') >> subplot(3,1,3),dtft_demof(xdecim4,0,1500,2024,2000); >> title('Decimated (No 1200 Hz Aliasing)')
Up-Sampling and Interpolation • The process of adding zero-valued samples between existing samples is called “up-sampling” • Up-sampling by a factor N effectively increases the sampling frequency to Nfs • Estimating the values between existing samples is called “interpolation” • Interpolation is accomplished by low-pass filtering an up-sampled signal followed by an amplitude correction to restore the signal power.
Down-Sampling and Up-Sampling 100 Hz + 200 Hz Signal >> [x,ts]=analog([100,200],[1,1],20,2000); % Construct a short version of the signal >> xd4=downsample(x,4); >> xu4=upsample(xd4,4); >> subplot(3,1,1),stem(x),title('Original Signal') >> subplot(3,1,2),stem(xd4),title('Down-Sampled by 4') >> subplot(3,1,3),stem(xu4),title('Down-Sampled Signal Up-Sampled by 4x') >> xlabel('Sample')
Interpolation Process • The spectrum of the up-sampled signal gives the clue for the process • Low-pass filter the up-sampled signal to remove all frequency components beyond fs/2N, where fs = effective sampling frequency after up-sampling and N is the up-sampling factor. • Multiply the result by N to restore the correct the power of the up-sampled signal • Typical filter order for the low-pass filter is 8N • This process is implemented in the MATLAB interp command, using a special symmetric FIR filter to compensate for group delay
Recovery of a Down-Sampled Signal by Interpolation Filtering >> x=analog([100,200],[1,1],1000,2000); %Construct the signal >> xd4=downsample(x,4); >> xu4=upsample(xd4,4); >> n=0:32; % Begin the design of an order 8N filter LP filter >> fs=2000; >> N=4; >> cutoff=fs/(2*N); >> omega=2*pi*cutoff/fs; >> h=(omega/pi)*sinc(omega*(n-16)/pi).*hamming(33)'; % LP filter >> x_recovered=4*filter(h,1,xu4); % LP filter and multiply by N=4 >> subplot(3,1,1);stem(x(1:100)),title('Original Signal') >> subplot(3,1,2);stem(xu4(1:100)),title('Zero Insertion of Down-Sampled Signal') >> subplot(3,1,3);stem(x_recovered(1:100)),title('Recovered (LP Filtered) Signal')
Interpolation Recovery Results Note that the group delay of the LP filter is 16 in this example
Interpolation with “interp” >> x=analog([100,200],[1,1],1000,2000); %Construct the signal >> xd4=downsample(x,4); >> xu4=upsample(xd4,4); >> x_interp=interp(xd4,4); >> subplot(3,1,1),stem(x(1:100)),title('Original Signal') >> subplot(3,1,2),stem(xd4(1:25)),title('Down-Sampled Signal') >> subplot(3,1,3),stem(x_interp(1:100)),title('Recovered Signal Using "interp"')
Sampling Rate Conversion by Rational Factors • The sampling frequency can be changed by rational factors L/M where L is the interpolation factor and M is the decimation factor. • Rate changes (to higher or lower rates) is always done with interpolation (L) and decimation (M) in that order to prevent loss of frequency components of interest in the signal. • Example: Changing a music signal from the CD rate (44.1 kHz) to the digital tape rate (48 kHz) is accomplished by interpolation by a factor of 160 followed by decimation by a factor of 147
Rate Conversion Example • Convert a 100 Hz sinusoidal signal sampled at 1200 Hz to a signal sampled at 1000 Hz • L/M=1000/1200 = 5/6 >> x=analog(100,1,40,1200); >> xL=interp(x,5); % The “interp” command carries out interpolation >> xLM=decimate(xL,6); % “decimate” carries out decimation >> subplot(2,1,1),stem(x),title(' Signal, fs = 1.2 kHz') >> subplot(2,1,2),stem(xLM),title('Rate Conversion 1.2 kHz to 1 kHz') >> axis([0,50,-1,1])
Rate Conversion ExampleResults Note in both cases the signal is about 40 ms long.
Over-Sampling and Random Noise • Gaussian noise power is uniformly distributed in the frequency domain • As a consequence, noise power density is reduced by a factor of 2 (3 dB) for each doubling of the sampling frequency.
Calculating Mean Noise Power Density for Different Sampling Frequencies >> [zero_sig,tt]=analog(1,0,1000,50000); %Construct a psuedo-analog “zero” signal >> analog_noise=zero_sig+randn(size(zero_sig)); % Construct a psuedo-analog noise signal >> n1000=sample(tt,analog_noise,1000); % Sample the noise signal at 1 kHz, 2 kHz, and 4 kHz >> n2000=sample(tt,analog_noise,2000); >> n4000=sample(tt,analog_noise,4000); >> [N1,f1]=dtft_demof(n1000,0,500,512,1000); % Compute the DTFT for each digital noise signal >> [N2,f2]=dtft_demof(n2000,0,1000,512,2000); >> [N4,f4]=dtft_demof(n4000,0,2000,512,4000); >> pd1=(abs(N1)).^2/(length(n1000)*1000); % Compute the spectral power density >> pd2=(abs(N2)).^2/(length(n2000)*2000); >> pd4=(abs(N4)).^2/(length(n4000)*4000); >> mean(pd1) % Compute the mean value of the spectral power density >> mean(pd2) >> mean(pd4) ans = 9.9750e-004 ans = 4.8431e-004 ans = 2.5061e-004 Notice than the average power density is reduced by a factor of 2 for each doubling of the sampling frequency
De-Noising a Signal by Over-Sampling and Low-Pass Filtering • Over-sample a signal at a rate many times higher than the band-width of interest W • Over-sampling reduces the noise power in W by 3 dB for each doubling of the sampling frequency • Low-pass filter with a cut-off frequency near W. This eliminates the noise power at frequencies beyond W.
De-Noising Example >> [asig,tt]=analog(100,1,40,40000); >> asign=asig+randn(size(asig)); >> [d8,t8]=sample(tt,asig,8000); >> [d8n,t8]=sample(tt,asign,8000); >> n=0:100; >> omega=2*pi*125/8000; >> hw=(omega/pi)*sinc(omega*(n-50)/pi).*blackman(101)'; >> d8nf=filter(hw,1,d8n); >> subplot(3,1,1),plot(t8,d8),title('Clean Signal') >> subplot(3,1,2),plot(t8,d8n),title('Noisy Signal') >> subplot(3,1,3),plot(t8,d8nf),title('Filtered Noisy Signal') >> subplot(2,1,1),fft_plot(d8n,8000);title('Noisy Signal Spectrum') >> subplot(2,1,2),fft_plot(d8nf,8000);title('Filtered Noisy Signal Spectrum')
De-Noising ExampleResults Noise Power Uniformly Distributed Noise Power Eliminated by LP Filter
Delta-Sigma (ΔΣ) Quantization • The processing speed of a DSP system could be measured by bits/sec in which case the speed is Nfs, where N is the number of quantization bits (ADC) and fs is the sampling frequency. • For a given system speed, the maximum fs requires quantization with one bit, which appears impossible because quantization with two levels implies impractically high quantization noise. • ΔΣ Quantization can do just that: quantize with 1 bit and still control the quantization noise.
Delta-Sigma QuantizerDiscrete-Time Model Output = input x delay + noise x high-pass filter (e.g, “Noise-shaping” one-bit quantization)
Delta-Sigma Quantization of a Sinusoid >> [x,ts]=analog(100,2,500,10000); >> stem(ts(1:100),x(1:100)) >> title('High-Rate Sampled 100 Hz Sinusoid') >> xlabel('milliseconds') >> [x,ts]=analog(100,2,500,10000); >> stem(ts(1:100),x(1:100)) >> title('High-Rate Sampled 100 Hz Sinusoid') >> xlabel('milliseconds') >> y=deltasigma(x); % This is the delta-sigma quantizer algorithm >> figure,stem(y(1:100)); >> hold >> plot(x(1:100),'k') >> title('Delta-Sigma Quantizer Output for 100 Hz Sinusoid') >> xlabel('Output Sample') >> hold off
Delta-Sigma Quantization of a Sinusoid – Quantization Noise Shaping Low-pass filtering would eliminate the quantization noise
Low-Pass Filtering Δ-Σ Sinusoid >> n=0:500; >> omega=2*pi*200/10000; >> h=(omega/pi)*sinc(omega*(n-250)/pi); >> hb200=h.*blackman(501)'; >> [x,ts]=analog(100,2,500,10000); >> y=deltasigma(x); % This is the delta-sigma quantizer algorithm >> y_lpf=filter(hb200,1,y); >> fft_plot(y_lpf,10000); >> title('Spectrum of Low-Pass Filtered Delta-Sigma Quantizer Output') >> figure,plot(ts(1:500),y_lpf(1:500)) >> title('Time-Domain of the Filtered Quantizer Output') >> xlabel('Milliseconds')
Low-Pass Filtering Δ-Σ Sinusoids Filter group delay
Processing a Δ-Σ Signal Delta-Sigma Quantizer Serial-to-N-bit Parallel Converter Binary stream (fs) N-bit numbers (fs/N) Low-Pass Filter Decimation to Nyquist Rate Continue Processing Recovered Signal
Processing a Δ-Σ Signal • The high-rate sampling frequency of the Δ-Σ quantizer is fs. • Over N samples, the bit-stream of the Δ-Σ quantizer output is the average signal value. • Serial-to-N-bit parallel conversion creates N-bit numbers equal to the average value. The effective sampling frequency is fs/N. • The N-bit numbers carry the quantization noise which is eliminated by digital LP filtering. The filtered signal represents the recovered signal. • After filtering the signal can be decimated to the Nyquist rate for further processing.
Processing a Δ-Σ Signal MATLAB Simulation % Create and Delta-Sigma Quantize a Signal with 100, 200, and 300 Hz Components >> x=analog([100,200,300],[1,1,1],1000,24000); % Sampled signal >> y=deltasigma(x); % Delta-sigma quantization of the signal % % Simulate the 8-Bit Serial to Parallel Conversion of the Quantizer Stream >> y8bits=decimate_and_average(y,8); % M-file to block process the signal y in blocks of 8 % % Low-Pass Filter the 8-Bit Signal with Cutoff of 350 Hz >> n=0:100; % Start low-pass filter design >> fs=24000/8; % The signal has been effectively decimated by a factor of 8 >> omega=2*pi*350/fs; >> h=(omega/pi)*sinc(omega*(n-50)/pi).*hamming(101)'; % Windowed LP filter >> yfilt=filter(h,1,y8bits); % Low-pass filter the 8-bit re-quantized signal % % Decimate the filtered signal to the Nyquist Rate >> ydec=decimate(yfilt,4); % Decimate the filtered signal by a factor of 4 (fs = 750 Hz)
Processing a Δ-Σ Signal MATLAB SimulationSignals (10 ms period) >> t24=0:1000/24000:10; >> stem(t24(1:240),y(1:240)) >> hold %Current plot held >> plot(t24(1:240),x(1:240),'k') >> legend('Quanitzer output and sampled signal') >> hold off >> t3k=0:(1/3):10; >> stem(t3k(1:30),y8bits(1:30)) >> hold %Current plot held >> plot(t24(1:240),x(1:240),'k') >> legend('8-bit samples and sampled signal') >> hold off
Processing a Δ-Σ Signal MATLAB SimulationSignals (10 ms period) >> tf=downsample(t3k(1:30),4); >> yfiltf=downsample(yfilt(81:110),4); >> stem(tf,yfiltf) >> hold %Current plot held >> plot(t24(1:240),x(245:484),'k') >> legend('Decimated final signal and sampled signal') >> hold off >> stem(t3k(1:30),yfilt(81:110)) >> hold %Current plot held >> plot(t24(1:240),x(245:484),'k') >> legend('LP filtered 8-bit samples and sampled signal') >> hold off
Processing a Δ-Σ Signal MATLAB SimulationSampled Signal Spectrum >> dtft_demof(x,0,1500,4000,24000); % Begin generating signal spectra >> legend('Spectrum of the sampled signal')
Processing a Δ-Σ Signal MATLAB SimulationQuantizer and 8-Bit Signal Spectra (Showing Quantization Noise) >> figure,dtft_demof(y,0,1500,4000,24000); >> legend('Spectrum of the delta-sigma quantizer output') >> figure, dtft_demof(y8bits,0,1500,4000,3000); >> legend('Spectrum of the 8-bit serial-to-parallel signal')
Processing a Δ-Σ Signal MATLAB Simulation8-Bit Signal LP Filtered and Decimated(Quantization Noise Minimized) >> figure,dtft_demof(ydec,0,1500,4000,750); >> legend('Final signal decimated by 4 (fs = 750 Hz)') >> figure, dtft_demof(yfilt,0,1500,4000,3000); >> legend('Spectrum of the low-pass filtered 8-bit signal (recovered signal)')