Rank: 371811 based on 0 downloads (last 30 days) and 0 file submitted
photo

ding

E-mail

Personal Profile:
Professional Interests:

 

Watch this Author's files

 

Comments and Ratings by ding
Updated File Comments Rating
20 Mar 2013 Delta Sigma Toolbox High-level design and simulation of delta-sigma modulators Author: Richard Schreier

Dear Richard Schreier,
I am a new man in deltasigma, so I follow your book" Understanding Delta-Sigma Data Converters by Schreier and Temes (ISBN 0-471-46585-2)" step by step, and I meet a problem "figure 8.4" and "figure 8.5" in page "265" and "266".
In your book, the SNR without window is "SNR = 76.4 dB @ OSR = 64",the SNR with window is "SNR = 119.2 dB @ OSR = 64".
But to my simulation, the result is "SNR = 86.1 dB @ OSR = 64" without window, "SNR = 85.7 dB @ OSR = 64" with window.
this is my code:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;
close all;

%synthesizeNTF
OSR= 64;
H= synthesizeNTF(5, OSR, 1);
nLev= 3;
Nfft= 2^ 13;
tone_bin= 57;
t= [0: Nfft- 1];
u= 0.5* (nLev- 1)* sin(2* pi* tone_bin/ Nfft* t);
v= simulateDSM(u, H, nLev);
n= 1: 150;
stairs(t(n), u(n), 'g');
hold on;
stairs(t(n), v(n), 'b');

%NTF simulation, SQNR cal and spectral estimation without window
spec = fft(v)/(Nfft*(nLev-1)/2);
snr = calculateSNR(spec(1:ceil(Nfft/(2*OSR))+1),tone_bin);
NBW = 1/Nfft;
f = linspace(0,0.5,Nfft/2+1); %this may be ahead?
Sqq = 4*(evalTF(H,exp(2i*pi*f))/(nLev-1)).^2/3;
figure; %add a new figure
plot(f,dbv(spec(1:Nfft/2+1)),'b')
hold on;
plot(f,dbp(Sqq*NBW),'m','Linewidth',1);
s= sprintf('SNR= %4.1fdB @ OSR= %2.0f\n', snr, OSR);
text(0.05, -20, s);

%NTF simulation, SQNR cal and spectral estimation without window
spec = fft(v.*(hann(Nfft)'))/(Nfft*(nLev-1)/4); %convert hann(Nfft) to vector matrix
snr = calculateSNR(spec(1:ceil(Nfft/(2*OSR))+1),tone_bin);
NBW = 1.5/Nfft;
f = linspace(0,0.5,Nfft/2+1); %this may be ahead?
Sqq = 4*(evalTF(H,exp(2i*pi*f))/(nLev-1)).^2/3;
figure; %add a new figure
plot(f,dbv(spec(1:Nfft/2+1)),'b')
hold on;
plot(f,dbp(Sqq*NBW),'m','Linewidth',1);
s= sprintf('SNR= %4.1fdB @ OSR= %2.0f\n', snr, OSR);
text(0.05, -20, s);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I use matlab r2011b for windows 64bit;

Contact us