在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11686|回复: 25

[求助] Delta-Sigma ADC计算SNR问题

[复制链接]
发表于 2020-9-26 10:11:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
小弟参照《UNDERSTANDING DELTA-SIGMA DATA CONVERTERS》的第七章。在cadence用mos管仿真了一个二阶的delta-sigma ADC,把输出数据导出到matlab处理,得到了这样的图 image.png
SNR=43.9dB,和书上的114dB相距甚远,
image.png
请大神赐教一下,我红圈那部分该怎么处理啊,可以直接去掉吗?我看书上基本就没有把前面那部分贴出来。
ps:我已经把高低电平1.8v和0v转换成了+-1,但是直流分量还是有点大。

发表于 2020-9-26 11:53:25 | 显示全部楼层
是不是输入信号直流偏置导致的? 输出数据减去数据平均值再做一个fft应该可以去掉
发表于 2020-9-26 12:08:26 | 显示全部楼层
和那部分没多大关系,噪底太高了。
先看看你的积分器运放性能指标达到要求了没。
 楼主| 发表于 2020-9-26 17:08:08 | 显示全部楼层
本帖最后由 Herowln 于 2020-9-26 17:21 编辑


chenyangXJTU 发表于 2020-9-26 11:53
是不是输入信号直流偏置导致的? 输出数据减去数据平均值再做一个fft应该可以去掉 ...

我用 输出数据减去数据平均值 也不能完全消去DC分量,但SNR增加了几dB, image.png
我用的是1.8V和地做为ADC的参考电压,所以输入了一个900mV直流偏置1.8V峰峰值的正弦信号,我还想问的是这样输入测SNR对吗? image.png


发表于 2020-9-28 17:33:03 | 显示全部楼层
3楼是正解,噪底太高了。

另外,看频谱,你的43.9dB应该对应的是SNDR,加上了谐波失真的吧。
书上114dB的SNR是没算谐波失真的,52dB那个SNDR才对应你的43.9dB。

减去直流分量,就是减去频率最低的点,考虑到频谱泄露啥的,减去直流到往后四五个点的频率值,差不多就算是减去了DC了,对应图里大概是10^-4附近的样子?
 楼主| 发表于 2020-9-29 12:10:10 | 显示全部楼层


魔陈公仔 发表于 2020-9-28 17:33
3楼是正解,噪底太高了。

另外,看频谱,你的43.9dB应该对应的是SNDR,加上了谐波失真的吧。


大神,我 横坐标忘改了,图是下面这样。 image.png

这个ADC按书上设计的时候带宽是 1KHz,我就直接输入了67/65536*1M=1022Hz,(65536采样点,1M采样频率),最后发现按书上给的代码 inband_bins = 0 : N/(2*OSR) 算SNR的话,我信号后面的部分全部都没算进去。 我想问我改怎么衡量这个ADC的性能,该输入什么频率来算SNR? 代码中的OSR要变吗?还是一直是500。
看我一楼发的,书上好像输入了个几百Hz的信号看SNR。

发表于 2020-9-29 15:11:33 | 显示全部楼层
首先呢,要理解什么是噪声整形。一般来说对于一个奈奎斯特ADC来说,你设计的信号带宽是1K,那么采样频率应该是fs=2fin,就是2K。噪声是均匀分布在采样频带内的,噪声能量是一定的,信号能量是一定的,所以要提升SNR,要么提升信号能量,要么降低噪声能量,但是关注的范围始终是在“设计的信号带宽以内”。

采用过采样和噪声整形,为的是把信号频带内的噪声移到信号频带以外,这样所关注的信号频带内的噪声就低了,SNR就会升高。所以不论你的OSR有多大,几阶整形,算SNR都是在信号频带以内,带宽以外的噪声都不考虑的,对,就是后面那坨坨小山坡,越陡越好,越高越好,反正不要它。

敲重点,所关注的信号频带内。你说的inband_bins,是根据你的OSR和采样频率来计算带宽的频点位置,算SNR时是到这个频点的二倍附近为止(是2倍fin吧,具体代码记不清了)。看你的图,70.2dB的话,应该是算到了2kHz附近了吧?怎么会信号后面的部分没算进去?如果信号后面都没进去,那应该有80dB左右啊?严格来说,你的采样频率是要根据你的信号带宽和OSR值来计算的。你这里如果带宽是1K,采样频率是1M,那么OSR是500没问题。

另外还有一点有误区,信号带宽是1K,不代表你的输入信号就是1K,而是从1到1K这个范围都可以,但是不能超过这个范围。难道你输入个10Hz的正弦,系统就不能工作了?不是的。带宽1K意思是,小于1K的信号,系统都能够正确处理,大于1K可能就会功能失效。所以你要保证低频输入10Hz、中频输入500Hz、高频输入999Hz等条件下,SNR都要满足要求。但是,不能超过带宽啊,你带宽是1K,输入1022Hz是个什么鬼?

PS:关于输入信号的频率设置,书上有些频谱图是不是在信号频点处就一根线,尖峰上去,而你仿出来有时像座小山,频谱在信号频点附近有一定宽度?这就是频谱泄露了,是因为输入信号的频率不合理,是计算的问题,但算功率的时候如果把信号附近一定宽度的频谱求和,那么信号功率也没差多少就是了,就要看代码怎么处理。你可以上网了解一下相干采样,这样不会有频谱泄露,好些。

再教你快速频谱图吧,比如你发的书上的那个例子,很明显带宽是1K,但是人家信号频率就不是在1K附近,而是在20几Hz。正常来讲一个输入信号的幅值在1附近,那么换成20dB格式也就差不多是0dB吧。所以啊它的尖尖头在0dB附近。那么噪声的功率就是求和咯加啊加的,但在20dB里就是找最高的那个点。你就记住,频谱越高的那个点点它越牛逼,其他都是可以忽略的小弟。(绝对不是-100dB + -110dB = -210dB,会被老师抓出去打的)

图中SQNDR=52dB左右,你不标这个数字我都能看差不多的值出来,怎么看,SQNDR是考虑谐波加噪声啊,那就找找找他们的大哥在哪,谐波H3不是等于-56dB么,在0到2倍带宽2K内就它最高啊,其他零零散散加起来贡献不了多少,差的很多,信号功率按照它说的是-2dB,说明幅值小于1,-2dB-(-56dB),可不就54dB了,再加上其他七七八八的贡献个2dB,差不多嘛。

再看SQNR=114dB,怎么算的??找大哥啊!你想想,和SQNDR相比,就是忽略了谐波失真嘛,就是那些信号频率整数倍附近的频点,那就不看它们找最高,基本就是沿着红色(theory)那条线找,哎,在2K附近找到了最高的地方,怼横轴附近差不多就是110dB嘛。对吧,这就是看频谱快速估算SNR指标,再除以6.02,不就能大致预估有效位数了。

哎,码了这么多字有些累了,自己好好研究研究,体会一下吧,喝杯下午茶去了。
 楼主| 发表于 2020-9-30 11:34:27 | 显示全部楼层
本帖最后由 Herowln 于 2020-10-1 15:07 编辑


魔陈公仔 发表于 2020-9-29 15:11
首先呢,要理解什么是噪声整形。一般来说对于一个奈奎斯特ADC来说,你设计的信号带宽是1K,那么采样频率应 ...


非常感谢大神码了这么多字,论坛里果然卧虎藏龙,我细细消化以后对ADC有了更深的了解,当初缺乏对SNR具体的认知,现在想来,输入超过带宽的确是个非常错误的决定,再次感谢你愿意抽出宝贵的时间来答疑解惑。 image.png
发表于 2021-3-9 16:41:23 | 显示全部楼层
好贴,论坛里面大神太多了,又学习到了,非常感谢!!
不过我还是有点没明白,信号的带宽在FFT图里面是如何确定的,以及楼主是如何把底噪降下来的,我之前用LTspice仿真也遇到底噪很大的问题,输入信号也是加了直流分量。
发表于 2021-3-11 11:13:21 | 显示全部楼层


Herowln 发表于 2020-9-29 12:10
大神,我 横坐标忘改了,图是下面这样。

这个ADC按书上设计的时候带宽是 1KHz,我就直接输入了67/65536* ...


你好,我想输入频率是不是应该用61去除而不是67,想问一下你最好用的是什么频率
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 06:33 , Processed in 0.024725 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表