Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-4-5 16:25:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
根据公式Fin/Fsample=Nwindows/Nrecord
* l, P) s0 W# x# N我选取
' L( ^3 C" E9 V* N( XNrecord=4096
3 r) N# z& @2 H! J先取Fin=10MHz Fsample=250MHz# C% `: ^( [; b) Y$ q- _
由此得出Nwindow=163.84因为Nwindow一般为奇数和质数
& f3 j' T% \/ y3 g  u3 ?故这里取Nwindow为163 , G2 {8 ^/ h" n# f8 u, O. J  O
带入得到Fin=9.94873Mhz
. o+ i% d3 ]6 w6 F% g3 C在做sfdr的时候 先用理想的AD生成Fin的正弦输出数字信号然后输入到你设计的DA中 最后得到结果做FFT 得到频谱可以看出SFDR
' |; x% {5 z$ P* w1 `. N5 F+ P4 B4 y5 E6 T* j# w; R
这是一般的SFDR的仿真步骤。
. ~& x* x9 C" M. Q- ?% g; W, T4 X9 k2 x* q
我的问题是我用HSPICE先生成个频率为Fin=9.94873Mhz的正弦波然后想看看这个理想的正弦波的SFDR
5 {" W: K6 |& N  X+ r  E7 Z于是我仿真了4n*4096(4n是因为Fsample为250Mhz)时间 5 N$ X& z, r, J
将得到后的4096个点做fft 可是波形如图不是很好 那么我想问问
. T1 a" w. G, [# d这个理想的正弦波的SFDR都不怎么好
; |  m& C" ^  `" R8 B那么把这个理想的正弦波经过AD再输入到DA中得到的正弦波他的SFDR 怎么会好呢?
- ]- [0 I* V7 K7 g2 e: }是我理解错了吗?
我做fft的时候用的matlab程序大致如下:5 I+ w9 K$ P9 l! v) ]
将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'6 r- p- f* \1 E. |
v1 v1 0 sin(0.28 0.28 f1)
  D( A# G- ], n  Z.tran 4n 16384n 3n8 u' r  m# L$ I: E: {) O
.print v(v1)0 ]. B; U6 ?! r8 Y! d  M
.end
0 [/ s5 g9 V) z: u: `5 I2 w然后把生成的数据v1从list里面取出来存到sin.txt里面
  e. \! O$ L* b6 G4 H然后打开MATLAB 程序如下
>> d=load('sin.txt');
( z* V6 m( B1 R>> b=fft(d,4096);4 t+ N# h( j0 @' @9 Q2 G
>>  c=20*log10(abs(b));
) t" i7 r6 G1 R6 M* k: G; _i=1:4096;
0 C/ v0 j* S1 G+ \0 m2 ~plot(i,c)' q1 k( D, x6 O7 b, B

. c" Q  K0 H3 I& w8 F' x大大请教啦
3#
 樓主| 發表於 2009-4-7 14:20:35 | 只看該作者
感觉问题在这里 * ]; u0 T; T- R  O) ^3 U4 f
我在matlab中编写了段sin函数的抽样曲线
8 b9 p3 @6 O2 S( G  y" D5 x1 R' W$ F% j( E0 ]. [& @% g
比如说看sin(4n)的点 然后在hspice中看相应的print出来的4n秒处的点结果发现不一致 5 n- X+ N' i8 ]" z
如下所示
" |5 |% P# d6 P0 ?4 eT   MATLAB                         HSPICE+ c' A  H! f+ w  u% V
1 58.870803651189036          58.8708037e-3
: i7 r; A  `! A1 v2 603.5559419535714          599.7663787e-3
( @+ N0 E: n1 `; W& d7 u3 944.806046466878           934.7331225e-3 4 T2 p/ S' [! c
4 967.5990923602598          956.1967592e-3
% n' |0 Q: }) J7 d; `. Z/ f5 664.2524379112818          662.4251941e-3
! Z) l6 ], V8 F: x9 D6 137.01234168196848         136.5766324e-3 8 M4 Y/ d: f$ @3 F
7 -436.40924067334225       -433.0983571e-3 8 D% \2 S$ {2 @4 g" X* n( o8 Q
8 -862.734385977792         -861.6494438e-3 1 H9 V0 z4 b* k* K0 m& c: {6 K
9 -998.2656101847159        -997.6056075e-3
1 R* S) ?4 s, b* D( E7 q10 -797.3206537727073        -797.1222747e-3
" V" C# o$ _8 T( S* e11 -327.6301795616938        -324.6260505e-3
% [  Y7 o5 I0 s7 D& o: y12 252.4915770151574          251.2462039e-3
+ c! w7 Q, s. J6 K9 R3 l" n  J3 b1 k; ~4 p" V7 j4 w5 n
从表中可以看出hspice的同样的点处和matlab的有差别因此造成了频谱泄露 不过不知道怎么在hspice中修改才能精度好点
4#
發表於 2009-4-7 22:26:08 | 只看該作者
感覺你的步驟跟觀念應該都沒錯 理論上用理想的正弦波得到的頻譜應該會很漂亮才對
, m: R5 b* a" J& i跟MATLAB比較後同樣時間的值應該不會差這麼多才對
- D5 I  S% K# f6 c' z你要不要檢查一下你Hspice產生sin的頻率和理論算出來的頻率對不對呀 我看你Hspice是用參數去算的& Z# I; X2 Z3 P  e1 s5 n( S: W1 D
不知道這樣會不會有精度上的問題 當然這只是我初步的猜測啦
% W6 U2 r, [9 \6 `5 q: m( [- ?: C詳細原因可能還要再進一步檢查
5#
 樓主| 發表於 2009-4-7 23:03:29 | 只看該作者
谢谢版主的答复
+ R& R9 z7 F$ z+ v# L我试验了用频率取代刚才那些表达式 可是效果还是那样不大理想 于是我现在都开始怀疑hspice怎么出来的那么不准确
# K! V& k* z$ ^1 i' ^版主可以把程序放进去跑跑32个点的 也是一样
3 o9 Y& c1 O) Z
6 |% c0 q) o/ C  n* X9 o5 Tfin=0.9375meg fsample=10meg
. U; K$ v3 J# F) d N=32 n=3
* L6 Y4 P. R7 p6 t, U* j0 Z" s5 g- r$ _+ a1 N3 S# g+ J$ f
  ]# F( W. D9 V! G  ]4 D
.param ff=10meg              6 P1 j  U" b  ]1 H
v1 v1 0 sin(0 1 0.9375meg )  0 h6 G; ]* u0 t( V1 R2 g
.tran 100n 3110n 10n         
) ^' I2 \* [2 `4 l% P- T. E.print v(v1)                 
* G: H$ D2 ^* f, y.end
6#
 樓主| 發表於 2009-4-7 23:49:08 | 只看該作者
这是部分输出点  7 k+ V1 h9 Q7 x+ Y* {
. Q- {% `4 J' k  D8 f
  time    voltage    8 H( @; G6 a5 u8 c0 P
                    v1     $ H+ `( u1 K2 N
   10.00000n     58.8708m  2 [7 |( q7 I) P3 `2 h
  110.00000n    594.2903m  
" b2 a  s7 s) x/ u& A4 u  210.00000n    944.0395m  5 d* o% d, H" V
  310.00000n    960.2334m  
, F& |3 m* X. `  410.00000n    655.0623m  
# O' X: i+ s) k  t0 u
! R, [' Y' P$ G3 H. F我利用公式来计算 110n处的点 为 sin(2*pi*0.9375e6*110e-9)=0.6036  而hspice的为0.59429034 d1 f4 e  Z& |# r
                 210n处        sin(2*pi*0.9375e6*210e-9)= 0.9448  而hspice的为0.944039
3 i5 J  k! I2 K* z这点的变化好像会影响到fft的波形; r6 c( ~3 U8 j3 q+ y+ R! _# Q" t
) B% `3 H  |/ |* K
[ 本帖最後由 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 07:11 PM , Processed in 0.182010 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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