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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    请教关于MATLAB读入外部数据进行眼图分析的过程的问题) A: V1 E" b: R* I) K
    : Y3 A* p) }) r6 B1 d. \
    使用的是MATLAB2012A的环境
    + n$ p! \9 \5 N. @' Z1 n1 N
    / z% v  B# C" d$ v% @$ |" F; @( \% t5 `; K
    现在有2组数据,clk与data
    6 W" N. Q! z" g  l' A时钟的频率是400MHz(周期是5ns,脉宽是2.5ns),取样频率5ps,此时采集时间为500ns,共有数据点10万个
    ' w# z3 }8 K0 t% ^- ^时钟沿在每个码元的中间进行触发,时序关系是间隔2.5ns* R: r& ~* N+ i% O9 P% J

    7 W9 b+ A# O9 X6 v, B但是使用“commscope.eyediagram”进行测量时提示错误:# y' b3 T( F: _( c

    ; h2 j4 }8 _# O) w% vWarning: The eye diagram does not have enough data. Analysis results may not be
    ! ~* R. w) W% S: w5 c4 Xaccurate. To improve accuracy, enter more data using the UPDATE method.
    + d0 |2 |0 ?7 U> In commscope.eyemeasurements.analyze at 70( z: Z  h7 w* r% z6 q8 U
      In commscope.eyediagram.analyze at 85
    # L0 r- S8 W5 x* g, A* |4 h8 g# N  In Untitled at 24 5 d+ ?- V5 w) o( e1 `
    Error using calcEyeCrossingTime (line 67)% j0 m9 k$ l5 \9 b$ `
    The ANALYZE method cannot determine crossing times. Check measurement setup values in2 o% Z1 v/ C! U- s; o- q
    the MeasurementsSetup property. Also, the collected data may not be valid. See' M  t: R2 t( [2 z7 [( h
    documentation for description of valid eye diagrams.
      u" r) q1 p. j$ G- P3 Q- k  x' V6 N
    Error in commscope.eyemeasurements/analyze (line 85)
    ( r7 J0 Z  P- v6 \; L1 L4 j* N6 gcalcEyeCrossingTime(this,...
    . P5 [8 W2 c/ G% ^6 C2 p1 R: [  z: P* ^( j0 K
    Error in commscope.eyediagram/analyze (line 85)) _2 d7 N; k& v  c
        this.Measurements.analyze(this);
    " ?9 {- \, C# @9 c/ g% A5 k5 s7 W) |7 K: D  x
    Error in Untitled (line 24)
    ' d" r! w: ^9 i6 X" i3 Hanalyze(eyeObj);
    9 _6 J7 T' m! S, \- A
    , z; c6 t; q" V: V' I, j0 s& T1 I
    怎么理解“The eye diagram does not have enough data”,按照时钟数据,波形有100个,为何还不够?+ u  n$ d" B7 i( v0 @

    4 U9 \, R* B7 W而且读入clk后显示的眼图感觉也不太对
    8 v8 Z0 X5 B3 N
    1 j7 [: a! F8 |0 Y. y) w/ [请熟悉眼图的朋友帮分析一下错误的地方在哪里; @$ c/ @$ r; E' t4 O
    & b0 C; n3 \8 B9 R. I! _$ N
    简单的代码如下:
    - a; b3 r# `/ T/ m& j( s. Qclear0 u  Q2 T+ X1 Y3 r0 z* V
    close all! I4 d9 P+ g. M# Y4 K) f

    0 M4 S4 \& O) T) v%filename ='F:\clk.txt';2 \6 x3 s0 M4 G0 u$ A. |
    filename ='F:\data.txt';8 K5 S7 i9 U0 @9 n. [2 A
    fid=fopen(filename,'r');
    ; g- l: x9 V0 y% z[code,count]=fscanf(fid,'%f',100000);( Z# Y9 Y* ^' f% C6 g/ Z
    plot(code);
    8 V: a- X. m" I. w& U7 s/ B( }( W# H3 p: }2 `
    % Create an eye diagram and display properties6 H. \6 w- Q8 t2 J
    eyeObj = commscope.eyediagram(...; A9 b& a9 F8 E
        'SamplingFrequency', 200000000000, ...$ d  O+ \- J( y
        'SamplesPerSymbol', 500, ...
    ) b$ I" D; g2 n7 U" f, v    'SymbolsPerTrace',2,.../ }& I+ \) s" x
        'MinimumAmplitude', 0.4, ...
    7 ]3 d$ q. u( c    'MaximumAmplitude', 1.4, ...; u6 a- L7 ^# f1 X8 z4 P) ]5 C7 L& Z
        'PlotTimeOffse',0,...
    - ^9 A4 z. {/ S- @0 R& s: C  J0 y    'PlotType','2D Colo',...
    9 S2 X; }9 J# Q( A    'ColorScale', 'log') %#ok
    8 D, ~, P& J( l" x4 U& T+ k/ `; l0 |) O. k0 v+ I
    % E# K: j$ x, a6 `$ g
    update(eyeObj, code);
    ) h  f7 m- S1 w, Dtitle('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
    $ {$ ^/ P' c) Z* Aanalyze(eyeObj);
    . T' r& e3 `: W% T* QeyeObj.Measurements
    3 c% h9 K+ y+ ?
    0 h9 L2 z+ J6 B; _) V& d! a; ~! M' i* B
    9 c8 c8 s, @" Q0 Y * z. i- y( Q6 q
    clk.rar (239.37 KB, 下载次数: 14)
    ( @7 Q/ z# }! k* N- b1 o, r1 K data.rar (232.47 KB, 下载次数: 13)

    该用户从未签到

    2#
    发表于 2012-7-5 15:18 | 只看该作者
    楼主,有问题:6 Y. T/ A$ t) U+ h- ^3 f& W
    1,400MHz 的时钟是差分信号吗?" x, d5 S# h; P- ?. a- E' n
    2,你的数据中UI才100个, 确实短了。
      X  d' \) R3 p' s& j3,主要问题出在 commscope.eyediagram,而这个函数你未提供。分析该函数,就应该能找到问题的根源。
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2012-7-5 18:07 | 只看该作者
    yejialu 发表于 2012-7-5 15:18
    3 J$ E/ W6 A* h4 _, G楼主,有问题:0 ^5 t# K, i) c1 S2 [6 m! }
    1,400MHz 的时钟是差分信号吗?. `- g- n# p& `( ^9 i9 {8 s
    2,你的数据中UI才100个, 确实短了。

    8 U5 \5 w% ^" ycommscope.eyediagram/ y4 T3 F8 r7 y6 [: G8 b
    是在2012版本才有的 ,旧版本估计没有这个函数
    % C( c# X; ]% b6 [: l- O
    9 ?# Y" L) L! Q: L
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
     楼主| 发表于 2012-7-5 18:55 | 只看该作者
    不太情况是哪里的设置问题,首先我用MATLAB自带的函数产生了一个码元数据,然后丢给眼图分析函数
    7 u: I0 ~; B" J2 t, s" Q4 b! @  q9 r/ I4 X
    代码如下:7 T' B* ?3 ]4 g0 M8 U6 P& I& @0 y
    ///////////////////////////////////////////////////////////////////////////////////////////////9 C% h/ @7 z# p8 P& |: z
    clear& u% ?& |7 l' L, }% ^) e) s
    close all
    7 \7 a, m2 @3 o! _8 B   . Z* z. U0 |6 H' ~2 F4 O) u
    % Initialize system parameters
    - W& N% q( w5 @8 `$ n) C2 `" P$ hFs = 10000000000; Rs = 200000000; nSamps = Fs/Rs; rollOff = 0.8; M=4;
    7 b6 e8 a7 b& UhMod = comm.QPSKModulator; % comm.QPSKModulator System object
    6 A& U7 k% d1 \3 }
    9 ?  V& _, p- ]% Square root raised cosine filters
    6 O% a0 L7 [/ f8 C3 `filtSpec = fdesign.pulseshaping(nSamps,'Square root raised cosine',...
    ; f% j4 r. b: v% j* {6 f    'Nsym,Beta',6,rollOff);+ v$ z+ o. [; K) U0 w  K
    hTxFlt = design(filtSpec); hTxFlt.PersistentMemory = true;
    / e* C4 \; R; ]! A/ N8 Z1 ^5 g( ChRxFlt = copy(hTxFlt); hTxFlt.Numerator = hTxFlt.Numerator*nSamps;! r2 B. Z/ h, y* k" Y
    ; \# j7 L/ |6 w0 N
    % Generate modulated and pulse shaped signal
    5 |4 {; m" G; m' p- Q: H( _. _  ?frameLen = 1258;1 {6 E2 a, `! R( p
    msgData = randi([0 M-1],frameLen,1);
    9 O6 I: t% i* {& d, ?9 f$ G* ^* J- s  C2 bmsgSymbols = step(hMod, msgData);- y4 F! O+ J  E, I3 }, v4 X7 |) b5 B
    msgTx = hTxFlt.filter(upsample(msgSymbols, nSamps));" ]& _6 u/ l, e' n9 [

    ! \2 u% T  d: Q: I# @) Zt = 0:1/Fs:100/Rs-1/Fs; idx = round(t*Fs+1);1 A/ I/ n$ S* p: q5 v
    hFig = figure; plot(t, real(msgTx(idx)));* ^! M" L" u3 B
    title('Modulated, filtered in-phase signal');
      N/ q) a  x" @1 }, oxlabel('Time (sec)'); ylabel('Amplitude'); grid on;
    / O6 V. B. |9 H' E0 L
    ) D9 l7 _0 @& A' j' qsave('pqfile1.txt', 'msgTx','-ASCII')( C( m1 w" ~: Z2 p0 O. E

    . i/ A0 F+ G( w8 W9 ~% Manage the figures; K# H7 I& E; K. }
    managescattereyefig(hFig);4 r- V! L$ A( K+ E

    & _$ L8 o$ d, w  [0 C
    0 A2 t3 ?6 W( I) S2 r( E" M% Create an eye diagram object
    ( o$ L5 l! K' g2 A' oeyeObj = commscope.eyediagram(...* j3 q- {$ v4 [  u4 _7 E
        'SamplingFrequency', Fs, ...5 ?6 j! K8 B7 Q( {1 a* v
        'SamplesPerSymbol', nSamps, ...
    9 ^0 D  P" }& }; K9 P4 z0 F# N    'MinimumAmplitude', -1.4, ...
    9 F$ s9 O; G( O    'MaximumAmplitude', 1.4, ...
    " [2 V" F7 p8 I: A% S8 W5 r    'SamplingFrequency', Fs, ...
    ( @1 i6 N- B# ?/ ~& L    'SamplesPerSymbol', nSamps, ...
    8 ]4 a) ^) f) v" m! y! _* ~  ]    'OperationMode', 'Complex Signal')/ ]; I6 W7 W. M5 H( c" n

    ) c1 b1 J! |6 I% Update the eye diagram object with the transmitted signal
    0 G/ K% w4 {, ^! BeyeObj.update(msgTx);. w* H( K& n3 P/ G' g2 l6 y
    ) ^* f" d8 q. w! t7 [
    % Manage the figures
    0 n, j9 y* F) k% ^: N7 k. T/ r+ n- G
    analyze(eyeObj);3 @0 Y7 X; a$ G' v3 X9 F
    eyeObj.Measurements7 E; K) m$ W* H2 [& b7 R
    ///////////////////////////////////////////////////////////////////////////////////////////////
    3 u! K/ y- I' S& A. @( C! H1 I* v. ]) b/ ^; S
    然后读入pqfile1.txt文件,代码如下:( Q% g) b3 ]6 _" M; y9 `. ?# e! q9 H
    //////////////////////////////////////////////////////////////////////////////////////////////8 L" A# t+ r' G; X
    clear* Z; z& a+ B7 {, O$ \9 _$ G
    close all
    1 y! o5 \2 d' e7 @
    * s0 u1 t8 i& `7 d7 [6 WFs = 10000000000; Rs = 200000000; nSamps = Fs/Rs;. m# g0 L9 ]6 l
    % S6 ]; A% C: ~' `& ?6 v
    filename ='pqfile1.txt';
      R# f/ K9 h! N# k4 N/ [6 jfid=fopen(filename,'r');
    9 C6 h9 P, f8 L8 }( D[code,count]=fscanf(fid,'%f',62900);1 Z7 |' `8 K! ~( J2 I
    / M2 \& R$ g5 W
    % Create an eye diagram and display properties4 @& I! \# z/ k0 w
    eyeObj = commscope.eyediagram(...
    % O2 f' z7 s8 E* ~    'SamplingFrequency', Fs, ...  R5 J6 _9 D1 c) T( Q/ V: D
        'SamplesPerSymbol', nSamps, ...
    ; x# h1 I% p) O% E    'SymbolsPerTrace',2,...: I9 n. N% o+ z% H, G
        'MinimumAmplitude', -1.4, ...  Q8 V% |* q% @0 E
        'MaximumAmplitude', 1.4, ...% G; L7 v6 R9 H* e! j3 E
        'PlotTimeOffse',0,...
    8 Q; b7 C: h% ^# i8 d3 A    'PlotType','2D Colo',...9 |7 w+ e$ d# F# `. ^: Z
        'ColorScale', 'log') %#ok: u; n9 W) V1 l6 o3 ~% l

    + H# ^8 {' Z1 S; w' n' \& E, L9 Q8 W* M! d9 x
    update(eyeObj, code);
    $ \- s" P' h9 T& c: b( Jtitle('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
      _- c, s" _; P. w  M) oanalyze(eyeObj);
    " T# P- l, M% r# y" N0 j/ meyeObj.Measurements& |  k/ b, }* J7 P( f6 v
    //////////////////////////////////////////////////////////////////////////////////////////////) R" O' @2 K/ }  u  D8 Z! C, }
    测量结果是:
    6 |& l8 A& o6 U4 O  q# S$ g                     Type: 'Eye Diagram Measurements'
    4 z  j& X. B, P) {, G: k' h              DisplayMode: 'Optimized for Real Signal'
    + N" P8 }! R9 n* C+ }6 _& c# q          EyeCrossingTime: [2.4972e-09 7.5006e-09]
    & ^8 H5 L$ {- T% j9 q# H9 |' t     EyeCrossingAmplitude: [-0.0109 -0.0117]+ w( l! ^" a: y( `$ R; l- q9 W+ h
                     EyeDelay: 4.9989e-099 o: r. ^( V0 ]. E: x4 K
                     EyeLevel: [-0.8496 0.8484]
    1 b  i% o. `5 F9 C* I+ N: y8 U! l) x             EyeAmplitude: 1.6980
    ; @; ?$ |& v& H6 \2 w                EyeHeight: 1.0287
    % s, S; l: P- T    EyeCrossingPercentage: 49.3703
    * G3 s3 j7 ]& y$ U% |( e1 D# F+ h       EyeOpeningVertical: 0.6723
    : [1 d5 e  I, c* ~5 `! `; ?# s                   EyeSNR: 7.6107
    " E+ o# s7 V4 }+ Q, t  e            QualityFactor: 13.1948
    + Y  E0 ^& Q3 ~2 b1 C7 r5 k$ O# }9 R) k                 EyeWidth: 4.3069e-09& H4 p: ?/ x! D
         EyeOpeningHorizontal: 4.8000e-09
    $ H% y$ A) Q% G/ ~1 s: @6 B             JitterRandom: 00 c' j$ X0 M- x8 F
          JitterDeterministic: 2.0000e-10
    ( t/ O4 Q* P8 O8 I  t( q              JitterTotal: 2.0000e-10
    : r0 f' V9 H7 h. Y1 w7 X  W- x                JitterRMS: 1.0180e-10
    8 W) D5 }- v+ C+ U% G0 w         JitterPeakToPeak: 2.4000e-09
    " b: w% r1 R( A) u              EyeRiseTime: 2.1848e-097 I6 b: a% m; \5 q
                  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
    * `9 Z5 C; U9 v楼主,有问题:
    , T6 m+ K) i  W! C  i) M- o* k2 M1,400MHz 的时钟是差分信号吗?
    . }+ a5 N. p1 @4 }$ o2,你的数据中UI才100个, 确实短了。
    ( ^3 ?, V0 _0 [3 X" p) w& ^
    例如在ansoft designer 里面
    9 e8 b9 n5 n' U' A9 h1 x( Y6 M( h- H8 K1 u( n" G4 I
    数据码元用的是 V_PRBS_JITTER! z2 M7 w) X1 C% M
    TR=TF=5E-11
    5 G5 [; a+ ?& w6 L" ]% J% A$ m/ _BITWIDTH=2.5E-9( q# Q% ]4 |4 L  z4 @9 A
    9 h; U' ~; S* T% s" k: p4 O
    仿真时间长度5us
    - b4 T( d- K& w& ]6 L/ ^  I( j1 l; k
    导出数据的时候选择的step=100ps
    7 B; E1 O& L* e! t
    & F; d- X6 L1 G. n4 O; B$ k! q2 ^是否这里的采样频率就可以理解为 Fs=100ps?8 W/ x: z4 p* B! u
    因为DQS的时钟周期长度是5ns,每个码元的时间是2.5ns,所以每个码元的采样点数为2500/100=25个
    & i/ a1 R, Y8 u, j- w3 N% K. F
    2 v, ?' {0 F' z, p目前这样的数据导出再导入到matlab里面无法计算

    该用户从未签到

    6#
    发表于 2012-7-6 09:23 | 只看该作者
    导出数据的时候选择的step=100ps) _* n' D1 L: M1 `; {
    是否这里的采样频率就可以理解为 Fs=100ps?
    ) M! E; w) G2 K% C2 s& i1 Cstep是采样的步长吧。采样频率应该是步长的倒数。
    4 E$ ?4 S) q& a

    该用户从未签到

    7#
    发表于 2012-7-6 09:33 | 只看该作者
    估计牵涉的函数也有好几个。 这样吧,你看提示错误在哪个函数, 去查代码。. D, y" D% e% k  l' L6 p/ c
    Error using calcEyeCrossingTime (line 67)( M& d4 h( f4 p+ n" `2 G$ e
    Error in commscope.eyemeasurements/analyze (line 85)# f) W6 v% L2 K+ b
    Error in commscope.eyediagram/analyze (line 85)+ J3 Z3 D7 H# M) I9 X% o, c
    Error in Untitled (line 24)。/ s/ ?+ d! ?; j* j% V
    The ANALYZE method cannot determine crossing times. Check measurement setup values in the MeasurementsSetup property. Also, the collected data may not be valid. See
    0 _& Y& p7 n* O: ]8 Y7 Qdocumentation for description of valid eye diagrams.
    * U8 p5 ~$ A6 J, U. q从这句话分析,我认为触发信号由于一个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-25 10:57 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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