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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    请教关于MATLAB读入外部数据进行眼图分析的过程的问题! Q9 H  U* k7 @  H6 I
    , {! g; B# S6 b- V9 w  m9 }
    使用的是MATLAB2012A的环境& V; {. {3 a6 q3 D4 z8 {1 P: |
    & _" q5 g/ p/ {' [0 r
    , m' d9 ^" ^0 L9 p- u  g. _  J4 }
    现在有2组数据,clk与data# Y" h( o0 U% z( ?9 V0 E& p
    时钟的频率是400MHz(周期是5ns,脉宽是2.5ns),取样频率5ps,此时采集时间为500ns,共有数据点10万个
    8 U1 o& ^# r+ @+ v5 j! A时钟沿在每个码元的中间进行触发,时序关系是间隔2.5ns$ @4 f# ]% w2 h% B8 X

    . `  A- B7 F6 C  L但是使用“commscope.eyediagram”进行测量时提示错误:1 v, O' \8 h1 M% B. I# U  b& V

    ' S5 n& {) n( p$ ~$ D: ~; X+ aWarning: The eye diagram does not have enough data. Analysis results may not be
      M) Z2 d2 t) [; z0 e: Uaccurate. To improve accuracy, enter more data using the UPDATE method.
    4 `  b- J* f( P* x> In commscope.eyemeasurements.analyze at 70( {0 B6 C7 b5 l2 N  V0 Z
      In commscope.eyediagram.analyze at 85% n" q% d4 ~' o% G, C# F! k, l
      In Untitled at 24 ! w$ Z( [2 a, A  M; A# {
    Error using calcEyeCrossingTime (line 67)3 b& ~1 J. V  t+ e9 J+ x2 d3 q+ n
    The ANALYZE method cannot determine crossing times. Check measurement setup values in
      X3 D# j6 v) g" t1 G0 othe MeasurementsSetup property. Also, the collected data may not be valid. See* f" w$ A* b8 P* d# W, N
    documentation for description of valid eye diagrams.
    4 L/ Q: S' j! R2 R
    + j. w6 `! |& V8 ]% w$ Z' s9 X9 mError in commscope.eyemeasurements/analyze (line 85)1 |: N; j5 C& T5 {% p0 L
    calcEyeCrossingTime(this,...; `1 n" I. q1 Z7 s, k7 J
    : w" Q2 z( |) B. \2 m! D5 S
    Error in commscope.eyediagram/analyze (line 85)
    0 j  @* p( |0 C" P5 |9 t7 V    this.Measurements.analyze(this);
    % u; f! q( E6 l' X! I  ^) c. }. t' r+ D8 m* _
    Error in Untitled (line 24)5 s6 b4 d7 u, q& _
    analyze(eyeObj);
    1 B3 k6 g  T5 d' @# U4 G& J6 W. N  Y2 l

    / b7 F% T! _" a5 i$ A怎么理解“The eye diagram does not have enough data”,按照时钟数据,波形有100个,为何还不够?; U' q" B9 ~5 D0 l. J
    : n' l9 w" ]4 e- c# |, S
    而且读入clk后显示的眼图感觉也不太对
    & g5 x1 B* l1 U# W2 m% H: c3 h
    0 D! E$ A4 g. X1 {请熟悉眼图的朋友帮分析一下错误的地方在哪里/ ]6 i: L; E- H( M
    9 y$ @# P: r+ _, M
    简单的代码如下:
    7 u+ ?! [% H, L( m1 W# P+ {, cclear
    7 c* q$ ]" s$ g2 a2 Q+ n6 W" s% eclose all
    , M3 k9 R& c& b3 Y' v4 V4 x9 T1 W/ Y
    %filename ='F:\clk.txt';+ u6 ~6 a  R1 ~% F; F1 ?8 ^8 |
    filename ='F:\data.txt';
    . O+ [; V! i' \* Afid=fopen(filename,'r');
    7 N3 n# V" i$ ~9 a[code,count]=fscanf(fid,'%f',100000);9 l/ m: I8 G% Q0 ^7 x: a
    plot(code);
    5 l& z8 _0 w, X8 ~1 A' Y( q6 h/ @! U( e
    % Create an eye diagram and display properties
    / x+ b% f( }, s3 }* teyeObj = commscope.eyediagram(...% ?0 A, ^2 w+ g1 K1 Z
        'SamplingFrequency', 200000000000, ...2 V) {! ?8 @, s: \0 ~8 E& C
        'SamplesPerSymbol', 500, ...8 t. h1 t  u+ G, a  E" Q* E
        'SymbolsPerTrace',2,...2 T4 L/ g0 v5 x7 V
        'MinimumAmplitude', 0.4, ..." i- Q% K1 F' n
        'MaximumAmplitude', 1.4, ...
    & V2 p1 y5 ~/ `" q6 {' q    'PlotTimeOffse',0,...2 `) G, e0 L' p" \1 {$ j
        'PlotType','2D Colo',...
    + t3 A* J1 ^. V  ^    'ColorScale', 'log') %#ok, L6 {3 H/ A1 i

    ; V% H; t; C/ _2 T0 A
    , Z3 u% M& P( T6 qupdate(eyeObj, code);- P6 ^: E3 J/ ^, ?
    title('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
    ! a) y' a) W& n* b; A2 n7 c* _! s9 ganalyze(eyeObj);7 O( Q, |0 x) z! D( b
    eyeObj.Measurements9 \' ]% I. x9 [( _& A9 |% M
    9 P+ q9 C4 E4 p8 _* w

    8 Q" l5 N" H* n( t; w" t* X& K
    - _* f7 n) v) n0 Z& O7 | clk.rar (239.37 KB, 下载次数: 14) & c& M& n5 X4 Q# Q& @1 w8 I
    data.rar (232.47 KB, 下载次数: 13)

    该用户从未签到

    2#
    发表于 2012-7-5 15:18 | 只看该作者
    楼主,有问题:
    ; P8 R* e0 Z3 L. M+ q7 [1,400MHz 的时钟是差分信号吗?
      J* Q' O+ f$ x4 l2,你的数据中UI才100个, 确实短了。$ ?& w# H* X# y2 M2 N6 d
    3,主要问题出在 commscope.eyediagram,而这个函数你未提供。分析该函数,就应该能找到问题的根源。
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2012-7-5 18:07 | 只看该作者
    yejialu 发表于 2012-7-5 15:18
    $ H, Q  \* X  i  ^楼主,有问题:/ H0 ^( b& R  t5 J+ m, g
    1,400MHz 的时钟是差分信号吗?" A" R- e) \' V' g, B/ P6 k  j
    2,你的数据中UI才100个, 确实短了。

    ( i% r# v4 G- R  t9 D3 x/ \commscope.eyediagram+ r: b; t' s( C
    是在2012版本才有的 ,旧版本估计没有这个函数' x# P: n0 m2 x( l% K3 d+ h# |
    4 P! d- Q/ j" Q3 \( W! G; e9 q
  • TA的每日心情
    擦汗
    2020-1-14 15:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
     楼主| 发表于 2012-7-5 18:55 | 只看该作者
    不太情况是哪里的设置问题,首先我用MATLAB自带的函数产生了一个码元数据,然后丢给眼图分析函数
    ; x" ^/ i- M) x- u7 E: v
    * A4 C3 O9 L1 h, ^! D1 A代码如下:
    : e; p. V+ b/ y/ i///////////////////////////////////////////////////////////////////////////////////////////////
      b4 L1 d3 b+ H2 M+ Lclear
    9 \2 @  J  k& u- v- }" Jclose all! o/ y2 g  b4 Y9 D
       
    ) Q" Z2 F6 P$ m* r% Initialize system parameters
    # J$ i. }  R) X' C6 K( F  IFs = 10000000000; Rs = 200000000; nSamps = Fs/Rs; rollOff = 0.8; M=4;1 q" _4 t4 M9 o3 _$ n/ Q. p* d2 G
    hMod = comm.QPSKModulator; % comm.QPSKModulator System object6 a6 J3 l; W& ~! U8 R" Y0 L

    - s9 v7 }! ?2 J% Square root raised cosine filters+ U6 i  O" \' P; A& X
    filtSpec = fdesign.pulseshaping(nSamps,'Square root raised cosine',...) O& B. p" D& g- o2 R
        'Nsym,Beta',6,rollOff);- E& Z1 k/ L$ o7 _  m  {3 t
    hTxFlt = design(filtSpec); hTxFlt.PersistentMemory = true;
    - L" I- ^$ {& x/ C6 Z& |) ohRxFlt = copy(hTxFlt); hTxFlt.Numerator = hTxFlt.Numerator*nSamps;8 u! e& U1 t) L% b- y9 N* S- [) E
    - T$ E' \0 _$ Y
    % Generate modulated and pulse shaped signal0 L" W$ n: r  d$ l0 }
    frameLen = 1258;8 |3 Y& T9 P. u! J: u# g8 ?' O
    msgData = randi([0 M-1],frameLen,1);9 C! ?; v% @: Q; J
    msgSymbols = step(hMod, msgData);# l- ?, _; r0 U
    msgTx = hTxFlt.filter(upsample(msgSymbols, nSamps));
    6 w. u( L" w& ~3 `0 @' p
    ! \& p0 W6 h0 ~t = 0:1/Fs:100/Rs-1/Fs; idx = round(t*Fs+1);4 {& ~# p- l, O7 b
    hFig = figure; plot(t, real(msgTx(idx)));6 |: V  {4 C, x6 z8 i8 D
    title('Modulated, filtered in-phase signal');
    # W, }' t. b$ {  Bxlabel('Time (sec)'); ylabel('Amplitude'); grid on;! _; P2 ?7 ^1 f4 w5 O5 w

    / X3 e8 x) m7 f! xsave('pqfile1.txt', 'msgTx','-ASCII'); E+ b0 S9 b' a
    3 k: \* _4 y" R
    % Manage the figures
    . t% K' [' ~4 v. \managescattereyefig(hFig);
    7 {1 j3 X, I4 B+ L% m; \% J, @% p9 Y* W
    " ]& Q5 Z6 f. w% ^0 X' e
    % Create an eye diagram object9 w) b; v2 S2 W, Z! [7 e9 ?& C
    eyeObj = commscope.eyediagram(...
    : ?* E) {4 b: K- ]* `    'SamplingFrequency', Fs, ...
    * k; W+ ]$ v; S. r" l    'SamplesPerSymbol', nSamps, ...% e. x8 Y3 T  b9 H. S% }, R) S9 J
        'MinimumAmplitude', -1.4, ...
    , n8 t9 u6 Y! i( b- c" W6 C    'MaximumAmplitude', 1.4, ...
    . k9 r% P, W4 P: j+ p; e    'SamplingFrequency', Fs, ...
    0 s9 q* S) }9 Y! w4 x6 Y# H8 F    'SamplesPerSymbol', nSamps, ...
    , u8 X2 p4 W9 l- l0 w0 j    'OperationMode', 'Complex Signal')
    8 L+ ~; B6 D" P0 B  q
    ' T7 m2 I  s5 S1 y0 m% Update the eye diagram object with the transmitted signal! _" D' M, ]8 v/ b: R' b% Y
    eyeObj.update(msgTx);( g& i8 @# n7 w7 N- O8 E0 {( b
    2 r+ N9 O9 [: @3 d( H( ~7 Y, V
    % Manage the figures* }0 t* ~0 c% \% I. Z
    $ F% S/ G6 H4 H* I* t# y
    analyze(eyeObj);) ~, F- V; P) `! q: }3 d8 z
    eyeObj.Measurements
    1 F8 ]( v$ Z$ c. b; ?& l9 b8 G///////////////////////////////////////////////////////////////////////////////////////////////
    3 z$ ~3 z5 v+ k
    " w- j2 r# S5 ^# L7 }. Y然后读入pqfile1.txt文件,代码如下:# f  ]9 x9 b- z+ A1 |" Q7 Y
    //////////////////////////////////////////////////////////////////////////////////////////////% X8 w( ?7 p) y& G
    clear
    4 `$ B" T9 L8 d% V- wclose all5 s( p: q1 N& ^1 m' k. V  f

    0 f. Y7 S+ m+ }6 N/ D2 V5 J, CFs = 10000000000; Rs = 200000000; nSamps = Fs/Rs;& s4 e& ?3 k/ n5 R5 P

    " O5 g. T& J/ Y6 X0 @8 f0 ]7 Pfilename ='pqfile1.txt';- w( t; q: |% {8 q* [3 Y
    fid=fopen(filename,'r');3 g6 c2 L* r! v  _2 \
    [code,count]=fscanf(fid,'%f',62900);8 x; q8 O. Z7 i3 d# v
    - p4 s3 h: ~* _2 @7 N
    % Create an eye diagram and display properties5 _6 y. N& g  w+ Q3 j5 G$ W
    eyeObj = commscope.eyediagram(...
    2 e2 Z$ s' f. C    'SamplingFrequency', Fs, ...
    9 v/ C2 R4 ?* K    'SamplesPerSymbol', nSamps, ...
    # e- f6 |+ W9 f$ o    'SymbolsPerTrace',2,...1 h9 I# \0 |# f7 x, H6 ~9 o
        'MinimumAmplitude', -1.4, ...2 q" c# `9 x& O( C
        'MaximumAmplitude', 1.4, ...7 v2 `" z3 I* K9 [, o) [' D
        'PlotTimeOffse',0,...
    1 C! ~$ _9 Z: H    'PlotType','2D Colo',...: y5 Q4 s  e, k' _
        'ColorScale', 'log') %#ok0 q- J9 E8 n! n8 q( V5 [8 a; e
    6 N3 l- O9 N3 C& P# X
    ' E$ w5 W+ z. j/ }+ ^
    update(eyeObj, code);
    3 J" E# J1 H# E- s0 y& a0 x+ }title('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
    0 L6 x8 Z. s3 ?6 t" u8 W& kanalyze(eyeObj);
    2 B9 X) N$ u. k: F2 _5 geyeObj.Measurements
    $ a- R! ?' }8 q( A//////////////////////////////////////////////////////////////////////////////////////////////
    ) u+ R4 `, }% T" u" k1 y测量结果是:
    8 \5 [+ f3 U8 s1 J                     Type: 'Eye Diagram Measurements'" }2 e  B) W3 N) D9 E
                  DisplayMode: 'Optimized for Real Signal'& ^( l' G6 P/ n2 b. Q$ n* i+ q
              EyeCrossingTime: [2.4972e-09 7.5006e-09]
      j( B9 w2 T6 [) ]1 N! z3 U: u     EyeCrossingAmplitude: [-0.0109 -0.0117]
    9 [6 ~8 n( v' ~1 U- Q0 U  f* _2 {                 EyeDelay: 4.9989e-09
    ( M8 T) ^) I8 w1 b  `. j8 F                 EyeLevel: [-0.8496 0.8484]
    - _3 S: r6 b, t; [% K             EyeAmplitude: 1.69805 L, a0 a3 f$ A$ l. M4 O  H* _
                    EyeHeight: 1.0287
    * P9 `4 I+ b/ _. Q  u# e    EyeCrossingPercentage: 49.3703' e  o) G9 ~4 q
           EyeOpeningVertical: 0.6723
    : Z; K. r! e5 E. J  F+ s$ N  \                   EyeSNR: 7.6107
    , n6 Y  ~& Y3 l9 K8 y            QualityFactor: 13.19480 C( J4 h, M9 `. ], z- F8 s2 k$ G
                     EyeWidth: 4.3069e-09; N. U1 y' a$ @2 G) A, e
         EyeOpeningHorizontal: 4.8000e-09! u/ ]$ Y2 K1 e3 \
                 JitterRandom: 0
    9 {% e1 x# }3 \: a3 u8 E      JitterDeterministic: 2.0000e-10/ v( ]0 |7 s1 Q8 F% ^/ ~" |
                  JitterTotal: 2.0000e-10* l% F) b/ B+ ?5 b
                    JitterRMS: 1.0180e-10) s! H! m$ y; r3 c  _# Q% b
             JitterPeakToPeak: 2.4000e-092 [! |. N3 R4 M# V9 G% \$ N8 b) q
                  EyeRiseTime: 2.1848e-096 A9 ?' n* f5 e
                  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
    & c; {0 p8 L) W楼主,有问题:! I$ s2 l  |2 w
    1,400MHz 的时钟是差分信号吗?
    # v# t& I+ ~% p& l8 \2,你的数据中UI才100个, 确实短了。
    ' p0 w0 A3 _* V
    例如在ansoft designer 里面
    / R+ l9 L# B! p# a9 |; L- [* F; e7 T; E
    数据码元用的是 V_PRBS_JITTER
    6 I+ T5 r5 m- `' ^+ `+ i: ITR=TF=5E-117 r, N  ]: V/ V8 ~" B
    BITWIDTH=2.5E-9
    1 L' e3 _9 m2 m& t) C* w( P- B' g' ]) q' m7 q6 m3 T+ Y
    仿真时间长度5us
    2 E0 t8 U8 n$ O4 l7 A- S% ~) W  n
    5 L- p' c" N9 l导出数据的时候选择的step=100ps8 @7 C# M. }+ [3 `8 v
    * d: a( e' `4 T9 f: \
    是否这里的采样频率就可以理解为 Fs=100ps?8 c4 b3 F( R9 I: U$ R4 X
    因为DQS的时钟周期长度是5ns,每个码元的时间是2.5ns,所以每个码元的采样点数为2500/100=25个
    : J( R  ~$ ?$ N. |; t3 x# J% ?
    : O; B1 n4 N8 ?+ R4 `! O# y目前这样的数据导出再导入到matlab里面无法计算

    该用户从未签到

    6#
    发表于 2012-7-6 09:23 | 只看该作者
    导出数据的时候选择的step=100ps7 b: z# W3 M& }$ X( H; D
    是否这里的采样频率就可以理解为 Fs=100ps?# E! }, X- b4 ]) @
    step是采样的步长吧。采样频率应该是步长的倒数。9 a# ~8 g2 e8 P3 D9 S( d! r  p

    该用户从未签到

    7#
    发表于 2012-7-6 09:33 | 只看该作者
    估计牵涉的函数也有好几个。 这样吧,你看提示错误在哪个函数, 去查代码。! q, v# l& t; w% r8 e
    Error using calcEyeCrossingTime (line 67): j2 k7 n/ B+ t5 x# B$ C1 B  W
    Error in commscope.eyemeasurements/analyze (line 85)
    0 j9 M1 |2 f) `- ?Error in commscope.eyediagram/analyze (line 85)
    0 v6 i9 e$ U/ q  L, nError in Untitled (line 24)。
    / {7 O( o1 H( p+ i. J9 HThe ANALYZE method cannot determine crossing times. Check measurement setup values in the MeasurementsSetup property. Also, the collected data may not be valid. See
    5 p% ]5 u% \$ A' n0 J2 u9 ?documentation for description of valid eye diagrams., a, p- V6 o/ |" F, T! w$ 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-8-2 01:51 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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