找回密码
 注册
关于网站域名变更的通知
查看: 4011|回复: 8
打印 上一主题 下一主题

[仿真讨论] 请教关于MATLAB读入外部数据进行眼图分析的过程的问题

[复制链接]
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2012-7-4 18:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    请教关于MATLAB读入外部数据进行眼图分析的过程的问题* T/ y3 v7 e) n
    * }. y; y) A( Z5 p9 p
    使用的是MATLAB2012A的环境
    / r3 Y& h& k- N5 a% O% o: K! Z
    ' L1 v$ M0 U4 K* l$ L0 L1 t+ N$ ?+ y  o
    现在有2组数据,clk与data
    + h) Q& O6 E! i( V* m3 `+ _* w7 ?时钟的频率是400MHz(周期是5ns,脉宽是2.5ns),取样频率5ps,此时采集时间为500ns,共有数据点10万个  P& l* A# _( ^1 t" m& \- a# j
    时钟沿在每个码元的中间进行触发,时序关系是间隔2.5ns9 c6 l  ]: e% D5 `1 ?

    7 n. A0 {" K5 p7 g# G9 t但是使用“commscope.eyediagram”进行测量时提示错误:. ]- p- w" v5 h6 ?

    6 Q7 p1 f( X) s7 O8 b/ _Warning: The eye diagram does not have enough data. Analysis results may not be2 b( h+ B. e3 U( @
    accurate. To improve accuracy, enter more data using the UPDATE method. ' W5 h: E* {2 Z
    > In commscope.eyemeasurements.analyze at 70% ]2 r: |" P# g9 C9 C: t
      In commscope.eyediagram.analyze at 85) q* z2 U( L) l! w( Q0 q# {9 i
      In Untitled at 24 5 X- i! z$ {, Y3 r& n4 U/ Y% H
    Error using calcEyeCrossingTime (line 67)
    + K: N/ y# R, f* lThe ANALYZE method cannot determine crossing times. Check measurement setup values in
    ) l# b* d9 w  F8 l3 j: lthe MeasurementsSetup property. Also, the collected data may not be valid. See
    + |& @0 i# d7 v& Hdocumentation for description of valid eye diagrams.
    6 @( \. b8 m1 M- s& }# [( g6 k+ ]: `1 l6 t" w$ K
    Error in commscope.eyemeasurements/analyze (line 85)
    . k4 n* [# B. `# b) A6 }calcEyeCrossingTime(this,..., w& M* i- `+ x2 B9 F5 C
    6 l0 G# d  h4 {% `0 k
    Error in commscope.eyediagram/analyze (line 85)
    0 ^" A# e8 N: O/ q2 B2 N; b    this.Measurements.analyze(this);2 T( A2 ]& K6 r6 i: j7 g1 l
    9 f6 M$ m2 @9 r! u* x$ n& r
    Error in Untitled (line 24)& S+ J* K! q! ^/ R+ f- B2 @2 k
    analyze(eyeObj);
    . J9 E1 J4 v, d) J1 T
    ' R/ I' ^. a5 u: ]: l: D
    5 Y( f3 T$ W% f  A6 M怎么理解“The eye diagram does not have enough data”,按照时钟数据,波形有100个,为何还不够?, N& N4 h7 X  p9 f4 M

    6 `0 v9 d! j% K1 b( e6 ]而且读入clk后显示的眼图感觉也不太对
    , G* _" B0 X" {% l2 ~9 \( A
    0 u2 S% ]# |) @& B$ ~; T; c请熟悉眼图的朋友帮分析一下错误的地方在哪里
    + b% O" q2 j( K: f8 x0 h
    0 g9 l0 P1 K" e6 ~: s) ?简单的代码如下:
    + r, g* h1 F7 m0 {& r- T! Eclear
    2 C* a% ~+ c* P$ M3 U  G) D- ^close all
    0 }5 m: _' T* s5 g2 N' |
    8 u) c% R4 T7 H/ ]%filename ='F:\clk.txt';
    . K6 P% i# a+ A1 t4 y. [, Ufilename ='F:\data.txt';0 _! X( ]% a' P; m% [
    fid=fopen(filename,'r');
    / N, |) p- \4 H7 d+ S3 P  C# M[code,count]=fscanf(fid,'%f',100000);6 F$ N8 _4 j! E( ]7 d( E; U0 m
    plot(code);
    , T1 x9 m" n6 N0 \
    . D, |, T% s5 \. y* ]. F% Create an eye diagram and display properties! l/ J7 G4 h! U+ j/ x& U0 D8 D9 s
    eyeObj = commscope.eyediagram(...
    ' F! O: g$ d0 N( d! A! P    'SamplingFrequency', 200000000000, ...
    / y. t- n) g6 G    'SamplesPerSymbol', 500, ...
    0 ^' ]4 o) C: S7 H6 b0 E    'SymbolsPerTrace',2,...8 [! |) g  g- V
        'MinimumAmplitude', 0.4, ...) [. L: W1 k9 M& g: e
        'MaximumAmplitude', 1.4, .../ z1 |8 ~7 N& P. ]: l* L7 i
        'PlotTimeOffse',0,...
    4 }6 }+ F* i/ }( o  C4 s2 ^! g1 n    'PlotType','2D Colo',...4 b* C% r' r* S4 E2 R
        'ColorScale', 'log') %#ok) ]( D. a' u0 C$ I2 X+ j5 ^% c1 W6 H

    ) D7 p* c( [; E! V; ^+ [9 t/ }# b% L4 C$ r. R  o* `% O" I
    update(eyeObj, code);2 A0 N2 Y% ?' T$ b# J% P: l
    title('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;6 H. b% ?& x" D* W# s9 O
    analyze(eyeObj);: \) \$ N' b2 b' {2 l* A
    eyeObj.Measurements( J6 g, c+ u  v# X) a! U& {
    % U1 }% ~" a  y3 H3 d$ |! b# P2 i
    # I8 V! {* P* A
    4 H' [; M7 p! M  r; f
    clk.rar (239.37 KB, 下载次数: 14)   N$ ]" ~$ ]; h' z. O5 z% X! S" x2 R' F
    data.rar (232.47 KB, 下载次数: 13)

    该用户从未签到

    2#
    发表于 2012-7-5 15:18 | 只看该作者
    楼主,有问题:
    6 y& ?: _  \* |0 a8 X1,400MHz 的时钟是差分信号吗?
    : \7 b1 Q+ D- V& S" ]/ b2,你的数据中UI才100个, 确实短了。
    3 k' U! {% T8 N: R- ^0 F3 h3,主要问题出在 commscope.eyediagram,而这个函数你未提供。分析该函数,就应该能找到问题的根源。
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2012-7-5 18:07 | 只看该作者
    yejialu 发表于 2012-7-5 15:18 % Y& R" x* I+ o1 N" x7 B; C. q( n9 c
    楼主,有问题:
    4 Y3 Z7 Z" d7 Z5 p' {: l( a: ~1,400MHz 的时钟是差分信号吗?
    6 r$ k7 L. ^: z# B2,你的数据中UI才100个, 确实短了。

      ?. B9 y6 D5 [2 Ncommscope.eyediagram  L  U% D2 q5 ?& L
    是在2012版本才有的 ,旧版本估计没有这个函数" r( V( \* `% N) a. j$ `' Q8 I' s
    8 g) p& o+ V; X$ `2 q& D" u
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
     楼主| 发表于 2012-7-5 18:55 | 只看该作者
    不太情况是哪里的设置问题,首先我用MATLAB自带的函数产生了一个码元数据,然后丢给眼图分析函数% Y+ k1 Q/ M7 S8 u; C9 }1 `
    2 Y: g. W4 u$ W$ E7 H! Q: A) [
    代码如下:% T7 q2 C# e& e' {
    ///////////////////////////////////////////////////////////////////////////////////////////////
    * p! B' H) K" [& a8 ^clear& V/ t8 t5 r; c* a$ W5 h
    close all
    " N3 q1 s7 Y8 l  Z   
    6 J% E7 c5 J( j0 [0 n% Initialize system parameters/ j- B/ T8 j. e
    Fs = 10000000000; Rs = 200000000; nSamps = Fs/Rs; rollOff = 0.8; M=4;
    5 i& D  W! `0 T" Z. V" UhMod = comm.QPSKModulator; % comm.QPSKModulator System object
    1 s$ h/ J# R7 f! h
    5 |9 A1 _6 P: d- F3 _3 p% Square root raised cosine filters
    4 Q" {; K& ]( a: h( MfiltSpec = fdesign.pulseshaping(nSamps,'Square root raised cosine',...
    9 H3 k2 F- M7 n: _+ Y    'Nsym,Beta',6,rollOff);
      C1 `" b6 s) @2 J! ?& q) \hTxFlt = design(filtSpec); hTxFlt.PersistentMemory = true;" B; g2 f8 D9 T+ P- {8 v
    hRxFlt = copy(hTxFlt); hTxFlt.Numerator = hTxFlt.Numerator*nSamps;6 _0 _) U: d0 M9 r: {) d: y) w; Q
    ! s' X$ @5 A+ }! C
    % Generate modulated and pulse shaped signal
    4 T& x' _2 s- E6 A0 `0 qframeLen = 1258;' Q) d/ n3 p1 V5 i
    msgData = randi([0 M-1],frameLen,1);
    ) [! y% p2 L7 O$ ~msgSymbols = step(hMod, msgData);
    * k/ t: G! Z4 x! A: ?msgTx = hTxFlt.filter(upsample(msgSymbols, nSamps));
    & c7 w0 v' }5 O% J3 v' ?
    - W; Z* w, n; q0 it = 0:1/Fs:100/Rs-1/Fs; idx = round(t*Fs+1);
    8 H3 D( V! U2 ?+ v/ `$ `8 bhFig = figure; plot(t, real(msgTx(idx)));
    * S0 S+ a( I. ttitle('Modulated, filtered in-phase signal');: V# O% b% Q+ }/ E
    xlabel('Time (sec)'); ylabel('Amplitude'); grid on;. g5 Q9 w2 o  _

    9 \* S, B8 y. [+ P4 e& R8 ?& ]save('pqfile1.txt', 'msgTx','-ASCII')
    2 D4 G, y5 X, I# x: X5 d! a% }9 w& @+ H( ]1 \& {
    % Manage the figures. a. q7 u5 d3 E# ]1 D
    managescattereyefig(hFig);
    " \0 T1 S4 U- d6 F8 }7 J, X% A4 [! i

    2 g1 q/ [5 X8 `/ _9 I  l% Create an eye diagram object
    6 l7 _( U: J" C$ L" WeyeObj = commscope.eyediagram(...5 j6 D, ]4 d5 G) F0 L
        'SamplingFrequency', Fs, ...: q2 Y$ S  S9 ~4 C8 ^- z0 x: w
        'SamplesPerSymbol', nSamps, ...
    % V9 H5 ~8 m8 Y  S. O1 `    'MinimumAmplitude', -1.4, ...
    ; L( k* n! }7 [8 R    'MaximumAmplitude', 1.4, ...
      i% R" z  q+ D% m' G) c6 R5 B    'SamplingFrequency', Fs, ...% t  j7 {( o5 Q3 Y9 p) ~
        'SamplesPerSymbol', nSamps, ...( q' D  ?0 o) j0 A  v; O" T
        'OperationMode', 'Complex Signal')
    ; C/ L" l. }& O6 |4 \% Y1 C
    ; A9 U1 {% G  l; V1 y" z9 c% Update the eye diagram object with the transmitted signal& [7 q6 A& x' H. c  x" T! [
    eyeObj.update(msgTx);
    ( K0 P& S2 |: I/ W9 C7 X: B2 ^) Y& Q6 b! d8 q5 A5 R/ Y+ ^
    % Manage the figures0 B" l' D; I1 a2 @5 x3 R
    ' v, w+ w5 @% V, A; V- {( Q( C
    analyze(eyeObj);- e  U2 B9 x6 O- V& ?$ q! S
    eyeObj.Measurements
    : A" L4 l) c) [8 q///////////////////////////////////////////////////////////////////////////////////////////////: l" @5 k* u8 ^) v+ P2 \

    7 N. c( U( B9 f5 f0 M然后读入pqfile1.txt文件,代码如下:
    2 j7 V" a8 F! [6 d: N" M# {* ~//////////////////////////////////////////////////////////////////////////////////////////////
      d0 C  \& b# K% |clear' @" x& |+ U; k% }/ U' }
    close all+ K& d9 j9 N9 Z* A) v* a
    8 T/ V$ A- H1 R
    Fs = 10000000000; Rs = 200000000; nSamps = Fs/Rs;  h- f  y7 O% y) C$ h4 Q
    ! I1 r$ R1 T, X: w9 k& ]
    filename ='pqfile1.txt';
    & m! k0 L/ p: K: c5 r% |fid=fopen(filename,'r');7 X2 [* S) M+ ^- [; c, T* W2 x
    [code,count]=fscanf(fid,'%f',62900);
    + d7 ~5 h( }3 T3 E( Y; _( R) v- w: n7 p0 P
    % Create an eye diagram and display properties
    + D; |+ }1 k+ G  W: f0 meyeObj = commscope.eyediagram(...; G3 V& ^" }+ t3 @
        'SamplingFrequency', Fs, ...$ Q5 s5 D' J$ L: u* x; A/ {
        'SamplesPerSymbol', nSamps, ...2 ~7 G9 l  e: |# m5 o* W
        'SymbolsPerTrace',2,...
      Z# v( L& [7 o5 h6 v0 c    'MinimumAmplitude', -1.4, ...: X& D) B0 H; ^; ]& J
        'MaximumAmplitude', 1.4, ...* N/ Y8 r, }( V1 ~# f
        'PlotTimeOffse',0,...
    ! o' Z" I% [& z5 D6 g! p7 z+ U% g    'PlotType','2D Colo',...: K' H& L% Z0 w4 w4 j8 @
        'ColorScale', 'log') %#ok
    % Q5 v8 |2 O( v. f; U& c& F$ U; [/ }$ E! e" u# T

    ( u* m; L1 H) v5 {update(eyeObj, code);
    % }5 N1 Q. y( _3 A7 Y2 K7 y* t  ntitle('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
    ( S6 P. a' A# g. z. V8 L; P8 v! M+ Oanalyze(eyeObj);
    ! A; l3 c6 |, t% p2 ReyeObj.Measurements
    ; T1 [: [* T2 H5 u: S//////////////////////////////////////////////////////////////////////////////////////////////5 v# c; b7 k9 X: w3 [& z
    测量结果是:
    9 C. p3 z/ L7 ?$ s1 e- X0 ^. Z                     Type: 'Eye Diagram Measurements'
    $ b, o7 d& m& f4 X& `              DisplayMode: 'Optimized for Real Signal'
    + T! n4 Q+ Q, {          EyeCrossingTime: [2.4972e-09 7.5006e-09]
    " u. d" Z8 p5 K9 i2 o. K# A     EyeCrossingAmplitude: [-0.0109 -0.0117]
    % G, i3 {% O& H! `' i  Y$ U- n: \                 EyeDelay: 4.9989e-09
    ! ?$ o; p- u/ `! [4 X2 R/ C7 K8 U                 EyeLevel: [-0.8496 0.8484]- Z2 L5 M! u& {
                 EyeAmplitude: 1.6980
    2 a* B/ B8 H0 g3 H/ k                EyeHeight: 1.0287
    ' q2 b" |: B! R% T    EyeCrossingPercentage: 49.37036 Y  k! p. [* n
           EyeOpeningVertical: 0.6723
    7 D% N0 j3 f4 N$ S$ p                   EyeSNR: 7.61070 Z6 T# D( U( k
                QualityFactor: 13.1948
    , T% i9 n2 G, Q' B1 ~; Z5 X                 EyeWidth: 4.3069e-09% X8 m5 j& S! Z% U+ k+ e
         EyeOpeningHorizontal: 4.8000e-09
    $ O# p8 ?) \+ F+ ~/ g- c  D* Y             JitterRandom: 0
    " i: K& [! k7 k      JitterDeterministic: 2.0000e-10
    8 W1 r1 r5 G4 j- `. j              JitterTotal: 2.0000e-10; _% N1 O2 ]+ l8 ^# Y3 h
                    JitterRMS: 1.0180e-10" \  P3 R0 C. Q+ t( x6 O' N; W
             JitterPeakToPeak: 2.4000e-09
    0 h4 E* Y/ U$ ^& S# f$ y              EyeRiseTime: 2.1848e-09" M7 {6 b; E  F7 C3 Y
                  EyeFallTime: 2.1804e-09
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
     楼主| 发表于 2012-7-5 18:57 | 只看该作者
    yejialu 发表于 2012-7-5 15:18
    2 L7 Y: e% @6 ]( s: m楼主,有问题:$ a; Q' M" f. Z/ z/ o
    1,400MHz 的时钟是差分信号吗?
    . {: Z0 ^1 [: h# D) d+ o( T2,你的数据中UI才100个, 确实短了。
    0 J& c9 A7 Y+ `
    例如在ansoft designer 里面, z+ Y, v8 h' v. {" F; E
    0 s7 C0 A. G$ K$ F
    数据码元用的是 V_PRBS_JITTER$ O) K% X: U& e& q
    TR=TF=5E-11
    6 `; y2 _7 q, WBITWIDTH=2.5E-9/ \' K1 Y) `% y2 Q
    ( r1 S6 M  ~4 a1 p5 c* C% u! u
    仿真时间长度5us
    ( m3 b6 l6 B  k+ T, G9 w/ V% ]
    % W% [8 A- Y5 e! _# @- v% i7 y" r导出数据的时候选择的step=100ps2 i" D1 I3 w2 E1 x3 `5 O, a

    $ P8 @0 b. J% b! O% k- M- x7 }是否这里的采样频率就可以理解为 Fs=100ps?$ e) ?- s  M* K+ ^$ }
    因为DQS的时钟周期长度是5ns,每个码元的时间是2.5ns,所以每个码元的采样点数为2500/100=25个' P. S; B* W2 o( F. V

    0 Q! [, i8 s5 [7 {目前这样的数据导出再导入到matlab里面无法计算

    该用户从未签到

    6#
    发表于 2012-7-6 09:23 | 只看该作者
    导出数据的时候选择的step=100ps0 W' d8 i' M+ f7 ^4 n  T: t  [: v
    是否这里的采样频率就可以理解为 Fs=100ps?
    ( b. G3 e$ a7 X1 Istep是采样的步长吧。采样频率应该是步长的倒数。
    # ~( _1 U, z9 I+ g5 Q

    该用户从未签到

    7#
    发表于 2012-7-6 09:33 | 只看该作者
    估计牵涉的函数也有好几个。 这样吧,你看提示错误在哪个函数, 去查代码。
    / x8 |5 X% |, t# z. E2 r2 ]3 \Error using calcEyeCrossingTime (line 67)
    6 P% \9 n. C+ @0 GError in commscope.eyemeasurements/analyze (line 85)5 X8 t9 G3 Z/ Q6 |$ v) X
    Error in commscope.eyediagram/analyze (line 85)5 ?5 X2 T7 o5 [7 N2 c( Q8 h6 V
    Error in Untitled (line 24)。
    / h$ Y0 V. l- u3 H  E: M* a/ V7 uThe ANALYZE method cannot determine crossing times. Check measurement setup values in the MeasurementsSetup property. Also, the collected data may not be valid. See" ~. s. r7 b9 G# t* O; [% K
    documentation for description of valid eye diagrams.9 W/ E0 z3 O( Z4 r1 d9 P! j
    从这句话分析,我认为触发信号由于一个UI中的采样点过少,或者说采样频率过低。造成差分触发的P和N的交点无法判断, 也就 无法确定触发时间,无法去切割数据信号的UI,所以报错了。以上分析仅供参考。

    该用户从未签到

    8#
    发表于 2012-7-13 16:30 | 只看该作者
    楼主人丢了吗?

    该用户从未签到

    9#
    发表于 2018-9-17 11:12 | 只看该作者
    没有解决办法了吗?
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-20 19:54 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表