Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 4280|回復: 7
打印 上一主題 下一主題

[問題求助] SFDR的仿真遇到的问题 请教

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-4-5 16:25:51 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
根据公式Fin/Fsample=Nwindows/Nrecord
3 z5 l7 f# L5 U4 Y我选取- y$ |0 A, a; c3 B: q. m
Nrecord=4096 ' Q4 ]+ t1 `) I
先取Fin=10MHz Fsample=250MHz) e! {) E; N( v( J. t
由此得出Nwindow=163.84因为Nwindow一般为奇数和质数
6 Z5 b0 o- l. g, c故这里取Nwindow为163
8 k3 B5 R' L  E+ Z$ j( r% t9 [带入得到Fin=9.94873Mhz
; H) g+ X3 q8 c& T在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR
* M( c( P" a& n
* y+ n- v6 v/ f# ]' X( t- S  U这是一般的SFDR的仿真步骤。4 Z1 e2 [( V$ O, i2 I( N+ ?

, H' M; O. E1 G0 R8 c5 s我的问题是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR 8 p  K2 \% r: D& d
于是我仿真了4n*4096(4n是因为Fsample为250Mhz)时间
. I0 N* B( u$ e( n7 u6 f将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问 : ^; Y% Q' y% F* [- V% i6 u
这个理想的正弦波的SFDR都不怎么好% F! t3 m! g6 b; J' J0 u0 B8 K
那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?
3 ]6 T; E/ @5 ]是我理解错了吗?
我做fft的时候用的matlab程序大致如下:
' g6 L- _9 A) L将4096个点导入到matlab中的a中 然后b=fft(a,4096)然后db=20*log10(abs(b)) plot(db)

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
8#
 樓主| 發表於 2009-4-9 19:07:46 | 只看該作者

回復 7# 的帖子

关键的问题是你最后虽然用matlab可以产生理想的digital code  可是 你最后要分析的output还是从hspice仿真抽样出的 不能避免跳过hspice这一步呀
7#
發表於 2009-4-9 17:10:18 | 只看該作者
我認為用MATLAB 產生digital code可能會比較好,因為hspice版本不同跑出來的值也會不同,(MATLAB我不知道),而且看你用MATLAB的sfdr比hspice好,當然用好ㄧ點的程式去測你的電路,這樣debug也比較容易,問題是誰能教我sinwave digital code 怎麼寫(用MATLAB)。
6#
 樓主| 發表於 2009-4-7 23:49:08 | 只看該作者
这是部分输出点  
/ ~, e7 T  h# |2 O8 h4 s
: p0 N7 _  B% Z. w4 \7 |! O  F  time    voltage   
# I# c8 E9 k, O( M* K3 l' S( u                    v1     
4 O- f9 x/ q7 B. J; M) ?$ J   10.00000n     58.8708m  
( m; y- G: r1 B6 a" O4 g, R2 b  110.00000n    594.2903m  
% v7 T( @6 s  A' z" ]7 H+ C  [( F  210.00000n    944.0395m  ! ]4 Z9 Z, T8 N# _1 [9 |- S
  310.00000n    960.2334m  6 ]. D1 D* u% g" D& w. D
  410.00000n    655.0623m  
* B9 ^( l2 k. ]5 {. k+ T% y5 j) @+ P+ ]* S$ h) A- o# A- J( G
我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036  而hspice的为0.5942903
7 o& S3 L. v: ^# E: t" o                 210n处        sin(2*pi*0.9375e6*210e-9)= 0.9448  而hspice的为0.944039 & {: w8 P1 j- I3 z5 ~
这点的变化好像会影响到fft的波形
  ?. X$ m  w& x/ X' {; L7 z  f: n. T* \: ~
. O  S) T4 X) D9 b" |8 J0 d[ 本帖最後由 xiaoxianzai 於 2009-4-8 12:05 AM 編輯 ]

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
5#
 樓主| 發表於 2009-4-7 23:03:29 | 只看該作者
谢谢版主的答复
" j2 z2 L/ n& f5 s' G' ^/ S我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确
" }" H' |2 H( b: c# Y& T& _版主可以把程序放进去跑跑32个点的 也是一样
$ o  P) C( m0 O& {, v" n
4 h7 S, d7 e# S1 t- D: efin=0.9375meg fsample=10meg/ \9 [- ?- _8 @4 f  n# |* K
N=32 n=3
' P& `2 T$ h) V8 [# m" B
/ i. W+ n& d, d% r$ }. @; d6 @
" Q. I/ _+ \$ W- W" }- `.param ff=10meg              8 l, m  t7 c  T$ q4 p
v1 v1 0 sin(0 1 0.9375meg )  
% t3 ]5 c! q* ~; s.tran 100n 3110n 10n         % Y7 l/ O+ H, C, O) T. p' L
.print v(v1)                 
8 a1 ~5 ^6 Z& ?; w6 }; y3 `6 s.end
4#
發表於 2009-4-7 22:26:08 | 只看該作者
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對
/ q2 E1 P4 x/ B  ~& F9 J跟MATLAB比較後同樣時間的值應該不會差這麼多才對- Y4 g( ^# t0 ]5 Q3 e
你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的( _! T1 G8 f1 i0 d
不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦& f/ c1 a: s+ S- q. N  y4 Q
詳細原因可能還要再進一步檢查
3#
 樓主| 發表於 2009-4-7 14:20:35 | 只看該作者
感觉问题在这里
& z8 a" w8 e3 r) }- t我在matlab中编写了段sin函数的抽样曲线* D3 Y/ Y1 P: j

3 O% `1 G: y' T1 ]( i比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致 # W- q! j( _. O7 G* h
如下所示6 |3 S- U- _2 w
T   MATLAB                         HSPICE( a! \2 P) t, B
1 58.870803651189036          58.8708037e-3 ( X0 a$ T- d6 z6 s# W
2 603.5559419535714          599.7663787e-3 & A5 ~* I& ~) y% s3 E
3 944.806046466878           934.7331225e-3 * o6 l3 E; _2 U
4 967.5990923602598          956.1967592e-3
7 _: L8 B) L- V! g: U7 V5 664.2524379112818          662.4251941e-3   L) d" X; \9 v$ `! @' y! b1 M
6 137.01234168196848         136.5766324e-3 % ~' R' P: A% y  O8 i& W
7 -436.40924067334225       -433.0983571e-3
1 t: ~5 P5 ]  U  S; R- k" C8 -862.734385977792         -861.6494438e-3
8 }& U3 h/ b! m* n( O: C9 -998.2656101847159        -997.6056075e-3
: @  h. e* D. v: h% z8 B10 -797.3206537727073        -797.1222747e-3
% \% c: N1 y1 Y  @; J" \2 R+ c11 -327.6301795616938        -324.6260505e-3
# v. m9 l6 Q$ K2 \3 j( F12 252.4915770151574          251.2462039e-3 ! O  X2 ]1 k$ f7 p
3 w* [5 ~  f6 [: O- R
从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
2#
 樓主| 發表於 2009-4-6 21:45:28 | 只看該作者
这是HSPICE语句.param ff=250meg  f1='163*ff/4096', E# o$ v/ _. l& x/ Z
v1 v1 0 sin(0.28 0.28 f1)
2 U6 u- ~' k9 k6 t8 r) Q.tran 4n 16384n 3n
# [# s6 u1 ^$ [- L" Y) D; ~.print v(v1)' ]; n( s9 J$ [0 u
.end
4 L0 F$ o( k8 h然后把生成的数据v1从list里面取出来存到sin.txt里面; D& h) Z4 h- x6 ^4 B
然后打开MATLAB 程序如下
>> d=load('sin.txt');
7 r# \( X& @! D( \) q. j3 V>> b=fft(d,4096);
1 n2 y. S2 p) A. ?2 y>>  c=20*log10(abs(b));! _6 J# }) {2 b
i=1:4096;
: Q& g. @# ?; y1 J4 f. |& h3 @2 V" Vplot(i,c)
  [  H5 u# v$ H9 t2 y# h6 N1 I1 \" S3 b! T0 R! l
大大请教啦
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2025-2-19 06:58 AM , Processed in 0.181010 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表