Chip123 科技應用創新平台
標題:
SFDR的仿真遇到的问题 请教
[打印本頁]
作者:
xiaoxianzai
時間:
2009-4-5 04:25 PM
標題:
SFDR的仿真遇到的问题 请教
根据公式
Fin/Fsample=Nwindows/Nrecord
' d$ C% P/ A( r9 P3 `9 Z
我选取
3 e; V% B+ L5 }1 T9 x4 `
Nrecord=4096
' d- N( y- V6 \9 v
先取Fin=10MHz Fsample=250MHz
Q" g; f2 v& M5 M# Y* d
由此得出
Nwindow=163.84
因为Nwindow一般为奇数和质数
j+ r5 K% [( w( v1 g. d! }1 J3 h
故这里取Nwindow为163
9 d7 v/ }: t$ }7 h* J7 ^
带入得到
Fin=9.94873Mhz
' X' i; I2 ?8 j _6 U
在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR
0 T; T* }! y! X( G/ \7 ?! F+ N
; C# L$ x" j3 g7 \ Y9 H0 v
这是一般的SFDR的仿真步骤。
4 N" ?" N6 j5 W& R- _- @( j
! X C) [ u: \. R r g4 ]4 f
我的问题
是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR
9 V0 r) L: ]0 A% h$ g3 }9 X
于是我仿真了
4n*4096
(4n是因为Fsample为250Mhz)时间
& K8 e. n( r) L& V x
将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问
; |& R! q" r! C p+ W8 z3 f. o. [
这个理想的正弦波的SFDR都不怎么好
; G y7 z6 v7 ?- Y8 s
那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?
0 c, @+ a/ y! N2 d. w
是我理解错了吗?
我做fft的时候用的matlab程序大致如下:
: d0 _9 }7 b( f) K: F$ z
将4096个点导入到matlab中的a中 然后b=fft(a,4096)然后db=20*log10(abs(b)) plot(db)
作者:
xiaoxianzai
時間:
2009-4-6 09:45 PM
这是HSPICE语句
.param ff=250meg f1='163*ff/4096'
) I% ]( q1 E2 {' B! r9 L
v1 v1 0 sin(0.28 0.28 f1)
: r+ N) y7 |) i/ ^; E8 E
.tran 4n 16384n 3n
1 }0 [( P9 u/ S+ A: E
.print v(v1)
( d2 M$ e+ H _4 s3 K
.end
( u; V3 M4 n$ p5 J( \# Y% O8 e
然后把生成的数据v1从list里面取出来存到sin.txt里面
' C9 H: Y6 Z8 [
然后打开MATLAB 程序如下
>> d=load('sin.txt');
% ], W$ I+ v3 U- q, u
>> b=fft(d,4096);
- e, W2 @ `/ c" s
>> c=20*log10(abs(b));
/ v- \6 k" Y! J( T: U+ e
i=1:4096;
: N% r% v; N! I. L$ \
plot(i,c)
. Q3 ^9 w* P3 f" {0 i) [3 N9 M' Q
. z) W4 w# I8 I% W% D
大大请教啦
作者:
xiaoxianzai
時間:
2009-4-7 02:20 PM
感觉问题在这里
/ O$ a2 |8 ~ y- x
我在matlab中编写了段sin函数的抽样曲线
% v7 l7 s" L! g5 P5 Q2 W& M
7 G% r9 e$ ~# c# u
比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致
. C/ B c/ E6 u7 Q+ @/ X; g
如下所示
& H% p4 ]* p$ R% y2 |
T MATLAB HSPICE
! p" u0 a+ V- V3 k) f
1 58.870803651189036 58.8708037e-3
6 O2 ^6 _9 w+ h8 t7 _0 u, r5 w& J
2 603.5559419535714 599.7663787e-3
* V M* f6 V4 Q
3 944.806046466878 934.7331225e-3
* ~7 T/ Q0 z/ b0 w+ d$ C% Q3 [
4 967.5990923602598 956.1967592e-3
3 F) u8 u- \# ` k2 V9 o( W
5 664.2524379112818 662.4251941e-3
( o W& M- q4 p0 B0 l; { y5 q
6 137.01234168196848 136.5766324e-3
4 k% P) M% m/ @0 c( A3 ^$ @9 P
7 -436.40924067334225 -433.0983571e-3
6 w$ @0 Z0 c! s+ W
8 -862.734385977792 -861.6494438e-3
& ]: r# S2 @( ^4 p
9 -998.2656101847159 -997.6056075e-3
K# e% B) Z% _9 A7 O+ {
10 -797.3206537727073 -797.1222747e-3
8 ]8 o1 f6 |7 ?$ B' A" a$ W
11 -327.6301795616938 -324.6260505e-3
' V- p# [6 \2 |. O# S
12 252.4915770151574 251.2462039e-3
4 y0 B4 I: R* H) T" G$ C3 n& X- p
, \- M/ A' w" v/ ~; z$ ?
从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
作者:
monkeybad
時間:
2009-4-7 10:26 PM
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對
( g# R( z1 T) L. l0 U
跟MATLAB比較後同樣時間的值應該不會差這麼多才對
# I6 y1 K8 S/ ?8 p
你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的
3 H. D) m2 j+ W3 |' q5 e
不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦
; X3 F; z6 {% t" z3 k' B/ Z3 K; \
詳細原因可能還要再進一步檢查
作者:
xiaoxianzai
時間:
2009-4-7 11:03 PM
谢谢版主的答复
6 I- X. M4 E& e9 m1 o! Y
我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确
8 W4 h+ U0 N- p2 F i3 ^5 s+ D
版主可以把程序放进去跑跑32个点的 也是一样
( c8 U% t; \' K, n% b1 ?
2 L$ K' p; Y X. q2 P
fin=0.9375meg fsample=10meg
5 |* A1 w& U7 U3 F
N=32 n=3
. d' J; C+ m9 n5 t+ f& S' B
& S% S% o: H* a- L% g
4 c2 T) b: m8 Q: |9 t% {" l6 c6 p% f+ n# k
.param ff=10meg
) A+ U7 b3 F7 F! h) i3 X( }
v1 v1 0 sin(0 1 0.9375meg )
% v% h1 o j/ b' k
.tran 100n 3110n 10n
4 |) s" \7 _# }. i7 e: ~( q
.print v(v1)
# @5 y" Q5 r6 S) {. D3 M
.end
作者:
xiaoxianzai
時間:
2009-4-7 11:49 PM
这是部分输出点
. ^3 I& I# P- N
5 {* X; X5 G, H( J [% f1 r# e! |
time voltage
) u* x) g+ G6 p. z* Z
v1
( I) Z1 l8 g/ M9 \. M/ U% \
10.00000n 58.8708m
0 l5 F/ D9 ~* Y9 `" c
110.00000n 594.2903m
$ s4 d/ A3 Y e# u3 \5 H
210.00000n 944.0395m
0 z& h2 ]9 G' z* k% w7 w6 y3 _) a
310.00000n 960.2334m
) ~ O5 g* e; x# z: D) }% J
410.00000n 655.0623m
y& t6 F1 u0 t; _% M% Y3 J
2 ~1 R9 F1 u8 ~) T& I, @9 k* n
我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036 而hspice的为0.5942903
; c7 X* R, z: \, O: _1 e. G
210n处 sin(2*pi*0.9375e6*210e-9)= 0.9448 而hspice的为0.944039
' z9 ^. G: S7 X: T
这点的变化好像会影响到fft的波形
6 B8 O H0 D, j' |1 q* C* w( o9 n
6 H( F( x8 K7 v0 |" ^
[
本帖最後由 xiaoxianzai 於 2009-4-8 12:05 AM 編輯
]
作者:
qw101
時間:
2009-4-9 05:10 PM
我認為用MATLAB 產生digital code可能會比較好,因為hspice版本不同跑出來的值也會不同,(MATLAB我不知道),而且看你用MATLAB的sfdr比hspice好,當然用好ㄧ點的程式去測你的電路,這樣debug也比較容易,問題是誰能教我sinwave digital code 怎麼寫(用MATLAB)。
作者:
xiaoxianzai
時間:
2009-4-9 07:07 PM
標題:
回復 7# 的帖子
关键的问题是你最后虽然用matlab可以产生理想的digital code 可是 你最后要分析的output还是从hspice仿真抽样出的 不能避免跳过hspice这一步呀
歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/)
Powered by Discuz! X3.2