Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-4-5 16:25:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
根据公式Fin/Fsample=Nwindows/Nrecord2 X, a6 H  ^( P! m3 W0 E% k% x
我选取
5 R7 m0 T, n2 n- X# h# \Nrecord=4096 0 |! f( u/ q" x% \/ b! G
先取Fin=10MHz Fsample=250MHz9 k' l* A% b1 p  y; ~
由此得出Nwindow=163.84因为Nwindow一般为奇数和质数
" x' `5 N4 e$ O故这里取Nwindow为163 " B% H8 A; u1 F( u
带入得到Fin=9.94873Mhz
& x3 X! N" f8 J( s- r在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR" E& S% X, y" m# z5 S+ X4 L

2 G- S# f. j- E% T这是一般的SFDR的仿真步骤。" ]) ?$ s% Y( {3 B! V% S7 V2 Y$ V
/ k+ f/ W) i+ u- C9 B* d+ Q
我的问题是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR
3 ]! p3 f. x& H+ O) a于是我仿真了4n*4096(4n是因为Fsample为250Mhz)时间
0 l9 q  ^( \8 X% }: P- h0 _将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问
$ e0 o1 _! w  v$ S- ?  N这个理想的正弦波的SFDR都不怎么好
, {; B, o- b8 M3 s9 Y那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?
! x' E/ z! U7 d0 r, r是我理解错了吗?
我做fft的时候用的matlab程序大致如下:
1 ?% ^* K* [  Z5 e" ~$ n, L+ 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'- E% K  Y0 |: t$ m. w  }) {
v1 v1 0 sin(0.28 0.28 f1). T! A  O7 G0 U' K/ h$ y
.tran 4n 16384n 3n3 U* ^* b# T/ {0 n" \
.print v(v1); X1 a7 ]& e% _; P6 r: U8 _
.end( n' R/ m# j+ T" L% R- {3 Z9 l
然后把生成的数据v1从list里面取出来存到sin.txt里面
/ a4 R  O7 u* F* Q5 D) \然后打开MATLAB 程序如下
>> d=load('sin.txt');) C# ~, Q' s, `! D, s, q
>> b=fft(d,4096);/ }; D8 L# ]  h8 F; B+ {
>>  c=20*log10(abs(b));& T0 ~' f8 S6 b5 u
i=1:4096;
  K! i% U0 n. C) z1 b& V& Z/ C3 C6 M, f8 _plot(i,c)1 d  U9 p! J6 t: \7 o
$ H% h5 l$ g; O, h+ R! W) z: |
大大请教啦
3#
 樓主| 發表於 2009-4-7 14:20:35 | 只看該作者
感觉问题在这里
! {9 ~2 X$ \6 a) H  G! P' F我在matlab中编写了段sin函数的抽样曲线9 Z! P5 l$ ?" b0 e# R
" u) o$ A3 }5 G5 r! m( ^3 D
比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致
; l7 U2 G4 G; q8 d/ X' O3 y  ^如下所示
4 t% v* v) C6 x$ W5 R% vT   MATLAB                         HSPICE
1 C# i+ q+ ]. U5 c: F1 58.870803651189036          58.8708037e-3 ; Q: p3 V) D' h1 c1 x  m
2 603.5559419535714          599.7663787e-3
( i; i3 j% y( W5 f0 h, s; {3 944.806046466878           934.7331225e-3
  E- U$ `, s. i: _4 v4 967.5990923602598          956.1967592e-3 / @+ J: e6 K! X5 h, L8 p5 c' J
5 664.2524379112818          662.4251941e-3 " Q. {: R( `+ u
6 137.01234168196848         136.5766324e-3 ) V0 h) h( l  F5 x* d
7 -436.40924067334225       -433.0983571e-3
( z& r/ n" k5 m: v, ?8 -862.734385977792         -861.6494438e-3 " W/ |2 c7 ?! ^- U9 V# B
9 -998.2656101847159        -997.6056075e-3 * S0 H* t6 B4 q* q9 n# c
10 -797.3206537727073        -797.1222747e-3
' l7 [- X8 K. j2 Q  W! I5 g. t11 -327.6301795616938        -324.6260505e-3
& D/ r+ s' |7 B2 {* o12 252.4915770151574          251.2462039e-3
9 b& O8 C# Z! I+ i% n* N( t7 {) D2 ]0 |' a5 E4 G
从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
4#
發表於 2009-4-7 22:26:08 | 只看該作者
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對# P' i$ d2 W) q
跟MATLAB比較後同樣時間的值應該不會差這麼多才對
& _/ D& T, w9 U$ o# {- g你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的- `* ^8 L, @+ j. w1 m3 |
不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦
; _1 s8 l& T; y: }3 s詳細原因可能還要再進一步檢查
5#
 樓主| 發表於 2009-4-7 23:03:29 | 只看該作者
谢谢版主的答复
# e5 ?% u+ U' V0 S4 |我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确
! `5 E1 y; ]# j5 U3 X- h0 l8 q  ^7 |版主可以把程序放进去跑跑32个点的 也是一样# ~$ k4 e/ ?/ g% C. N) x

* _, k) G9 V" U1 w# n/ Ufin=0.9375meg fsample=10meg
% s/ m" j8 A3 ^ N=32 n=3
* S* R3 L( F2 I; w( h  {& a
" G( W  b# Y% @, R- B3 Q2 P# N
" {* ~; s; F- S. i.param ff=10meg              / @8 b4 b0 ^7 ~3 |9 ]
v1 v1 0 sin(0 1 0.9375meg )  
. m0 {7 S. c  v+ z0 l* u.tran 100n 3110n 10n         
# N# C: o$ X, N. x* {.print v(v1)                 * [3 m! L6 W' a9 O9 f% B
.end
6#
 樓主| 發表於 2009-4-7 23:49:08 | 只看該作者
这是部分输出点  
+ Q$ J& T- M8 J8 f* A+ \" Z0 f$ t$ |; ^% H& o
  time    voltage    " Z2 E1 Z0 y. A
                    v1     : [5 n0 x2 Z3 I  F' r" m9 w" z
   10.00000n     58.8708m  
+ {; u# r+ n- e  110.00000n    594.2903m  
  L; p3 z/ ?' n6 ]  210.00000n    944.0395m  
6 M8 p0 B' ?0 Y9 R  310.00000n    960.2334m  
( ^% b/ @* F4 Q$ D+ Y% |3 Q1 t! ^0 h% K  410.00000n    655.0623m  
% E5 i2 o/ b: Q" P* Z: k0 N5 B
/ L1 y* K8 C) g/ m我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036  而hspice的为0.59429035 U+ {" d4 Y/ }& h& P
                 210n处        sin(2*pi*0.9375e6*210e-9)= 0.9448  而hspice的为0.944039 $ j5 t6 v! I3 G8 W# X5 @
这点的变化好像会影响到fft的波形
$ R5 j0 v3 X. O% I8 a
$ ^5 t4 @' D9 `" v, E* w[ 本帖最後由 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-9-27 09:26 PM , Processed in 0.174010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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