Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-4-5 16:25:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
根据公式Fin/Fsample=Nwindows/Nrecord
- ^8 J$ w/ s5 \' r我选取
6 i! H& T* Y3 F3 JNrecord=4096
7 X7 ?% C" l+ p' Y) a5 w- h; G. W先取Fin=10MHz Fsample=250MHz3 @  Z1 [! v9 m8 F1 a. r
由此得出Nwindow=163.84因为Nwindow一般为奇数和质数
. J* M6 _! |) U故这里取Nwindow为163 * @+ d! s+ N: z/ u
带入得到Fin=9.94873Mhz
5 E4 n: G. B' _6 K1 z1 C" o/ e1 z在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR
: z0 o% a5 }4 f7 U
  ?# S2 B( F; r2 `! D4 d0 j这是一般的SFDR的仿真步骤。
7 i! p& Y/ W8 ]$ R: A3 D4 v1 q# H1 m; M+ Y8 N8 n% B
我的问题是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR
$ q5 j1 }' a1 `4 R; k于是我仿真了4n*4096(4n是因为Fsample为250Mhz)时间 / h8 Y" u6 y- h: a& A8 i/ X- ^
将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问
% Q# Z& W, q) B' Z这个理想的正弦波的SFDR都不怎么好8 o4 _" g# W# o+ x9 a
那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?
! _2 [2 B  _- I& g+ b是我理解错了吗?
我做fft的时候用的matlab程序大致如下:
, F7 a6 w1 M& v7 a+ o1 V( Q1 O' M将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'
& F) Z* y  v# e' i& h/ Ev1 v1 0 sin(0.28 0.28 f1)7 s' J- ^2 c5 g
.tran 4n 16384n 3n
; Q" K* e+ l+ U.print v(v1)
" E" _2 t5 l9 r' y  V! }.end! W2 G0 A* l" R% z# y; A
然后把生成的数据v1从list里面取出来存到sin.txt里面8 a8 h; O$ Z9 K, Q) G, B( M
然后打开MATLAB 程序如下
>> d=load('sin.txt');
/ G- V" Y) d9 @$ ?4 l& ?% X>> b=fft(d,4096);
/ X: g6 j6 D/ f8 P% f4 ?( w/ \>>  c=20*log10(abs(b));: |: C4 H* A+ a' A8 E
i=1:4096;
& p( Q) }0 g& z$ Y8 t0 jplot(i,c); x- V% o: q& l' k# `( N8 w" ?4 V

# k; K) n1 g: A/ k; H大大请教啦
3#
 樓主| 發表於 2009-4-7 14:20:35 | 只看該作者
感觉问题在这里
! |6 e- {4 B& T我在matlab中编写了段sin函数的抽样曲线
7 d8 [( i+ i6 g; ~: V; q, s7 N& b& _, l
比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致
/ H' J0 }! n" R4 Q! q$ ^! g如下所示2 b$ a( M! Y* ^  D* p2 C) [1 z
T   MATLAB                         HSPICE
) B% t, D! {4 G9 \- ]6 w+ Q0 D1 58.870803651189036          58.8708037e-3 6 v. s0 d: a0 ~9 ]
2 603.5559419535714          599.7663787e-3
# v* V3 |2 y5 e! b3 944.806046466878           934.7331225e-3 5 R0 x& k2 A; Y5 n8 h5 R# g
4 967.5990923602598          956.1967592e-3
# `! s% T( ^& U: d$ [5 664.2524379112818          662.4251941e-3
, a8 u4 R: l5 I" r: ~6 137.01234168196848         136.5766324e-3 * p  A0 o9 Z1 k8 R
7 -436.40924067334225       -433.0983571e-3 / B: }- i$ D. s9 F$ G
8 -862.734385977792         -861.6494438e-3   [( m3 @" S3 c+ `' U% F; u# F1 B
9 -998.2656101847159        -997.6056075e-3
, c0 C  i2 ^& V5 g; E* i10 -797.3206537727073        -797.1222747e-3 ; n! R' @1 y! }& t& H
11 -327.6301795616938        -324.6260505e-3 6 w+ M: _5 q/ p+ `# `* r
12 252.4915770151574          251.2462039e-3
* S3 G0 h* r- I
( z# ?. d* R) `从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
4#
發表於 2009-4-7 22:26:08 | 只看該作者
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對' R. i: V( C, a/ i2 t$ `6 \6 ~% b
跟MATLAB比較後同樣時間的值應該不會差這麼多才對
- o" I+ E/ N9 _2 v6 K4 z你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的2 E9 ^% ^0 w/ g- G7 S& M: b9 H
不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦
0 u  `' f" Y' F, ?詳細原因可能還要再進一步檢查
5#
 樓主| 發表於 2009-4-7 23:03:29 | 只看該作者
谢谢版主的答复
/ z6 a, b2 q3 _; h1 Y我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确 4 T" U* P1 U" d2 A
版主可以把程序放进去跑跑32个点的 也是一样
+ v0 m' `9 T+ u- k
/ c/ W- c% b0 z5 Mfin=0.9375meg fsample=10meg
" \2 i# g6 D" a& X7 M4 Z& f& e N=32 n=3, }4 C, b2 k! G, E1 W9 d, X- S- Q( t# v6 Y

5 X8 }9 e/ T+ |& c; r) z
4 F8 v0 }7 L5 c" [4 i6 K.param ff=10meg              1 q9 }% x# N1 A; `  T
v1 v1 0 sin(0 1 0.9375meg )  . ~+ D! X" k/ x. C% w' [3 U, o
.tran 100n 3110n 10n         
1 L$ Y7 V# t1 k.print v(v1)                 
( m/ w$ k- b6 M. [  k.end
6#
 樓主| 發表於 2009-4-7 23:49:08 | 只看該作者
这是部分输出点  , e( z/ W+ O; k1 l4 K! w0 t  N
. S& a% h0 c8 u. b7 Q% v
  time    voltage   
' ?( h% G' C* x0 B! B6 T6 H) F9 f                    v1     
% p  g; u$ D4 n2 g   10.00000n     58.8708m  7 x% ?8 a# K5 i& R
  110.00000n    594.2903m  
  P$ e# m! G& j4 }4 `/ x6 ~& M0 _  210.00000n    944.0395m  
) L( _! g8 J5 `. f1 f( N& b  310.00000n    960.2334m  ) s. a8 j, H6 G6 O$ X
  410.00000n    655.0623m  & R) F4 {: q4 k! i# J- i7 i8 r
" A4 B, J9 d6 \( H) g! T$ w
我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036  而hspice的为0.5942903( c: `  o3 Z4 Y" k* z% Y, J% z; Y( e
                 210n处        sin(2*pi*0.9375e6*210e-9)= 0.9448  而hspice的为0.944039
4 a3 G6 u+ A" o这点的变化好像会影响到fft的波形" o! N( M9 R+ c# k1 M

  G! W5 ?3 s7 {# {4 A9 @3 |/ i[ 本帖最後由 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-6-7 05:22 PM , Processed in 0.150519 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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