详解ADC电路的静态仿真和动态仿真

描述

ADC电路主要存在静态仿真和动态仿真两类仿真,针对两种不同的仿真,我们存在不同的输入信号和不同的数据采样,因此静态仿真和动态仿真是完全不同的两个概念,所以设置的参数不同:

adc

静态参数仿真:

主要参数为INL DNL

输入斜坡信号作为激励

用WavevsWave 绘制出输入模拟量和数字编码之间的关系。利用calculator中的inl dnl函数进行计算。

adc

动态参数仿真:

信噪比(SNR),信号噪声失真比(SINAD),有效位数(ENOB),总谐波失真(THD),无杂散动态范围(SFDR);

SNR:信噪比是输入信号和噪声(不包括任何谐波以及直流) 的功率比,衡量器件内部噪声大小的基本参数。

SINAD:SINAD是输入信号和所有输出信号失真功率(包括谐波成分,不包括直流)比,它测量的是输出信号所有传递函数非线性加上系统所有噪声(量化、抖动和假频)的累积效果。

ENOB: 表示ADC在转换过程中真正输出有效的位数。

THD: 总谐波失真是输入信号与系统所有谐波的总功率比,它可提供系统对称和非对称非线性产生的失真大小,用以表达其对信号的谐波含量的作用或者影响。

SFDR: 表示器件输入和输出之间的非线性

第一步:在ADC后面接一个理想的DAC(VerilogA实现)。根据需求修改所需要的位数。

可以在cadence得ahdLib库中找到dac_8bit_ideal元件参考

第二步:确定如何加激励(满足相干采样情况下,设定输入信号频率)。

adc

我这里使用编写得程序进行自动计算

adc

下面说明手动计算具体如何实现:

1.确定采样率

设ADC CLK的周期为40ns,即频率为25MHz,设置采样周期为8CLK,转换周期是12CLK,因此采样时间间隔为20CLK,从而采样率为25M/20=1.25MSPS(1.25MHz)

采样率=CLK的频率除以(采样周期+转换周期)

(若采样周期为4CLK,采样率为25M/16=1.5625MSPS)

2.确定采样点N和周期数M

采样点取2^n,这样可以进行FFT分析。此处取M=3,N=128

3.确定AC分析的输入频率fin=fs*M/N

根据采样定理,输入频率要小于1.25M/2=0.625MHz=625KHz。若M=3,取N=128,则fin=1.25M*3/128=29.296875KHz

4.确定仿真时间

如果采样M个周期,每个周期时间1/fin,则:

T=M/fin=N/fs=128/1.25M=102.4us。仿真时,稍微多点时间,保证后面分析时,取数据取在非跳变处。比如仿真110us。由这个公式也可以看出,在采样率确定的情况下,N越大需要的仿真时间越长,而与输入信号频率无关。

接下来就是在电路图做好设置,就可以仿真啦。

adc

如果仿真时间比较长,比如取4096个点,那仿真时间可能无法接受。可以考虑使用多核

在ADE窗口中:Setup>Environment,弹出如下窗口,加上:

+mt=20 +aps

仿真完成后,波形大概如下:

从图中可以看出,正弦信号经过ADC转换,再经过理想DAC的转换,基本靠谱。

adc

第三步:设置参数并查看结果

得到瞬态仿真波形后,接下来就是对信号进行频谱分析。

分析方法可以采用:

1. Cadence Spectrum工具2.MATLAB计算

下面说明在利用cadence的spectrum工具进行参数分析

开始时间:t0,结束时间:t0+M/ft

adc

2.MATLAB计算

选中仿真出的输出信号波形-右键-send to-export,

选择格式为csv,start从一个稳定时刻开始,end默认就可以,step就是1/fs,比如50M,step就是20n,然后导出文件。

打开matlab代码main,修改读取的文件,运行得到ADC的输出频谱图及相关动态性能参数值。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分