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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8062|回复: 24

[求助] 仿真8位异步SAR ADC发现有效位数是负数,比较器对于相差不大的输入Vip和Vin会判断错误,...

[复制链接]
发表于 2021-3-22 17:08:10 | 显示全部楼层 |阅读模式

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

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

x
萌新在做一个8位单通道400MS/s SAR ADC,两个问题,一是仿真发现有效位数是负数,看了一下波形发现比较器很多时候会判断错误,但是单独仿真比较器却正确,采用的Vcmbased时序,电源电压1.2V,二是每次DAC上上升或下降的电压不是理论值(偏小),感觉可能是DAC上寄生电容太大了,得减小一下(DAC上连着控制电容开关时序的MOS管还有比较器)
比较器.png
发表于 2021-3-22 19:31:40 | 显示全部楼层
什么工艺?
 楼主| 发表于 2021-3-22 20:42:53 | 显示全部楼层


tsmcN65 nm工艺
 楼主| 发表于 2021-3-22 20:46:25 | 显示全部楼层
image.png image.png image.png
比较器图片,是不是比较器速度太慢了呀,初步接触,懂得还不是很多,希望前辈们不吝赐教!
 楼主| 发表于 2021-3-22 20:59:43 | 显示全部楼层


tsmcN65nm工艺
 楼主| 发表于 2021-3-22 21:03:46 | 显示全部楼层
image.png 这个是波形,感觉从采样/保持出来的波形就不太好,单位电容是1f,开关已经是理想开关了,有效位数刚仿真了一下,7.53位。。。 image.png
 楼主| 发表于 2021-3-22 21:15:51 | 显示全部楼层
image.png 采样开关位数低的原因是Vxp和Vxn在比较器比较阶段一直抖动,感觉像是kickback nosie或者时钟馈通影响?问一下如何减小呢(有没有什么比较好的比较器结构呀,我波形之前比这个还抖,后来在输入和输出之间加了一对由clkc控制的管子,减小了点回踢噪声)
发表于 2021-6-21 13:32:20 | 显示全部楼层


Yi_Huo 发表于 2021-3-22 21:03
这个是波形,感觉从采样/保持出来的波形就不太好,单位电容是1f,开关已经是理想开关了,有效位数刚仿真 ...


楼主你好,能否看看你的动态性能测试的代码,我这方面看了很多帖子,说是用美信的代码,但是还是不会仿这个
 楼主| 发表于 2021-7-21 09:27:14 | 显示全部楼层


zyinghn 发表于 2021-6-21 13:32
楼主你好,能否看看你的动态性能测试的代码,我这方面看了很多帖子,说是用美信的代码,但是还是不会仿这 ...


clc;
clear;
n=10^-9;
%data=load('D:\Weplay\Time5.1\03 ProjectX\001 2020.7_NewSwitch\Cad_test1\LAYOUTEST\1.txt');
data=csvread('C:\Users\dell\Desktop\198M.csv',1,1,[1 1 1072 8]);
data1=data./1.2;
fft_num=2^10;  %% fft点数
start_fft=2; %% 起始取点位置
Dout1=data1(start_fft:start_fft+fft_num-1,;
Dout= Dout1*[128 64 32 16 8 4 2 1]';
num=length(Dout);
fs=400;
%%%%%%  FFT calculation  %%%%%%%%%%%
numpt=length(Dout);   
spect=fft(Dout);  
dB=20*log10(abs(spect));
maxdB=max(dB(2:numpt/2));
for k=1:length(dB)  
   if dB(k)<n     
       dB(k)=-n;
    else dB(k)=dB(k);
    end
end

figure;
Q=plot([0:numpt/2-1].*fs/numpt,dB(2:numpt/2+1)-maxdB,'k');%plot作图(横坐标数值,纵坐标数值)基带
grid on;   %添加网格
zoom;   %放大
% axis tight;
set(gca,'linewidth',2) %在做的图上插入坐标轴的坐标标注
set(gca,'fontsize',28,'fontname','Times New Roman');
set(Q,'linewidth',1.5);
xlabel('ANALOG INPUT FREQUENCY (MHz)','fontsize',30,'fontname','Times New Roman'); %X轴建立
ylabel('AMPLITUDE (dB)','fontsize',30,'fontname','Times New Roman'); %Y轴建立
a1=axis;
% 找出输入频率并计算功率谱
fi=find(dB(1:numpt/2)==maxdB); %找出输入信号的位置 ,maxdB是输入信号的幅值(最大)
span=0;%输入频谱范围
spectP=(abs(spect)).*(abs(spect)); % 求功率谱(幅度平方作为信号中功率的度量)spect为FFT后的结果,8192*1 的复数矩阵
Ps=sum(spectP(fi-span:fi+span)); % 输入信号功率,sun(X)求X的列之和; fi-输入信号的频率
Psum=sum(spectP(2:numpt/2)); %基带的信号总功率之和
Dout_SF=abs(dB(2:numpt/2+1)-maxdB);%基带中的放大倍数(经过处理后,距离输入信号(最大)的dB数)
Dout_SFDR_1=min(Dout_SF(1fi-2)));%输入信号频率前的最小值
Dout_SFDR_2=min(Dout_SF(fi:length(Dout_SF)));
%输入信号频率后到奈奎斯特频带边界的最小值 ;length(Dout_SF)=4096 (num/2)`
%求动态参数
fin=(fi-1)/numpt.*fs;
% fi=112(与一开始定义fin的有关),num=numpt =8192=num=2^13(FFT number)
SFDR=min(Dout_SFDR_1,Dout_SFDR_2);
%无杂散动态范围 SFDR。表现为输入信号分量与第一奈奎斯特频带(0-fs/2)内最大杂散或者噪声分量之差。
SNDR=10*log10(Ps/(Psum-Ps));%信噪声失真比 SNDR 。(Psum-Ps)表示噪声、谐波能量总和的比值
ENOB=(SNDR-1.76)/6.02;%有效位数 ENOB
text(a1(2)/5,a1(3)/5, sprintf('SFDR=%3.2fdB\nSNDR=%3.2fdB\nENOB=%3.2fbit@%3.4fMHz',...
   SFDR,SNDR,ENOB,fin),...
    'EdgeColor','black','LineWidth',2,'fontsize',32,'BackgroundColor',...
      [1 1 1],'Margin',5,'fontname','Times New Roman');

发表于 2021-12-20 10:32:41 | 显示全部楼层
楼主您好,请问您每次DAC上上升或下降的电压不是理论值(偏小)这个问题是否已经解决呀,解决方式是怎样的呀,最近也遇到了相同问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-18 01:37 , Processed in 0.024951 second(s), 7 queries , Gzip On, Redis On.

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