微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > Sigma-delta ADC 输出码流如何在Cadence里面分析啊?

Sigma-delta ADC 输出码流如何在Cadence里面分析啊?

时间:10-02 整理:3721RD 点击:
最近在搞sigma-delta modulator and ADC, 但是对于这方面有点疑惑哦!
以前只做过pipleline ADC,输出10bit binary code,只需要在cadence里面做一个
verilogA 的理想DAC,把code转换成模拟电压就可以做DFT分析,看到频谱.
但是对于1bit量化的sigma-delta ADC输出的是0101的码流,如果是一个12bit的ADC,
那么应该要把这个0101的码流转换成一个12bit的data或者是串行的12bit data.
那么如何把这个0101的码流转换成data呢?是不是需要做一个数字滤波呢?把码流里面的含有的信息转换成二进制码哦?
还有一个疑问, sigma-delta ADC是不是一般没有S/H电路啊?如果没有S/H,那么ADC一直在处理变化的信号.如果由S/H,那么就在一个周期内由sigma-delta转换出一个值.
sigma-delta ADC是不是不是这样的工作原理啊?

直接对输出数据进行dft分析,看频谱性能

2# mendenz
输出是0101的东西,能够直接DFT么?不需要转换成N bit 的二进制码么?而且需不需要非相干采样?

虽然也有资料分析CT的sdADC,不过大多的sdADC结构基本都会用到采样电路吧

sigma delta ADC 确实一般没有采样保持电路,因为modulator是SC的,本身就可以采样保持信号
至于码流转换,同问

同问,不知道输出的码流怎样解析成采样值对应的数字输出?

同问吧

再问一下

再问一下

正解!
直接拿来用了,不会转化成nbit的。
和Nyquist ADC是不同地。

use matlab

如果你是modulator段設計 直接用fft來分析 看in-band部份就好了

可以用matlab,对输出码流进行加窗,然后fft,求带宽内的噪声power和信号的power。进而得到snr

12楼正解,直接用fft来分析

直接做dft分析可看频谱,至于信噪比的计算就比较复杂了

1、没有S\H电路,如果输入不是直流值,不能确定输出值对应什么输入值。
2、输出码流的问题如2楼

输出码流直接用matla做FFT就行。

用Matlab 直接寫數值分析最方便 分析也很方便

请问从cadence中导出了仿真数据,在matlab中进行fft变换时的matlab程序该怎么写呀?是不是与一般的数据做fft变换不同,要考虑到OSR的问题,要把过采样频率转换为奈奎斯特频率呢?具体应该怎么呢?多谢

请问你现在弄懂了吗?我也遇到了这个问题!


你可以看一下下面的程序,仅供参考
%利用FFT计算SDM的PSD
fsig=1000;
M=256;
fs=2*M*fsig;
N=16384;
Ts=1/fs;
Ain=1;
ts=Ts;
Doutw=y.*blackman(N);%加窗
Dout_spect=fft(Doutw);
Dout_dB=20*log10(abs(Dout_spect));
maxdB=max(Dout_dB(1:N/2));
semilogx([0:N/2-1].*fs/N,Dout_dB(1:N/2)-maxdB);
title('Power Spectral Density');
xlabel('Frequency(Hz)');
ylabel('PSD(dB)');
接下来计算SDM的SNR,程序如下,
spectP=(abs(Dout_spect)).*(abs(Dout_spect));
Dout_dB=10*log10(spectP);
[maxdB,fin]=max(Dout_dB(1:N/2));
nb=5;
signal_bins=fin+[-(nb-1)/2nb-1)/2];
inband_bins=0:N/(2*M);
noise_bins=setdiff(inband_bins,signal_bins);
Ps=sum(spectP(signal_bins));
noise_bins(:,1)=[];
Pn=sum(spectP(noise_bins));
SNR=10*log10(Ps/Pn)

你可以看一下下面的程序,仅供参考
%利用FFT计算SDM的PSD
fsig=1000;
M=256;
fs=2*M*fsig;
N=16384;
Ts=1/fs;
Ain=1;
ts=Ts;
Doutw=y.*blackman(N);%加窗
Dout_spect=fft(Doutw);
Dout_dB=20*log10(abs(Dout_spect));
maxdB=max(Dout_dB(1:N/2));
semilogx([0:N/2-1].*fs/N,Dout_dB(1:N/2)-maxdB);
title('Power Spectral Density');
xlabel('Frequency(Hz)');
ylabel('PSD(dB)');
接下来计算SDM的SNR,程序如下,
spectP=(abs(Dout_spect)).*(abs(Dout_spect));
Dout_dB=10*log10(spectP);
[maxdB,fin]=max(Dout_dB(1:N/2));
nb=5;
signal_bins=fin+[-(nb-1)/2:(nb-1)/2];
inband_bins=0:N/(2*M);
noise_bins=setdiff(inband_bins,signal_bins);
Ps=sum(spectP(signal_bins));
noise_bins(:,1)=[];
Pn=sum(spectP(noise_bins));
SNR=10*log10(Ps/Pn)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top