ADC参数仿真

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

静态参数仿真:

主要参数为INL DNL

输入斜坡信号作为激励

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

动态参数仿真:

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

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

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

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

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

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

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

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

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

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

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

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越大需要的仿真时间越长,而与输入信号频率无关。

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

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

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

+mt=20 +aps

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

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

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

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

分析方法可以采用:

1. Cadence Spectrum工具2.MATLAB计算

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

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

2.MATLAB计算

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

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

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

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值