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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    请教关于MATLAB读入外部数据进行眼图分析的过程的问题
      I. P  w+ N4 f. r% f# u0 _: c: ^
    使用的是MATLAB2012A的环境
    6 q6 d6 u. X" x
    + J+ y8 H. p2 k# @6 e4 [3 P+ g- E7 Y& x' Z' C
    现在有2组数据,clk与data% w* F, m; g/ U4 j2 |: [, y
    时钟的频率是400MHz(周期是5ns,脉宽是2.5ns),取样频率5ps,此时采集时间为500ns,共有数据点10万个
    8 w! ]! n1 s6 @% F9 `. M* h时钟沿在每个码元的中间进行触发,时序关系是间隔2.5ns2 n; H$ k4 [( D1 l. S5 X. v# W/ \

    1 u" K9 J* R# |! c  w" b但是使用“commscope.eyediagram”进行测量时提示错误:
    / o/ u, z- ^  L2 u4 P4 Q0 b0 c
    ' x; w) I- i3 F8 V6 i: C: n9 L" p! TWarning: The eye diagram does not have enough data. Analysis results may not be
    : I; n. J, a& c" [9 q) B# {accurate. To improve accuracy, enter more data using the UPDATE method. 9 j0 g2 n0 a0 ^2 R, Z
    > In commscope.eyemeasurements.analyze at 70
    1 l. `% U. V; L2 e  h$ B  In commscope.eyediagram.analyze at 85! h% G$ b% F. i2 J3 n7 T* w
      In Untitled at 24
    6 m2 K4 N% u) K" }4 tError using calcEyeCrossingTime (line 67)1 a7 j" ~! Y- [9 d- F7 r/ M
    The ANALYZE method cannot determine crossing times. Check measurement setup values in$ x6 Y) F& ]+ ]3 ?
    the MeasurementsSetup property. Also, the collected data may not be valid. See
    7 k4 m' K; [; q% ]: Zdocumentation for description of valid eye diagrams.
    . ?! V. S8 P) a+ ^
    6 P. Y2 C) v. P( O& }7 rError in commscope.eyemeasurements/analyze (line 85)* a+ u+ v3 X' x: |
    calcEyeCrossingTime(this,...
    9 A( i" e7 W9 k  W  f
    ) }' n, \0 n& H5 Y  ]1 m5 K; XError in commscope.eyediagram/analyze (line 85)
    % m: J, G, q. A( U& b! A    this.Measurements.analyze(this);2 z. o/ M7 T0 x0 ?

    - z$ G- J1 g7 c2 iError in Untitled (line 24)
    0 F0 _( ]# F- E+ Aanalyze(eyeObj);
    0 d9 F* H/ ~. r
    5 X7 q# t- A. I% ~0 x# M# i% L3 I; q  C. S
    怎么理解“The eye diagram does not have enough data”,按照时钟数据,波形有100个,为何还不够?
    - `/ l0 D6 w% U
    ; _3 q$ w% Q1 s  g+ \而且读入clk后显示的眼图感觉也不太对  J8 P7 p9 I3 o7 V

    1 F7 B) ~3 `: |) P1 o# |( S7 Q  R请熟悉眼图的朋友帮分析一下错误的地方在哪里
    6 n9 \1 F  Q5 {% c8 u- n, Q1 z+ w( a; w% {+ Y+ e
    简单的代码如下:4 H& r/ U8 q* e+ L4 u7 o4 u/ ^3 w7 b
    clear
      X8 K+ `0 Q+ t7 S; ^. B2 ]) Lclose all
      I1 O0 K! r4 \4 ]4 ]* s2 L) l8 |1 o% [7 e8 U
    %filename ='F:\clk.txt';7 `6 `6 u; P0 u* P% B' i$ N
    filename ='F:\data.txt';5 d2 ~3 W/ B$ p1 X8 g
    fid=fopen(filename,'r');% `7 P7 @. p5 v( K- w
    [code,count]=fscanf(fid,'%f',100000);, n+ L7 b$ e2 Y) `/ |' Y; m
    plot(code);
    ( E( s: F$ u1 ^; h( u$ A
    5 T1 e& Z- F7 Z' m3 `5 ^% Create an eye diagram and display properties
    , s+ p) u2 Y3 S8 aeyeObj = commscope.eyediagram(...3 W4 x, n/ F' m4 L6 Q
        'SamplingFrequency', 200000000000, ..." @5 I7 o8 H  Q5 S
        'SamplesPerSymbol', 500, ...& j0 l0 h( g( N; p: X
        'SymbolsPerTrace',2,...9 X) w% I: Q+ |, D$ y
        'MinimumAmplitude', 0.4, ...
    - L4 e  O' g  y5 ~) a1 A5 ?: {    'MaximumAmplitude', 1.4, ...+ k$ t" u1 @% L! ~* R  I
        'PlotTimeOffse',0,...
    ! |# `% P8 q. U$ D/ [' y    'PlotType','2D Colo',...3 ~* N7 m" T5 R9 {- k2 l% [
        'ColorScale', 'log') %#ok; |; X. C- M8 G6 A8 C+ L4 M
    ( l/ I8 Z# x2 b+ @; @& P8 w, u( U

    5 }/ w( h9 V1 S" z' E! r  Jupdate(eyeObj, code);
    ; _; f$ E; o: _) Atitle('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
    0 H$ S7 z! y$ b9 J  r9 v4 Eanalyze(eyeObj);
    3 I8 S8 o/ i* KeyeObj.Measurements+ d# ^; x# ?, A
    7 \! s8 q5 x' w7 M7 v
    4 R% ~( f2 P& ~' z6 L
    5 }$ P$ \. p( [3 `3 C
    clk.rar (239.37 KB, 下载次数: 14)
    / e5 k/ G0 N8 f; `, X& P4 H data.rar (232.47 KB, 下载次数: 13)

    该用户从未签到

    2#
    发表于 2012-7-5 15:18 | 只看该作者
    楼主,有问题:6 W" M5 j+ P' R3 n
    1,400MHz 的时钟是差分信号吗?
    . M# Q4 v( G1 v; M2,你的数据中UI才100个, 确实短了。
    2 P  _) s8 c/ k/ d" B( c. X8 _: C3,主要问题出在 commscope.eyediagram,而这个函数你未提供。分析该函数,就应该能找到问题的根源。
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2012-7-5 18:07 | 只看该作者
    yejialu 发表于 2012-7-5 15:18 ' ]- j  M4 Z, N
    楼主,有问题:
    : F9 D% \& G" f2 ?) W+ o) m. h1 ~1,400MHz 的时钟是差分信号吗?
    / m# j1 I( C; }2,你的数据中UI才100个, 确实短了。
    . M* q1 O/ p0 s& ^0 i/ L" F
    commscope.eyediagram) Q' J  ~+ K0 x% ]
    是在2012版本才有的 ,旧版本估计没有这个函数0 L0 L8 N. }' a: U/ t2 v

    3 S# w1 K- D  ^9 u
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
     楼主| 发表于 2012-7-5 18:55 | 只看该作者
    不太情况是哪里的设置问题,首先我用MATLAB自带的函数产生了一个码元数据,然后丢给眼图分析函数! p* b7 A1 f* t4 W# d8 Y
    * I, I; s! B) e& P0 Y
    代码如下:4 b6 M2 M: C  R  q  {6 d
    ///////////////////////////////////////////////////////////////////////////////////////////////$ a' i2 z" R' m& B
    clear
    5 y; @( A+ |' X7 }; Sclose all1 l0 Z* P3 E- U6 `# D
       ) [0 U3 c  X) h( h. ]& E8 u$ r
    % Initialize system parameters" _$ `* U# y- {# e  I& x
    Fs = 10000000000; Rs = 200000000; nSamps = Fs/Rs; rollOff = 0.8; M=4;
    ; a/ }5 v8 E; B7 g3 X! ahMod = comm.QPSKModulator; % comm.QPSKModulator System object* y3 V$ d- A3 u

    5 F! f# O  e6 v3 N% Square root raised cosine filters2 x. Z9 c2 A: u
    filtSpec = fdesign.pulseshaping(nSamps,'Square root raised cosine',...+ R4 W% ]( d( L5 F% Q8 }
        'Nsym,Beta',6,rollOff);
    4 `) q7 h0 }+ T, v9 {0 P! M% {hTxFlt = design(filtSpec); hTxFlt.PersistentMemory = true;* T  ^; t# V7 C& p
    hRxFlt = copy(hTxFlt); hTxFlt.Numerator = hTxFlt.Numerator*nSamps;9 s+ c& q4 f/ n+ ~( H# t. D

    3 D" D" A& ^! q: J0 R4 r! U% Generate modulated and pulse shaped signal0 b0 H$ A8 P! a: j, g
    frameLen = 1258;
    & {. V. h& K0 rmsgData = randi([0 M-1],frameLen,1);
    3 K8 K7 v& C0 G* M3 U- U. m3 `' XmsgSymbols = step(hMod, msgData);4 X6 s0 S% y  b5 g. @2 _
    msgTx = hTxFlt.filter(upsample(msgSymbols, nSamps));3 W% ~3 A! p$ r6 \# n4 I# k- ^

    & X8 E2 q  {1 L0 q) s! J1 \t = 0:1/Fs:100/Rs-1/Fs; idx = round(t*Fs+1);7 }) c* z. r: l( }% x  G
    hFig = figure; plot(t, real(msgTx(idx)));/ ?3 v" I/ G/ ?2 e1 p
    title('Modulated, filtered in-phase signal');
    " j' u: V1 G% K% J$ V4 D3 S3 Vxlabel('Time (sec)'); ylabel('Amplitude'); grid on;
    2 i$ k1 e% _) v5 W. b8 m) c! H
    $ D4 e+ Z( V: z) |7 usave('pqfile1.txt', 'msgTx','-ASCII')
    1 V. f7 b, w* _9 e% T2 N9 Z
    - H: J# K1 ^. ~1 z3 V. N% Manage the figures, k9 j( [& X1 I
    managescattereyefig(hFig);3 N5 q- h* a+ b, d$ c

    & F0 s0 `) E6 A# A  R8 |, E" B7 O  Y9 T! p4 O5 }# y! B
    % Create an eye diagram object
    ) s, K5 k# H* C4 X8 zeyeObj = commscope.eyediagram(...) u8 ^5 p7 ^" G4 r) M
        'SamplingFrequency', Fs, ...# v5 A) N+ Q1 y
        'SamplesPerSymbol', nSamps, ..., P. L8 b5 k, N! k
        'MinimumAmplitude', -1.4, ...
    * X0 d" s& P- S, T! R; u+ _    'MaximumAmplitude', 1.4, ...& U! @1 U- _' q2 j) ?: p+ R2 T
        'SamplingFrequency', Fs, ...
    1 v8 V: O6 S& P+ s% ~    'SamplesPerSymbol', nSamps, ...
    ) K+ @$ n$ g6 E2 ?' Y- w    'OperationMode', 'Complex Signal')* y% Q8 d0 S% W* t8 d9 O9 i- Y: e
    + T9 `1 v" y3 x! M) U5 c
    % Update the eye diagram object with the transmitted signal" o( \5 R/ M4 s$ S! g$ f
    eyeObj.update(msgTx);
    9 |6 P9 M2 `% p1 F5 C' f; \' k4 k3 j5 I( c6 p/ C2 s% d
    % Manage the figures7 C& n* H7 O* V1 e7 z1 a

    & H; h. I# w4 r" O! r: Hanalyze(eyeObj);
    8 p3 Q( M8 m  M' _9 Y1 t2 k' GeyeObj.Measurements
    $ Q& s8 X4 l2 \+ g# W- y0 z///////////////////////////////////////////////////////////////////////////////////////////////! l/ K2 d# x8 l+ m( r. b! h; D
    6 _3 b3 b" z  Y. v
    然后读入pqfile1.txt文件,代码如下:# G+ W% _- g( n% R6 c2 }
    //////////////////////////////////////////////////////////////////////////////////////////////
    & i; |# ^& l7 ~% A: V/ o5 `( X+ `' P; Lclear3 z) {* p4 l3 u+ U1 E' V
    close all
    ( h3 F0 c# k& Q0 V5 F! s, i2 W" K6 F+ @& X
    Fs = 10000000000; Rs = 200000000; nSamps = Fs/Rs;
    + }: R) D- H( H; B* r3 T4 f& O* K& M, E3 m
    filename ='pqfile1.txt';
    $ {0 v7 b: j8 w1 F& a: W4 y5 Kfid=fopen(filename,'r');
    " ?5 I; ^" |' b[code,count]=fscanf(fid,'%f',62900);1 G; `# b$ Z! k

    8 C4 E- f8 ?0 n+ W4 a8 X& d% Create an eye diagram and display properties0 I: W/ T9 K; D' V" _1 P
    eyeObj = commscope.eyediagram(...
    & D; n* o! a2 w: w* A4 o    'SamplingFrequency', Fs, ...3 r8 u# |6 q* ^) L7 l0 e4 b, K6 }# j7 L
        'SamplesPerSymbol', nSamps, ...5 a& T) y0 d7 O0 _( S! h
        'SymbolsPerTrace',2,...
    0 j% j& Z( X! v0 R; M1 u! i    'MinimumAmplitude', -1.4, ...
    5 V! r& B2 z% h    'MaximumAmplitude', 1.4, ...$ I- i. O1 z! b# x- b* e$ A5 A
        'PlotTimeOffse',0,...) |" |8 u5 ]- l1 B0 n8 _+ q
        'PlotType','2D Colo',..." S' P' N. I8 W+ \2 W/ W7 P2 U
        'ColorScale', 'log') %#ok8 J4 V# ?& @4 @

    3 X# q+ m3 y' G& H2 v" K! V, j5 Z, O) b9 z
    update(eyeObj, code);# x6 i/ U; [7 f6 ?8 N
    title('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
    + ~* t# a; p1 T3 u2 ]' yanalyze(eyeObj);
    : n! B+ j- r: Y9 l, AeyeObj.Measurements
    5 ]% v" P; H3 a. r" I1 R- u0 u//////////////////////////////////////////////////////////////////////////////////////////////# z& h, k/ X: c2 _2 ^# K4 Z
    测量结果是:
    - w9 l! o5 y8 G% W* r+ T                     Type: 'Eye Diagram Measurements'
    % L9 S8 Q1 Y3 b              DisplayMode: 'Optimized for Real Signal'
    " b) X" Y5 S7 l: Z0 V          EyeCrossingTime: [2.4972e-09 7.5006e-09]
    % O) ?" K  b) x1 a7 a0 p1 |. w     EyeCrossingAmplitude: [-0.0109 -0.0117]* e6 k8 i$ h+ Z
                     EyeDelay: 4.9989e-097 ~3 g$ q+ l: M9 k
                     EyeLevel: [-0.8496 0.8484]( X- t/ D" L: A8 O
                 EyeAmplitude: 1.6980
    8 i! r' l! L6 y  M: f+ V                EyeHeight: 1.0287
    ' Q( V9 e  D9 X+ n$ z4 r" A- }    EyeCrossingPercentage: 49.3703, Z. o& G9 H# |/ i" \& q7 S) n6 u
           EyeOpeningVertical: 0.67238 l' w5 o* A8 R
                       EyeSNR: 7.6107
    " x* d2 h) X( q$ j1 r            QualityFactor: 13.1948
    5 o4 i! F1 J( a, p8 y" X7 u                 EyeWidth: 4.3069e-09
    5 f1 b1 T8 e5 P     EyeOpeningHorizontal: 4.8000e-09
    , D8 E8 A2 c; V) Q4 }5 S             JitterRandom: 0
    1 C  }, p3 r' ]      JitterDeterministic: 2.0000e-10- l2 Z+ p: M" O& I" N
                  JitterTotal: 2.0000e-104 P5 J3 x+ Q  B% b
                    JitterRMS: 1.0180e-108 U9 Z5 x* w4 L& O- ?9 j5 w
             JitterPeakToPeak: 2.4000e-09
    5 H; Y4 r" ^% O6 w              EyeRiseTime: 2.1848e-099 {- t) H6 V6 ^9 z3 f- u
                  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 7 v  p9 e" ?+ j6 Y& ?
    楼主,有问题:! C" o$ N; W# H
    1,400MHz 的时钟是差分信号吗?4 T0 @6 A4 V$ l4 n3 C. q+ s
    2,你的数据中UI才100个, 确实短了。
    : [+ z1 r! y: |( c( c2 G) q. a
    例如在ansoft designer 里面
    8 D7 c- Q$ C( c6 A- p  t/ v
    5 _4 P& r2 s& e3 ^7 f( x数据码元用的是 V_PRBS_JITTER8 W" X" a+ [1 j8 A- u
    TR=TF=5E-11) z; B5 z7 ~9 _6 T9 \* l7 X9 ?
    BITWIDTH=2.5E-9
    * T8 @" Q2 ]  x! `; V0 C" b+ G* }5 Q+ s
    仿真时间长度5us
    9 j, v, q( ^' {& }1 }: n( S  J3 @, }. O4 k: X/ W4 x% M
    导出数据的时候选择的step=100ps
    # i! K& C1 f; a+ L$ y
    0 e9 v( E( y0 r* S6 K5 g" i' P是否这里的采样频率就可以理解为 Fs=100ps?
    7 B5 D% @; K2 R因为DQS的时钟周期长度是5ns,每个码元的时间是2.5ns,所以每个码元的采样点数为2500/100=25个' r% V, [  t9 {% A3 A& E0 |% O+ n

    + e! u. M8 S) X( E  X0 I目前这样的数据导出再导入到matlab里面无法计算

    该用户从未签到

    6#
    发表于 2012-7-6 09:23 | 只看该作者
    导出数据的时候选择的step=100ps. L1 J, f4 R& O+ @
    是否这里的采样频率就可以理解为 Fs=100ps?0 H3 q3 M& c# F6 T" y& z; {3 ]
    step是采样的步长吧。采样频率应该是步长的倒数。8 g/ d' {" L2 v  y0 X

    该用户从未签到

    7#
    发表于 2012-7-6 09:33 | 只看该作者
    估计牵涉的函数也有好几个。 这样吧,你看提示错误在哪个函数, 去查代码。& k: K& P3 e! W% k4 {
    Error using calcEyeCrossingTime (line 67)4 B3 X7 I+ u: h* c  U8 {
    Error in commscope.eyemeasurements/analyze (line 85); j& b% L! [4 I5 M4 i
    Error in commscope.eyediagram/analyze (line 85)
    * x. m0 w! q9 Q7 l$ U/ L  jError in Untitled (line 24)。
    : A- |+ G6 r4 I! v, ^2 s$ O" `% nThe ANALYZE method cannot determine crossing times. Check measurement setup values in the MeasurementsSetup property. Also, the collected data may not be valid. See
    6 p2 g# l% ^( P- O" ~0 L6 @documentation for description of valid eye diagrams.7 T$ E8 B1 y+ u+ u3 a
    从这句话分析,我认为触发信号由于一个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-3 09:15 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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