Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-4-5 16:25:51 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
根据公式Fin/Fsample=Nwindows/Nrecord
+ x9 d3 @) c+ l2 c我选取; f( v3 X. H0 Z
Nrecord=4096
7 B' w/ g2 `7 n7 a* U先取Fin=10MHz Fsample=250MHz
5 i# T! ?2 z% y' M! U1 B0 D由此得出Nwindow=163.84因为Nwindow一般为奇数和质数8 b% D# \# l! l, }6 g9 @4 Y/ p+ w
故这里取Nwindow为163 ! f9 s3 M, I* U
带入得到Fin=9.94873Mhz
3 x$ a! J' a7 c9 F在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR3 X4 i9 ~$ `7 [7 k) [

2 \( X5 T! x; n! w: A这是一般的SFDR的仿真步骤。
4 J( I3 x; h/ J0 n( |: K( F+ {- \/ L# x* j% r
我的问题是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR + p5 ]  X& T6 W+ R/ Y& h* b: k' m- c- y
于是我仿真了4n*4096(4n是因为Fsample为250Mhz)时间 2 e" f$ N# p$ l- O6 w! C
将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问 , c0 Q; ^& f3 O2 y& F
这个理想的正弦波的SFDR都不怎么好( P) P# {3 v. p; j
那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?
6 V; j! r6 S2 ]; z- c8 X5 {1 [是我理解错了吗?
我做fft的时候用的matlab程序大致如下:
, H, t2 p0 Y% D# l7 H9 C将4096个点导入到matlab中的a中 然后b=fft(a,4096)然后db=20*log10(abs(b)) plot(db)

本帖子中包含更多資源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
8#
 樓主| 發表於 2009-4-9 19:07:46 | 只看該作者

回復 7# 的帖子

关键的问题是你最后虽然用matlab可以产生理想的digital code  可是 你最后要分析的output还是从hspice仿真抽样出的 不能避免跳过hspice这一步呀
7#
發表於 2009-4-9 17:10:18 | 只看該作者
我認為用MATLAB 產生digital code可能會比較好,因為hspice版本不同跑出來的值也會不同,(MATLAB我不知道),而且看你用MATLAB的sfdr比hspice好,當然用好ㄧ點的程式去測你的電路,這樣debug也比較容易,問題是誰能教我sinwave digital code 怎麼寫(用MATLAB)。
6#
 樓主| 發表於 2009-4-7 23:49:08 | 只看該作者
这是部分输出点  
$ g/ _% b) }& }# q% l, V- A% x3 w/ U) d* Z! @1 E, _1 v! H9 D
  time    voltage    3 j: w+ Y" w3 R. `
                    v1     
5 m1 V0 S+ G$ i/ O7 n# Q, z   10.00000n     58.8708m  . }$ X3 Q6 _, M5 S  }  e0 a
  110.00000n    594.2903m  , ^+ {7 \5 ]% U& [6 y2 M9 v
  210.00000n    944.0395m  8 z7 e/ Y/ }( B6 P  ~+ K
  310.00000n    960.2334m  
$ B8 f+ F) y1 T  410.00000n    655.0623m  3 p0 I( c1 D" `9 T
9 i$ m: ~# `" G8 m+ c& c
我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036  而hspice的为0.5942903
& k3 y; [7 B( B+ `0 ?7 a                 210n处        sin(2*pi*0.9375e6*210e-9)= 0.9448  而hspice的为0.944039 . a# w8 P- v, L7 `. f; R6 t; l
这点的变化好像会影响到fft的波形
, t' h2 {1 ?* S3 I, @; F& N/ a& h$ L9 i6 q) M  d5 c$ T/ |$ M/ ~) c) q
[ 本帖最後由 xiaoxianzai 於 2009-4-8 12:05 AM 編輯 ]

本帖子中包含更多資源

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

x
5#
 樓主| 發表於 2009-4-7 23:03:29 | 只看該作者
谢谢版主的答复
8 Q  h- n, j" Q! H+ o; g2 J我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确 + s& x6 T1 n) g/ p
版主可以把程序放进去跑跑32个点的 也是一样  f$ u  G, z; A: c4 d* L1 U6 _
( H* I8 W$ y4 t2 p7 F' ]3 |
fin=0.9375meg fsample=10meg
" a  ]* Q- O9 M4 J0 c N=32 n=3* E+ Z+ k; \# m6 M
8 ?9 r8 C+ B, Y
& e. p* U) B6 _$ b: ^( o" l) m
.param ff=10meg              
% g. y0 Y' C2 N8 o) ~v1 v1 0 sin(0 1 0.9375meg )  
3 }- r9 i! r' V2 t8 j) E.tran 100n 3110n 10n         ! s9 W: ~, I' l9 i
.print v(v1)                 
! M+ G. t+ h# x" }  j" G. r0 C0 U.end
4#
發表於 2009-4-7 22:26:08 | 只看該作者
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對8 f' o% g- r* ]9 Z& Q
跟MATLAB比較後同樣時間的值應該不會差這麼多才對
8 O9 _/ h5 ~6 J3 z& |你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的: k, u- u6 o/ j( g1 `
不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦# P$ z& V& k6 e& Q. f
詳細原因可能還要再進一步檢查
3#
 樓主| 發表於 2009-4-7 14:20:35 | 只看該作者
感觉问题在这里
" @% q9 ]$ H  r, ~0 f我在matlab中编写了段sin函数的抽样曲线- z( t5 w1 p. w1 S% v$ b
  c" a) h5 y+ a! x( e6 `
比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致 9 U* r2 s6 Y* c; `
如下所示8 }+ a/ F( h" {: u3 l9 c
T   MATLAB                         HSPICE
/ n; M1 G* q1 Z( Y: {$ m1 T1 58.870803651189036          58.8708037e-3 2 `! H% `2 T# b" M$ N) f
2 603.5559419535714          599.7663787e-3
& t6 t4 {" U* ~+ X' T& k3 944.806046466878           934.7331225e-3
; u- `2 M9 w+ i# ^4 967.5990923602598          956.1967592e-3
7 u, f3 j1 @2 F, U8 s9 J5 664.2524379112818          662.4251941e-3
$ A. ]+ J7 _9 i/ @6 137.01234168196848         136.5766324e-3
% B, j$ B; N2 H' P; K7 -436.40924067334225       -433.0983571e-3 + Y' l: y  z- A' V
8 -862.734385977792         -861.6494438e-3 # S. u) J) g- A! a" q" a. |
9 -998.2656101847159        -997.6056075e-3 ' P3 o2 C% x% V3 b
10 -797.3206537727073        -797.1222747e-3
+ O( E8 }: r3 C. K9 P7 t' K11 -327.6301795616938        -324.6260505e-3 # |$ U6 k7 X: f3 e  Z; k
12 252.4915770151574          251.2462039e-3
- L% l* y1 E" p: Z/ D1 C/ W
1 `; E6 l* u: o: q, J# q从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
2#
 樓主| 發表於 2009-4-6 21:45:28 | 只看該作者
这是HSPICE语句.param ff=250meg  f1='163*ff/4096'4 |8 ?3 A5 ^6 S! p% W
v1 v1 0 sin(0.28 0.28 f1)
* W6 o. N3 m2 f8 _.tran 4n 16384n 3n
! d" W, C3 e3 R9 @( s" }.print v(v1)$ F4 E+ i4 V& W# N  H$ ~8 w
.end& a# J* O# V/ r  y2 E  x6 R
然后把生成的数据v1从list里面取出来存到sin.txt里面
; I2 E/ O) }2 }3 T6 {# H然后打开MATLAB 程序如下
>> d=load('sin.txt');
1 J/ e% J# Q* K>> b=fft(d,4096);
. e' U' r5 P8 Y# s0 J>>  c=20*log10(abs(b));4 D2 F! L' O( [% [' B
i=1:4096;
2 I7 N: z9 j3 X+ @- jplot(i,c)+ {  j, I  h, [! |
3 h- ?) X0 s7 R
大大请教啦
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-16 02:06 AM , Processed in 0.164009 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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