Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-4-5 16:25:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
根据公式Fin/Fsample=Nwindows/Nrecord9 t9 T0 ~. a' O" x
我选取
. z+ {0 s, s6 W/ ]+ w8 KNrecord=4096
. u* H6 M  M4 m5 _1 b先取Fin=10MHz Fsample=250MHz# A5 s8 b, E' |. V0 {' e: X
由此得出Nwindow=163.84因为Nwindow一般为奇数和质数
" ^! o" n: N3 N9 F0 K' k+ H4 t: E故这里取Nwindow为163 $ V" Q' ?' N4 t
带入得到Fin=9.94873Mhz
8 J5 M/ }( i; ~4 R在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR
6 [% P- T/ I. x7 R9 M5 c' w+ e0 g/ C+ Q9 P4 G6 l! j
这是一般的SFDR的仿真步骤。( N' [" a) P2 b7 c+ D/ E

) F" ~8 Q) @4 \2 u3 u" _. D我的问题是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR
" y; |& S) O2 S& p, p/ ^5 k; ^于是我仿真了4n*4096(4n是因为Fsample为250Mhz)时间 0 ^) _2 f, [$ _0 R0 t  q
将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问 % g- ~1 ^% n; l( }  j+ }8 x2 A
这个理想的正弦波的SFDR都不怎么好& L- \/ z' M* _: J: W  R$ O9 |
那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?/ t+ }. p. D, X% z, N
是我理解错了吗?
我做fft的时候用的matlab程序大致如下:5 u: O% u" M7 {
将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'
. z. o, H6 |1 z& J9 p$ X9 Bv1 v1 0 sin(0.28 0.28 f1)9 Y  p0 f2 r/ z# R. B9 f; f5 I1 c
.tran 4n 16384n 3n
7 g6 u. l4 B1 ]) G$ s9 _# D.print v(v1)
$ T$ e1 j: d# ]9 S* ?' G* t.end
5 |8 S0 r, \5 F然后把生成的数据v1从list里面取出来存到sin.txt里面' g5 k. X* W) V0 [  b; K6 t
然后打开MATLAB 程序如下
>> d=load('sin.txt');
$ i4 Q4 u$ p6 |) r6 T; f# X>> b=fft(d,4096);# L8 R8 y& s8 T% ~2 S) t% R
>>  c=20*log10(abs(b));1 ^2 }' @1 p! d) H* t* w
i=1:4096;
, K; W  e! g' w1 z' Xplot(i,c)( M4 ?% h5 A: B  [' k6 m- L& z4 l# Z3 j
1 M- q7 M0 }6 w, J( J' I7 A. N' ^8 q
大大请教啦
3#
 樓主| 發表於 2009-4-7 14:20:35 | 只看該作者
感觉问题在这里 $ A) s, e7 {' x& U
我在matlab中编写了段sin函数的抽样曲线: [8 e0 W, E: S( \3 `! m/ t
: W/ F. E" N2 V+ o- i$ G( l; V
比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致
) H2 ~/ \6 N% J( \; O7 ?! F如下所示2 h+ g% }6 d3 f1 T: D
T   MATLAB                         HSPICE
& \: ^4 |  h8 Z2 b; w* a4 w& ^4 N. z1 58.870803651189036          58.8708037e-3
5 r: A- b! s* X' C. Z+ R& `2 603.5559419535714          599.7663787e-3
2 q4 t( Z# i5 ]* e& u3 944.806046466878           934.7331225e-3
& i- C1 L+ l& w  H0 h1 e% N1 k* J4 967.5990923602598          956.1967592e-3 . z: o) d- ?7 m( \
5 664.2524379112818          662.4251941e-3 / y" Y( ^8 ^" f# k# M
6 137.01234168196848         136.5766324e-3
7 b; T% U/ ~; I; @2 L7 -436.40924067334225       -433.0983571e-3
( m9 R, _# O% I; `5 }0 [( W8 -862.734385977792         -861.6494438e-3 + u8 B3 `+ m1 W' D- Y
9 -998.2656101847159        -997.6056075e-3
& S! t: Q1 e9 y/ q10 -797.3206537727073        -797.1222747e-3 6 v" L* p7 P) z- `9 M3 q6 g" d2 L
11 -327.6301795616938        -324.6260505e-3 ( b) c& a6 @2 R& Y! v' ~, u
12 252.4915770151574          251.2462039e-3
2 {  s; |8 J* ?; c- A  q+ J3 ~# W$ Q1 f
从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
4#
發表於 2009-4-7 22:26:08 | 只看該作者
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對# C: D0 f9 i* g7 S
跟MATLAB比較後同樣時間的值應該不會差這麼多才對1 {4 Y2 L; ?2 A8 P$ C
你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的9 |7 x+ a( x& @* t" ^
不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦
, O1 G: m4 z  D8 r$ V- F; @詳細原因可能還要再進一步檢查
5#
 樓主| 發表於 2009-4-7 23:03:29 | 只看該作者
谢谢版主的答复
0 R4 z7 {/ h$ H( W, l# R3 k我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确 : S$ I: r/ e4 @
版主可以把程序放进去跑跑32个点的 也是一样6 v$ I1 i" Q" A$ H/ u! s# l  |7 w

) i- Q7 r; g8 U* H0 ?) Ofin=0.9375meg fsample=10meg
1 d: O3 ?3 n& |. i0 n2 y: D3 @6 [ N=32 n=3
5 z) a# {! I, w+ n9 \) C3 x/ t9 u* x, |( J' N& L

+ h# l  p) v; A5 i1 u.param ff=10meg              
+ ~1 L0 ?% w" K3 y) ]' vv1 v1 0 sin(0 1 0.9375meg )  & j- w* N* V! Y- r8 D! N" ^9 _6 y
.tran 100n 3110n 10n         + j: K+ ?2 N; \$ G2 c
.print v(v1)                 - _* ?. I! C9 ~- y1 z) k7 m
.end
6#
 樓主| 發表於 2009-4-7 23:49:08 | 只看該作者
这是部分输出点  3 x9 w5 D. N( C. A2 _, t0 t9 O
& q8 \4 F5 A: i: E
  time    voltage    " e& P5 k* Y) X- F9 t8 e7 U" U/ \
                    v1     
5 i4 z7 E& `5 `   10.00000n     58.8708m  
/ m, V! j) ~* Z8 q  110.00000n    594.2903m  " G. X! l% H. K  `& b: f
  210.00000n    944.0395m  7 S# A6 A+ Y* M6 D$ [" `  \
  310.00000n    960.2334m  + |9 ~8 [7 W6 z
  410.00000n    655.0623m  
& a, w; m* S$ U6 F4 S9 N
! n: E, K) F8 h* z, n! N我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036  而hspice的为0.59429033 Y- n0 k$ M9 W; x" h
                 210n处        sin(2*pi*0.9375e6*210e-9)= 0.9448  而hspice的为0.944039
% j( o6 V: a: e! o9 {- g这点的变化好像会影响到fft的波形
" J, Y* P+ t* J- _: W, ^( T
: s, y" C! r& N[ 本帖最後由 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 09:07 PM , Processed in 0.167010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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