Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-4-5 16:25:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
根据公式Fin/Fsample=Nwindows/Nrecord0 u2 i* D, e0 t$ I7 }! h
我选取
+ n0 c: y+ @7 g2 U% \! I0 y& aNrecord=4096
( U7 w! q1 z- u: c& b) P$ s; }先取Fin=10MHz Fsample=250MHz2 Q3 D3 O0 T- q: Y4 Q
由此得出Nwindow=163.84因为Nwindow一般为奇数和质数" X+ v- ]; y/ P( O( y% j7 \, y# S
故这里取Nwindow为163
( V& L" u/ ?: h" E! D2 P% T带入得到Fin=9.94873Mhz
. o. p1 o! I9 d- M4 l. k8 j在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR3 i# r, M& V% u

; M' t" u3 {5 [这是一般的SFDR的仿真步骤。
% Z9 ?) c& L9 B: ?# T( Y# e% t* l5 l4 p; g( J
我的问题是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR
! i0 D" `, p2 K$ t于是我仿真了4n*4096(4n是因为Fsample为250Mhz)时间   q; e9 ]1 t) m% b/ x
将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问 * W9 N- l; A& c% i
这个理想的正弦波的SFDR都不怎么好/ L$ P+ |  Q  K4 L
那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?7 _) ^( r) K8 X' h  a
是我理解错了吗?
我做fft的时候用的matlab程序大致如下:
0 T) g9 F1 s" h5 j+ {将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'
( f8 i5 z! n4 N* {v1 v1 0 sin(0.28 0.28 f1)
; }3 I, @* Q1 q/ N4 @6 o/ s.tran 4n 16384n 3n3 L  j* o% {' ]7 [9 B
.print v(v1)1 I3 D) }2 ]3 g" a# J3 \+ ~& O
.end
8 N1 x  b6 l1 t, N2 ^8 f然后把生成的数据v1从list里面取出来存到sin.txt里面4 w! X8 k( u' n+ @
然后打开MATLAB 程序如下
>> d=load('sin.txt');3 K- a- g# |. N4 _" c% Q
>> b=fft(d,4096);
0 I, n3 `2 M( v; s6 ~: G- n5 z>>  c=20*log10(abs(b));
+ ?) c% o5 ~9 H! ki=1:4096;4 E* F+ w5 G1 }0 L8 v$ s- \
plot(i,c)5 B  l) o5 z& P4 _0 |; {
. E  c8 s# `# w
大大请教啦
3#
 樓主| 發表於 2009-4-7 14:20:35 | 只看該作者
感觉问题在这里 * K, @9 G& ?2 S. g
我在matlab中编写了段sin函数的抽样曲线; _- b6 _# f9 Y- _

! g8 }1 c, s' x" Y$ }比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致 1 u% G/ x. N4 {+ b
如下所示3 X' i0 n6 Y' S8 f
T   MATLAB                         HSPICE" J9 I6 _, o5 t: [% p
1 58.870803651189036          58.8708037e-3   V/ B8 v- u6 {+ o# s8 e  B: k
2 603.5559419535714          599.7663787e-3 ( p" ^" P. y2 c1 L
3 944.806046466878           934.7331225e-3
7 B* w5 J- q$ Y: k0 W4 967.5990923602598          956.1967592e-3
+ ?: f1 |" \/ T5 664.2524379112818          662.4251941e-3
6 W1 q$ B! h7 h5 k6 137.01234168196848         136.5766324e-3
- L- \# g7 X+ t5 L7 -436.40924067334225       -433.0983571e-3 # `, Z/ Q2 m6 x2 c4 B! H  Q" O
8 -862.734385977792         -861.6494438e-3 ( p6 S4 ?/ K8 t) `$ V! _) t( T
9 -998.2656101847159        -997.6056075e-3 % D6 f7 M$ l$ P: X, w0 u
10 -797.3206537727073        -797.1222747e-3
; ^& k% M2 x! x1 C8 `11 -327.6301795616938        -324.6260505e-3
7 x& u8 r: T5 {% u' g+ `12 252.4915770151574          251.2462039e-3 + Q4 x* ?) u$ u4 [3 z# J
( e5 _2 r8 m2 D  |, W+ n0 ]$ L3 z
从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
4#
發表於 2009-4-7 22:26:08 | 只看該作者
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對
% s; H! v# v0 l9 x. I6 |/ O跟MATLAB比較後同樣時間的值應該不會差這麼多才對
2 t: ^9 M" G! s( s, T* r( f你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的
3 o2 v9 j, T2 R不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦7 ^4 P0 z8 W  \# P) n4 @, y9 z
詳細原因可能還要再進一步檢查
5#
 樓主| 發表於 2009-4-7 23:03:29 | 只看該作者
谢谢版主的答复" ^' x  a) z! U7 k# J$ t
我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确
5 ]7 Z: j2 x2 B9 I& T+ f: N* V4 [版主可以把程序放进去跑跑32个点的 也是一样5 v$ \- A( a6 J% ?4 j6 g* c' C0 O

) U. i) b. {, |  |- mfin=0.9375meg fsample=10meg
) U! e9 }/ N' n N=32 n=3
/ F; o" ~7 X) `! u; x  t& p
1 g0 p$ ^& b) _
& H; V/ c- c( o% e6 n/ r3 E.param ff=10meg              0 O: k3 c; x! K" _# |( n; R
v1 v1 0 sin(0 1 0.9375meg )  
; u* d' W& n# ~6 y( B/ z.tran 100n 3110n 10n         7 z/ j% k7 ?/ `  S
.print v(v1)                 ( h1 W" o6 r) F7 G3 L
.end
6#
 樓主| 發表於 2009-4-7 23:49:08 | 只看該作者
这是部分输出点  
$ G- w. n2 B9 J: }4 |1 n0 m# R) O; d+ M8 c+ e  s
  time    voltage   
6 M: [$ B% ]8 F; z. w5 D                    v1     1 T* ?) i1 t/ c$ f! p5 p( E
   10.00000n     58.8708m  
2 Q9 y# ]  n& D  110.00000n    594.2903m  5 Y; b% F# L8 L
  210.00000n    944.0395m  ! s( P7 K9 Z% R/ ~! g! R
  310.00000n    960.2334m  
# ]3 C* Q0 H. K' u9 D# t5 e  410.00000n    655.0623m  & Q6 r) `: [1 A$ }: b# Q/ E5 }/ w
8 h+ X7 J$ p5 D+ _6 F
我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036  而hspice的为0.5942903
7 x9 j6 M+ [5 j" N3 L, ~- D                 210n处        sin(2*pi*0.9375e6*210e-9)= 0.9448  而hspice的为0.944039 8 x; |, g, k% ]- D: L8 r; O! h' X
这点的变化好像会影响到fft的波形
' P: S, J7 V0 C! Z8 P) `* a7 a, n; D. d7 F. @
[ 本帖最後由 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-11-16 04:36 AM , Processed in 0.167010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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