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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 14612|回复: 34

[求助] SAR ADC优化

[复制链接]
发表于 2020-10-2 10:17:55 | 显示全部楼层 |阅读模式

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

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

x
设计
研究生项目,初次接手SAR ADC,目标是设计一款12位的SAR ADC,其各模块结构如下所述。
电源供电1.8V,采样时钟是5M Hz,比较器使用的是经典双尾电流动态比较器,电容阵列使用的是全差分单调开关电容阵列,不同的是共模电压抬升而不是降低,保证比较器始终处于导通状态。采样保持电路使用的是栅压自举电路。
前仿
目前,已经完成的工作是,在前仿的相干采样FFT测试下,差分栅压自举电路的有效位数是17位,SAR ADC的整体有效位数是9.311位。
求助
因为前仿基本不存在失调和失配的影响,所以并没有加入电容校准calibration和比较器OOS IOS技术,测试之后发现是INL存在增益误差。附图如下,请问该如何继续修改电路?有一些想法是在采样保持电路开关切换的时候有漏电现象,可是全差分检测栅压自举电路的有效位数是17位,就有些迷茫,特此向各位大佬请教。




此图是直接输入一个三角波,从0-1.8,再将转化后的SAR ADC用verilogA写的理想symbol信号做差求得 ...

此图是直接输入一个三角波,从0-1.8,再将转化后的SAR ADC用verilogA写的理想symbol信号做差求得 ...
 楼主| 发表于 2020-10-2 10:22:02 | 显示全部楼层
附上差分栅压自举电路和SAR ADC有效位数的图。

差分栅压自举电路测试图片

差分栅压自举电路测试图片

SAR ADC有效位数测量

SAR ADC有效位数测量
发表于 2020-10-2 21:24:42 | 显示全部楼层
本帖最后由 TOP2016 于 2020-10-2 21:29 编辑


593391621 发表于 2020-10-2 10:22
附上差分栅压自举电路和SAR ADC有效位数的图。


你这个是漏频了还是怎么了,我设计的也是12位的SARADC,栅压自举采样开关分析出来才14多一点,SARADC整体能都11+,你的动态性能分析和INLDNL分析的MATLAB脚本可以共享给我看一下么,我看看有什么差别

Dynamic performance

Dynamic performance
 楼主| 发表于 2020-10-2 21:34:39 | 显示全部楼层


TOP2016 发表于 2020-10-2 21:24
你这个是漏频了还是怎么了,我设计的也是12位的SARADC,栅压自举采样开关分析出来才14多一点,SARADC整体 ...


嘶,有可能,讲道理采样保持电路应该不至于这么好,可以分享一下您的代码么,我重新跑一下试试。
 楼主| 发表于 2020-10-2 21:38:29 | 显示全部楼层
clear;
clc;
v_slope= xlsread('sh','B2:B301');
figure(1)
plot(v_slope);
a=max(v_slope);
b=min(v_slope);
% vslope_1=(v_slope-b)/(a-b)-0.5;
% vslope_1=v_slope-mean(v_slope);
vslope_1 = v_slope(20:300);                                                                                                                           
N=256;%FFT点数

spectrum = abs(fft(vslope_1(1:N)));
spectrum = 2/N/1*spectrum(1:N/2);

spectrumdb = 20*log10(spectrum+eps);% eps 防止对数为0
frequency = 1/N*(0:length(spectrumdb)-1);

[fund, fundidx] = max(spectrum);
a=spectrum(2:fundidx-1);
b=spectrum(fundidx+1:end);
tp1=b;

funddb=20*log10(fund);
spec_nodc_nofund = [spectrum(2:fundidx-1) ; spectrum(fundidx+1:end)];
[spur, spuridx] = max (spec_nodc_nofund);


sfdrdb = funddb-20*log10(spur);
tp2=norm(spec_nodc_nofund);
sndr = norm(fund)/norm(spec_nodc_nofund);
sndrdb=20*log10(sndr);
enob = (sndrdb-1.76)/6.02;

fclk = 5* 10^6;  %采样频率
[spectrumdb_fin,fin_decision]=max(spectrumdb);%得到的信号频率幅度和在频率数组中的位置
fin=frequency(fin_decision);
fin=fclk*fin;

figure(2);
plot(frequency, spectrumdb, '*-', 'linewidth', 2);%hold on;
%string = sprintf('samplepoint=%0.4g, ENOB=%0.4g,SNDR=%0.4gdB, SFDR=%0.4gdB',N, enob,sndrdb, sfdrdb);  %, Fundamental=%0.3gdBV,funddb
text(0.4,-25,sprintf('\\bfsamplepoint=%0.4g\nENOB=%0.4g\nSNDR=%0.4gdB\nSFDR=%0.4gdB\nFin=%3.6f MHz\nFclk=%3.0f MHz',N, enob, sndrdb, sfdrdb, fin/10^6, fclk/10^6),'FontAngle','normal','Fontsize',12,'edgecolor','r','LineWidth',3,'Margin',5,'BackgroundColor','w');
title('FFT PLOT');
xlabel('Frequency [f/fs] ');
ylabel('Amplitude [dBV]');
axis([0 0.5 -150 0]);
grid on;
%hold on;
发表于 2020-10-2 21:59:12 | 显示全部楼层


593391621 发表于 2020-10-2 21:38
clear;
clc;
v_slope= xlsread('sh','B2:B301');


你看看,这个是我的动态性能的,我的分析INLDNL的没有调好,现在不知道怎么搞,你的有么?

Share dynamic performance.docx

15.86 KB, 下载次数: 232 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2020-10-2 22:11:09 | 显示全部楼层


TOP2016 发表于 2020-10-2 21:59
你看看,这个是我的动态性能的,我的分析INLDNL的没有调好,现在不知道怎么搞,你的有么? ...


没有,我还在研究美信的那个,我测INL就把斜坡波用AD转完再给理想DA然后相减,估计不对。
发表于 2020-10-3 08:33:19 | 显示全部楼层


593391621 发表于 2020-10-2 22:11
没有,我还在研究美信的那个,我测INL就把斜坡波用AD转完再给理想DA然后相减,估计不对。 ...


嗯嗯,我用的动态和静态性能分析的都是美信的那个
发表于 2020-10-3 13:22:17 | 显示全部楼层
单调开关算法后续出了很多变种,现在已经有共模电压不变的版本了,可以考虑下新的算法
发表于 2020-10-3 20:06:30 | 显示全部楼层
时序好好检查一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-6 17:49 , Processed in 0.030436 second(s), 7 queries , Gzip On, Redis On.

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