求问sigma delta ADC的频谱分析
补充一下
我的SDM的量化器输出是三位数据,我把它们从cadence中导入matlab,利用如下程序:
vd0=round(vd0);%先取整
vd1=round(vd1);
vd2=round(vd2);
for i=1:8000%在将三位数据转化成一位的数据流
if (vd2(i)==3)&(vd1(i)==0)&(vd0(i)==0)
vd(i)=1;
else if (vd2(i)==0)&(vd1(i==3))&(vd0(i)==0)
vd(i)=0;
else if (vd2(i)==0)&(vd1(i)==0)&(vd0(i)==3)
vd(i)=-1;
end
end
end
end
Fs=32000000;%进行FFT仿真
N=8000;
z=fft(vd);
f=(0:N-1)*Fs/N;
Mag=2*abs(z)/N;
plot(log10(f(1:N/2)),20*log10(abs(Mag(1:N/2))),'-');
这样得到的结果是不对的,我的程序应该是有问题的,请大神指教~
自己顶一个
matlab网页上有个SDtoolbox,里面有的?
做sigmadelta ADC都用过这个toolbox吧?
我是把cadence中的数据导入matlab中进行处理,SDtoolbox是用在建simulink模型时候用的吧,这里能用上吗?
我又找到了一个FFT程序如下,vd是一位的数据流,
ntot=length(vd);
osr=32;
N=8192;
fsignal=476562.5;
fs=32000000;
fbin=N*fsignal/fs;
w=hann(N);
nb=3;
w1=norm(w,1);
w2=norm(w,2);
NBW=(w2/w1)^2;
V=fft(w.*vd)/(w1/2);
signal_bins=fbin+[-(nb-1)/2nb-1)/2];
inband_bins=0:N/(2*osr);
noise_bins=setdiff(inband_bins,signal_bins);
snr=dbp(sum(abs(V(signal_bins+1)).^2)/sum(abs(V(noise_bins+1)).^2));
figure(1);
clf;
semilogx([1:N/2]/N,dbv(V(2:N/2+1)),'b','Linewidth',1);
hold on
[f p]=logsmooth(V,fbin,2,nb);
plot(f,p,'m','linewidth',1.5);
s=sprintf('SNR= %4.1fdB\n',snr);
text(0.1,-120,s);
figureMagic([1/N 0.5],[],[],[-140 0],10,2);
但得到的SNR只有-3.5,是怎么回事呀?请指教
同问,求解答,有没有这方面的讲解