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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[求助] DAC SFDR仿真问题

[复制链接]
发表于 2014-2-11 21:10:45 | 显示全部楼层 |阅读模式

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

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

x
DAC的动态参数仿真方法?
1、对DAC进行SFDR仿真,将频率位FIN的Vsin信号输入verilogA模型的ADC,将ADC输出座位DAC的输入,其中采样频率为FS,假设输入频率为1M采样频率为20M,然后得到DAC还原的Vsin‘信号,将Vsin’的所有点导入matlab做分析得到的SFDR是不是最准确的?这样获得的数据太多了,如果对每一个台阶再采样一个点,这样输出曲线就变得较为光滑,这样的数据会偏离实际值太多。这样对不对?
2、论坛中说Fin=(M/N)Fs,其中需要M为质数,N位2的n次方。具体是什么意思?
3、论文中输入频率100M采样频率400M时候的sfdr是**db,4倍的采样率,输入信号每个周期只能被采4个点,还原出来的波形岂不是非常的不精确?

请前辈多多指点!
 楼主| 发表于 2014-2-12 10:17:07 | 显示全部楼层
自己顶一下   前辈们多多指教
发表于 2014-2-12 11:16:03 | 显示全部楼层
1.DAC输出的信号还是要经过等间隔采样的,一个周期采样整数K个点,再做FFT。这里主要考虑DAC seelling 过程(glitch,slew,BW);其实你会发觉当K大到某个值得时候FFT的结果基本不变,这个值就是经济合理的值。

2.FIN=(M/N)*fs ; M/N互质主要是保证仿真N个data才重复。做FFT时,只需采样N个周期的K*N个点,K为每个周期的整数采样点;这样就不需要加窗函数,信号只有一个tone. 加窗函数的缺点是主tone扩展,计算起来比较麻烦。FFT对N的值也是有要求的N大到某个值时SNR结果才基本不变,是为经济合理的值。再回到上面的问题如果M/N不互质,则采样的N个周期的值必定会出现重复。对于仿真重复的值并不会增加仿真精度。

3.奈奎斯特率以下的输入信号仿真都是有必要的,坚持上面的原则即可,比如100M输入信号100M可以微调,比如257/1024*100M,这样保证1024周期重复。
 楼主| 发表于 2014-2-12 19:18:53 | 显示全部楼层



非常感谢前辈的解惑 (2)M和N分别指什么,您说的N是指对输入信号的采样周期数,那么M呢?
有贴将M解释为输入信号的周期数量,N为对输入信号的采样次数:
在加激励时,需要满足Fin=(M/N)*Fs,其中Fin是正弦激励的频率,Fs是采样时钟的频率,N是你做fft的采样点数(可以取为2^10),M为采样时间内输入信号的周期数(最好为奇数)。比如:你是12位200M采样的DAC,如果你要仿真输入频率1M时的情况,则可以Fs=200MHz,N=1024,M=5,Fin=0.9765625MHz。采样时间为5.12us。最后用WaveScan查看输出波形时,将波形文件导出,再用Matlab做dft,Matlab程序见附件(将后缀名改为.m)。
需要注意的是:为了方便做dft,在Cadence ADE中选择tran仿真时,仿真时间可选为5.3us(大于采样时间),同时点击options,在跳出的窗口 Transient Options中 将OUTPUT PARAMETERS/strobeperiod设为0.05ns,最后在Matlab做dft时,将前面不稳定的0-0.18us截取,留下稳定的0.18us-5.3us。
http://bbs.eetop.cn/thread-239649-1-1.html

这其中的解释N是对输入信号的采样点数即最终DAC的输出的台阶数,在DAC输出的N=1024个台阶中做了间隔0.05ns的数据采样。然后把所得到的数据做FFT分析,点数包括舍弃的应该有1024*100个,是不是这个意思??而不是首先解释的最终做FFT的点数只有N=1024个点。

如果引号中的方法得到的点数,可能不是输入信号周期的整数倍,这样做的FFT分析会不会有频谱泄露的问题,一些matlab函数中要求做分析的点数构成的信号时输入信号的整数倍?

还有贴回复说:需要输入信号尽量使DAC能够输出所有的码,动态参数仿真也需要这样吗? 他的回答是什么意思呢?
看你的仿真结果图片,貌似你并没有run 完所有的 digital code ,(即从0000.......(14个0)到1111.....(14个1))而且你的仿真信号周期只有一个。    这种情况下.你的DAC退化成为一个低位的DAc. 更加本质上来讲,由于你的LSB并不等于FS/(2^14-1),导致了结果的量化噪声变大。当然得到的SNR结果远远小于6.02*14+1.72的理想结果。呵呵,ENOB也显示了这一趋势。 另外,仿真的时候使用COS信号作为输出,会产生偶数次的谐波。  我的一些建议,也是通常的做法。用一个16为的理想ADC输出作为你DAC的输入码。ADC的输入端为一个SIN信号。  你可以选择run一个完整的SIn周期,此时ADC时钟高一些,也可以选择run很多sin周期,ADC时钟可以相对较低。 这两种方式同样要消耗挺长的时间,但是高位的DAC验证就是这样,木有办法。两外,适当的选取输入时钟周期和数据采样周期,避免频谱泄露。(貌似你的图没有这方面的问题)http://bbs.eetop.cn/thread-344771-1-1.html


谢谢你
 楼主| 发表于 2014-2-12 20:34:16 | 显示全部楼层


1.DAC输出的信号还是要经过等间隔采样的,一个周期采样整数K个点,再做FFT。这里主要考虑DAC seelling 过程 ...
abab1394 发表于 2014-2-12 11:16




   .FIN=(M/N)*fs ; M/N互质主要是保证仿真N个data才重复。做FFT时,只需采样N个周期的K*N个点,K为每个周期的整数采样点;这样就不需要加窗函数,信号只有一个tone. 加窗函数的缺点是主tone扩展,计算起来比较麻烦。FFT对N的值也是有要求的N大到某个值时SNR结果才基本不变,是为经济合理的值。再回到上面的问题如果M/N不互质,则采样的N个周期的值必定会出现重复。对于仿真重复的值并不会增加仿真精度。


谢谢前辈的解惑
(2)中N是采样的周期个数?那M是什么呢?  有人解释M是Fin输入周期的个数,N位采样的点数,即DAC输出的台阶数。将DAC输出信号采样再做分析,做分析时需要数据是输入信号的整数倍,这个获得的数据应该不会是整数倍吧?


在加激励时,需要满足Fin=(M/N)*Fs,其中Fin是正弦激励的频率,Fs是采样时钟的频率,N是你做fft的采样点数(可以取为2^10),M为采样时间内输入信号的周期数(最好为奇数)。比如:你是12位200M采样的DAC,如果你要仿真输入频率1M时的情况,则可以Fs=200MHz,N=1024,M=5,Fin=0.9765625MHz。采样时间为5.12us。最后用WaveScan查看输出波形时,将波形文件导出,再用Matlab做dft,Matlab程序见附件(将后缀名改为.m)。
需要注意的是:为了方便做dft,在Cadence ADE中选择tran仿真时,仿真时间可选为5.3us(大于采样时间),同时点击options,在跳出的窗口 Transient Options中 将OUTPUT PARAMETERS/strobeperiod设为0.05ns,最后在Matlab做dft时,将前面不稳定的0-0.18us截取,留下稳定的0.18us-5.3us。
 楼主| 发表于 2014-2-12 20:34:46 | 显示全部楼层
我的回复怎么显示不出来??
 楼主| 发表于 2014-2-12 20:37:02 | 显示全部楼层


1.DAC输出的信号还是要经过等间隔采样的,一个周期采样整数K个点,再做FFT。这里主要考虑DAC seelling 过程 ...
abab1394 发表于 2014-2-12 11:16




   感谢前辈的解惑 2中公式M和N分别指的是什么呢?
 楼主| 发表于 2014-2-12 20:40:30 | 显示全部楼层


感谢前辈的解惑 2中公式M和N分别指的是什么呢?
丝丁 发表于 2014-2-12 20:37




有人将M认为是输入信号的周期个数,N应该是对输入信号的采样点数吧?
   "在加激励时,需要满足Fin=(M/N)*Fs,其中Fin是正弦激励的频率,Fs是采样时钟的频率,N是你做fft的采样点数(可以取为2^10),M为采样时间内输入信号的周期数(最好为奇数)。比如:你是12位200M采样的DAC,如果你要仿真输入频率1M时的情况,则可以Fs=200MHz,N=1024,M=5,Fin=0.9765625MHz。采样时间为5.12us。
最后用WaveScan查看输出波形时,将波形文件导出,再用Matlab做dft,Matlab程序见附件(将后缀名改为.m)。
需要注意的是:为了方便做dft,在Cadence ADE中选择tran仿真时,仿真时间可选为5.3us(大于采样时间),同时点击options,在跳出的窗口 Transient Options中 将OUTPUT PARAMETERS/strobeperiod设为0.05ns,最后在Matlab做dft时,将前面不稳定的0-0.18us截取,留下稳定的0.18us-5.3us。
"
发表于 2014-2-13 09:13:16 | 显示全部楼层
M/N* fs=Fin,M是N个采样点的输入信号出现的周期数。N为输出点不重复的最少采样点。仿真时要剔除开始的不稳定点,因为电路的需要时间响应的。
发表于 2014-7-10 20:03:10 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-4-2 02:36 , Processed in 0.035210 second(s), 9 queries , Gzip On, MemCached On.

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