Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-4-5 16:25:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
根据公式Fin/Fsample=Nwindows/Nrecord. w6 a+ X' }- c$ D; S+ W
我选取
3 w8 y& j- t+ w2 QNrecord=4096 - H$ b9 F' R9 ~+ H! L* h5 I" R
先取Fin=10MHz Fsample=250MHz
/ \! ?* Y2 W/ A# B. V2 l由此得出Nwindow=163.84因为Nwindow一般为奇数和质数. t2 i0 n4 ]; ?3 w) u
故这里取Nwindow为163 . v/ O. E: S' D8 x  ~
带入得到Fin=9.94873Mhz" i0 i( h5 }0 k. H2 n
在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR7 g4 F; v' g* B. Q; k; z# K

+ j0 f" B# ^* U% t% ?% m这是一般的SFDR的仿真步骤。% V3 w2 q6 y; N( f" k8 a

9 P, E7 h5 {& \3 v! a, ^) Q我的问题是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR
- p7 J/ e1 r& T  Q" k于是我仿真了4n*4096(4n是因为Fsample为250Mhz)时间
9 |1 N# K' ]$ U0 i/ v将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问
- a; f8 b6 s# s: v2 p这个理想的正弦波的SFDR都不怎么好
: x- \- X$ j* J6 c那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?6 ?) z7 f4 J3 y* Y! G
是我理解错了吗?
我做fft的时候用的matlab程序大致如下:
) e- Q4 M! V4 `, b. D% u3 D将4096个点导入到matlab中的a中 然后b=fft(a,4096)然后db=20*log10(abs(b)) plot(db)

本帖子中包含更多資源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2009-4-6 21:45:28 | 只看該作者
这是HSPICE语句.param ff=250meg  f1='163*ff/4096'
8 S$ R$ i3 r6 B% |- J6 L( Fv1 v1 0 sin(0.28 0.28 f1)
) j6 g# N# f- S# e) f8 j; J5 }  @.tran 4n 16384n 3n
5 y* W3 ?4 e( w4 U+ j2 T.print v(v1)
% x7 v0 n+ P. g.end  W) H: _3 h6 [4 m
然后把生成的数据v1从list里面取出来存到sin.txt里面' v- @& }7 f3 f3 z& }
然后打开MATLAB 程序如下
>> d=load('sin.txt');6 e) C, ?: Y7 s  `3 L8 g
>> b=fft(d,4096);* S. {: W( s0 |6 ^4 i) g
>>  c=20*log10(abs(b));
, x) J$ M5 U, L$ qi=1:4096;/ f, ~$ Q4 [% S/ J  W9 ]  k% }; X
plot(i,c); t$ c; y7 @# t$ B7 N

' o% e: W% h# B+ q5 L0 Q4 L大大请教啦
3#
 樓主| 發表於 2009-4-7 14:20:35 | 只看該作者
感觉问题在这里 # h1 Q! @, T, {5 B( m5 u& X
我在matlab中编写了段sin函数的抽样曲线& T" f; U" @. U: G% N' b

3 V' d1 ~& K. w7 c$ @' r比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致 # _+ s7 }7 l; @9 J4 Z  G
如下所示
0 p5 r; c. g" d4 fT   MATLAB                         HSPICE  ]& ~, K- U( N: i* j: T" Z2 J
1 58.870803651189036          58.8708037e-3
. C1 c2 l" q9 m# R- s3 }1 ^/ b% d2 603.5559419535714          599.7663787e-3
! f& O: L% h7 ]! C4 A' I; ^9 L$ [3 944.806046466878           934.7331225e-3 % B8 H% w+ i' q! O4 r$ j5 T
4 967.5990923602598          956.1967592e-3
  ^& z5 ?' S5 ]  `0 f. j! u6 i5 664.2524379112818          662.4251941e-3 / G: ]1 @1 }( L, c
6 137.01234168196848         136.5766324e-3
  K# s) q8 E) G7 -436.40924067334225       -433.0983571e-3
8 a0 }! M, n# `) Q" R0 g" M8 -862.734385977792         -861.6494438e-3
. s3 O( C) k  ?$ s$ M' I9 -998.2656101847159        -997.6056075e-3
# r$ {8 b, V: i+ Y10 -797.3206537727073        -797.1222747e-3 6 B( x+ u: K8 Q5 h2 l" T
11 -327.6301795616938        -324.6260505e-3
% c; O4 A5 K9 s+ j; S12 252.4915770151574          251.2462039e-3
% z0 X3 Y) D- Z& E. ]4 r. C9 y# ]# t+ Q: j
从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
4#
發表於 2009-4-7 22:26:08 | 只看該作者
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對# U; t4 D6 ~4 }; v& O( G. Q) E
跟MATLAB比較後同樣時間的值應該不會差這麼多才對- C8 q9 v8 Q* k! X
你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的
% l+ |& o* E; Z- i不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦
& V. P5 e! B) V& W& l詳細原因可能還要再進一步檢查
5#
 樓主| 發表於 2009-4-7 23:03:29 | 只看該作者
谢谢版主的答复
: y4 J. F: b0 p# A5 u我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确
8 X' W- ~0 F1 C( N( w% M版主可以把程序放进去跑跑32个点的 也是一样
3 F# U9 b8 J) ?4 L
1 R! Z: F' [) vfin=0.9375meg fsample=10meg6 Z7 e0 [) b! }9 h
N=32 n=3
' W1 Q! J  x4 P7 ~- v
) f. d# Y, F9 L/ a* \/ c8 |: ?+ }. @1 I7 ]: R. O
.param ff=10meg              8 p3 A3 ]1 W4 i- V
v1 v1 0 sin(0 1 0.9375meg )  * d' D- W5 u2 P
.tran 100n 3110n 10n         
8 ?5 Q/ ?+ s9 c7 s1 P.print v(v1)                 & T( K3 v0 _9 d
.end
6#
 樓主| 發表於 2009-4-7 23:49:08 | 只看該作者
这是部分输出点  
% z: g$ Q1 K+ }# F' |  H" y- D/ m+ K1 e( ^0 g; l
  time    voltage   
6 L0 F1 s: B9 e& g$ |5 o  o$ _: u                    v1     
, K, _, E7 V# V) }" i% p   10.00000n     58.8708m  
& u+ a6 d; S" k- C1 a  110.00000n    594.2903m  - T2 x9 t8 U5 u. I& l& d# A& C7 }& q4 M
  210.00000n    944.0395m  
* }+ R3 X# F3 R0 g" O3 c% C  310.00000n    960.2334m  
( u& q: R0 I. c  410.00000n    655.0623m  
9 Z3 r0 \' Y4 e) e
& t: E- v) V0 p/ f我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036  而hspice的为0.5942903- }! \; A6 U- t* y* s/ s& w, B% G
                 210n处        sin(2*pi*0.9375e6*210e-9)= 0.9448  而hspice的为0.944039 / j; W9 w) |) O5 r/ H& u
这点的变化好像会影响到fft的波形
' k: d( q. I. \" S) g7 X7 j) C
, c: v9 Y( a! Y1 r& P" r  T4 D[ 本帖最後由 xiaoxianzai 於 2009-4-8 12:05 AM 編輯 ]

本帖子中包含更多資源

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

x
7#
發表於 2009-4-9 17:10:18 | 只看該作者
我認為用MATLAB 產生digital code可能會比較好,因為hspice版本不同跑出來的值也會不同,(MATLAB我不知道),而且看你用MATLAB的sfdr比hspice好,當然用好ㄧ點的程式去測你的電路,這樣debug也比較容易,問題是誰能教我sinwave digital code 怎麼寫(用MATLAB)。
8#
 樓主| 發表於 2009-4-9 19:07:46 | 只看該作者

回復 7# 的帖子

关键的问题是你最后虽然用matlab可以产生理想的digital code  可是 你最后要分析的output还是从hspice仿真抽样出的 不能避免跳过hspice这一步呀
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-12-28 04:44 AM , Processed in 0.166010 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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