找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 3037|回复: 7
打印 上一主题 下一主题

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

[复制链接]

604

主题

2859

帖子

1万

积分

EDA365版主(50)

Rank: 5

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

EDA365欢迎您!

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

x
请教关于MATLAB读入外部数据进行眼图分析的过程的问题, R0 ^2 `, X  f' D) D2 z. b
6 q' f6 F" G7 X$ E
使用的是MATLAB2012A的环境3 l% U7 @8 K* L) t9 n

( @. Z# O6 Z2 {  |  G' n$ ~3 ^3 I& @7 I. [- W
现在有2组数据,clk与data
. V; f# r* a: A6 j1 x  t5 y时钟的频率是400MHz(周期是5ns,脉宽是2.5ns),取样频率5ps,此时采集时间为500ns,共有数据点10万个
/ G9 N0 f6 W' i( u% H! p/ Z  q时钟沿在每个码元的中间进行触发,时序关系是间隔2.5ns
. H; {$ |4 ]9 s: B- B
8 s+ [' [; G0 Z1 V8 r但是使用“commscope.eyediagram”进行测量时提示错误:
  O$ d/ f  k# g' _# ]6 r* Z/ q5 L! F
Warning: The eye diagram does not have enough data. Analysis results may not be& D* r/ ]& R- Q6 H3 ?
accurate. To improve accuracy, enter more data using the UPDATE method.   j; _$ W$ p. q( @
> In commscope.eyemeasurements.analyze at 70# E9 L) d6 T$ R+ g  V2 m' f6 h" [
  In commscope.eyediagram.analyze at 85
; ?* e+ l8 X4 Z' {  In Untitled at 24 3 \* c5 v# ?) l2 w
Error using calcEyeCrossingTime (line 67)4 @+ \: c( z* m& H0 @
The ANALYZE method cannot determine crossing times. Check measurement setup values in- o5 H+ m; q4 Z; L! \8 s! o
the MeasurementsSetup property. Also, the collected data may not be valid. See
* ~: w- w7 U' r" C, _. B2 P' ]3 Mdocumentation for description of valid eye diagrams.
# k* _; X" t2 |( \
) w1 Y* `" \9 ^! U3 A. @( TError in commscope.eyemeasurements/analyze (line 85)
* q; P- Z$ q/ YcalcEyeCrossingTime(this,...
' u! c5 u  R( l
3 `  r% n% S( @9 O7 C% RError in commscope.eyediagram/analyze (line 85)
) g& y8 W7 C+ b% L7 v    this.Measurements.analyze(this);% o7 k$ I# V" p  k! L- |8 u. Q: d

0 F* N% ]) x; Z2 }Error in Untitled (line 24)
% F+ H1 t( x( w' t, [" Wanalyze(eyeObj);
6 i* F( R; t, B7 l
) X: \8 Q7 e0 G8 A4 a8 Q; O& E6 [
怎么理解“The eye diagram does not have enough data”,按照时钟数据,波形有100个,为何还不够?/ e9 y: C( L9 _7 `" b- @4 ~- n& f! C
, ]1 A6 S8 a6 A/ B# c7 b
而且读入clk后显示的眼图感觉也不太对
5 r: D+ j. t1 Y" e/ J7 c4 T; V1 b* c# z6 G, I4 v
请熟悉眼图的朋友帮分析一下错误的地方在哪里
, F2 f1 D8 T2 }) J4 [4 a7 @# c' T7 x# \
简单的代码如下:
3 z% Q3 |1 Y  Z* {5 \8 |clear3 p9 A' X* A  e' H6 o2 a
close all
$ B. y/ T0 I6 E1 u  v; A  V5 Z+ _4 q7 S1 o  J. I5 g
%filename ='F:\clk.txt';
* d4 O9 k+ T" b! W( Zfilename ='F:\data.txt';% B" x: Z4 }6 \3 [
fid=fopen(filename,'r');# k& T$ k7 l( g# W' J
[code,count]=fscanf(fid,'%f',100000);6 l' B2 A$ C* s9 [, y# G
plot(code);# x  J& j$ R: ~8 P# z% o

. M5 h( i/ ^: o% Create an eye diagram and display properties
# x  ~& g7 R/ `% weyeObj = commscope.eyediagram(.... P; G6 e7 Q4 W
    'SamplingFrequency', 200000000000, ...' k. `* E" l- H, m0 Z
    'SamplesPerSymbol', 500, ...
# O& f- z* a% z    'SymbolsPerTrace',2,...
4 C9 Y% k4 y6 h    'MinimumAmplitude', 0.4, ...
  A: D' I2 D6 z3 m7 E( _    'MaximumAmplitude', 1.4, ...
" p% x( a1 I* p! y+ S  j    'PlotTimeOffse',0,...
/ b9 a' V# q8 @8 E& n    'PlotType','2D Colo',...' S8 Z4 ~- q. U0 {4 B5 G! o
    'ColorScale', 'log') %#ok; w* v/ R1 d& J6 X; s
' c  P3 c  z6 h  o5 M2 @$ g& |! A/ R

: A+ r9 w3 Z% G9 cupdate(eyeObj, code);# M: `$ k1 r- q/ A- H1 y3 |
title('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
" ^6 c1 M6 V; M, ^& {/ janalyze(eyeObj);
0 o% l$ Z) j3 d- d& ?4 O2 O; S5 veyeObj.Measurements5 I" i; p6 x- V% c7 L  \4 O

4 K4 d5 p( J# |! {2 x' {! i % w8 v) h0 e: u' v# \' [8 J" t

0 E, f  b8 z7 ^, p6 [: Q% a/ L clk.rar (239.37 KB, 下载次数: 12) ; {% a. [' @# b' d% [; p* \
data.rar (232.47 KB, 下载次数: 11)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

2

主题

157

帖子

999

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
999
2#
发表于 2012-7-5 15:18 | 只看该作者
楼主,有问题:
. K! `6 p  w& e% @4 T1,400MHz 的时钟是差分信号吗?, W: a$ \5 s5 e2 B
2,你的数据中UI才100个, 确实短了。
! {8 l: m: H6 \8 \3,主要问题出在 commscope.eyediagram,而这个函数你未提供。分析该函数,就应该能找到问题的根源。
我做SI有两年了, 刚刚入门呀, 希望和大家多多谈论。

604

主题

2859

帖子

1万

积分

EDA365版主(50)

Rank: 5

积分
13638
3#
 楼主| 发表于 2012-7-5 18:07 | 只看该作者
yejialu 发表于 2012-7-5 15:18 ) \# z' e, g0 v
楼主,有问题:* h" Y7 M5 i4 g/ h  z% Y
1,400MHz 的时钟是差分信号吗?
5 L2 ^% [1 F; A6 Z2,你的数据中UI才100个, 确实短了。
0 D- T: J, Z  u. z! U8 m2 u
commscope.eyediagram* O- p+ x( @& U% @$ ?
是在2012版本才有的 ,旧版本估计没有这个函数7 o3 ~9 o: ^- _7 q* s
/ q: j; I& q% o

604

主题

2859

帖子

1万

积分

EDA365版主(50)

Rank: 5

积分
13638
4#
 楼主| 发表于 2012-7-5 18:55 | 只看该作者
不太情况是哪里的设置问题,首先我用MATLAB自带的函数产生了一个码元数据,然后丢给眼图分析函数8 u/ U5 u3 X! e7 B2 S, i; G
" s- Q6 A- a! i$ [2 c0 A
代码如下:
7 q. x6 N6 m7 a# ~///////////////////////////////////////////////////////////////////////////////////////////////1 J$ Z1 M& p7 ]6 u! c8 j/ n
clear$ l; ?0 e* k$ g" }
close all1 O5 l1 |! c8 \1 e" l
   
6 [& X% i/ r, Q% Initialize system parameters/ G% U1 w6 J5 Y8 z; D1 X- S- U# M
Fs = 10000000000; Rs = 200000000; nSamps = Fs/Rs; rollOff = 0.8; M=4;5 C4 {- v* |' x2 T( w1 J% _& n0 h
hMod = comm.QPSKModulator; % comm.QPSKModulator System object
9 I  D* ?5 d# c2 l) g/ p
& _5 \# t# A2 G$ u3 x( E( Z% Square root raised cosine filters6 ]6 }9 ]1 ?- `8 c3 a1 X8 ^
filtSpec = fdesign.pulseshaping(nSamps,'Square root raised cosine',...) F: T: a  i/ l- c; y: G2 c
    'Nsym,Beta',6,rollOff);
0 |" X# h7 G; v9 u1 }hTxFlt = design(filtSpec); hTxFlt.PersistentMemory = true;
  V4 g/ I# l7 u, Q  ^1 {* B1 Z- ohRxFlt = copy(hTxFlt); hTxFlt.Numerator = hTxFlt.Numerator*nSamps;
; \4 k( t5 V) W
1 @1 K7 U8 n5 U4 Q% Generate modulated and pulse shaped signal5 Y* l$ Z; y, O6 Y  T) B+ v
frameLen = 1258;+ ^4 F# m1 U1 i, |/ Z
msgData = randi([0 M-1],frameLen,1);
) }. U- j1 ^2 MmsgSymbols = step(hMod, msgData);, h9 _( _5 L' T. x5 r
msgTx = hTxFlt.filter(upsample(msgSymbols, nSamps));
) |" c( \" W9 I( e3 l( o% P  ?2 i" v5 H
t = 0:1/Fs:100/Rs-1/Fs; idx = round(t*Fs+1);+ t  a6 X! s& T
hFig = figure; plot(t, real(msgTx(idx)));" }9 }" Z/ O  ^8 u3 F9 v9 _5 L
title('Modulated, filtered in-phase signal');5 T/ ^! V8 w' p1 ~+ B/ M
xlabel('Time (sec)'); ylabel('Amplitude'); grid on;
, d2 E# g% Z" I, `6 V0 ^  f8 P4 V( @: l3 S$ j( \7 m' O
save('pqfile1.txt', 'msgTx','-ASCII')1 c& h# D: D; m/ c

* q% ?4 ~  y4 X2 L. i6 v% Manage the figures
" h7 L, T) n0 z% a) U6 `managescattereyefig(hFig);
0 Q- D9 K/ i  O6 g' B: ^2 c; D- e: {9 q8 B( Q" {. D2 D  o* z* I

2 N& |+ T7 n0 u) ^) {* U% w% Create an eye diagram object
& w( H. f+ s5 w; O3 m7 zeyeObj = commscope.eyediagram(.... B) h, i( s& X" v5 o% @1 @' ]
    'SamplingFrequency', Fs, ...
+ w6 J9 z9 r  S6 a4 C    'SamplesPerSymbol', nSamps, ...
( T; k. O+ n$ N5 q" l1 J) T    'MinimumAmplitude', -1.4, ...
9 b! D7 j5 V+ y' K) |    'MaximumAmplitude', 1.4, ...
6 W& `7 a. ^( u# k2 w3 `    'SamplingFrequency', Fs, ...3 {/ S& D* I1 p1 f
    'SamplesPerSymbol', nSamps, ...
8 u& L. k4 k+ c    'OperationMode', 'Complex Signal')5 R  A8 C+ |5 L, j; ^8 u7 @
! s- V: L4 K/ J3 \# Q
% Update the eye diagram object with the transmitted signal( v4 d& ^6 J; Y/ {! j: b
eyeObj.update(msgTx);
/ u+ m1 x/ Q- E  t0 ^- A4 G
6 y/ b  V# `6 _0 e' \% Manage the figures$ ]% U/ z: Q2 G1 h. F5 f2 V0 \- n
$ q6 x5 G# u& n' F2 b# E
analyze(eyeObj);
' c% t# ]6 x) V% k9 ReyeObj.Measurements
. d: G: k5 @  ~3 s+ F* o///////////////////////////////////////////////////////////////////////////////////////////////7 F& F5 }. h- L7 j2 N7 O% d2 Z  w

$ J  t/ R2 J( i, k) w3 n然后读入pqfile1.txt文件,代码如下:, {+ P9 l: ^' W" {
//////////////////////////////////////////////////////////////////////////////////////////////- @; k4 p$ A3 v# _: f. Q; [
clear
& _" ]$ f, [, }' C6 u8 xclose all
% e0 `- z4 u/ _" {# z" c6 t, @/ K: j( P2 x
Fs = 10000000000; Rs = 200000000; nSamps = Fs/Rs;
, U# q2 |$ k6 h* ^5 @* q) Y6 @" l' p: [3 r4 \
filename ='pqfile1.txt';
8 e0 e/ J6 {+ P: w/ ^fid=fopen(filename,'r');0 Y; {7 f7 b  c0 P# i# V- z
[code,count]=fscanf(fid,'%f',62900);8 U3 Z# @/ ]7 J- }

- X$ `/ P* s" c: i, {% L; Y% Create an eye diagram and display properties0 }9 d9 Q- y' Y9 R
eyeObj = commscope.eyediagram(...
7 }2 |) ^5 H& v8 i# F9 p0 ]8 w    'SamplingFrequency', Fs, .... n4 L# m2 \/ n
    'SamplesPerSymbol', nSamps, ...  o6 A$ H. W, @+ g; v  b
    'SymbolsPerTrace',2,...
* z& v3 F1 Z+ N    'MinimumAmplitude', -1.4, ...4 e5 A) O- O8 U. D3 B+ V( v) H8 S
    'MaximumAmplitude', 1.4, ...1 R% g% F; [# v5 u0 i3 ?1 }. U* q
    'PlotTimeOffse',0,...
- g. O/ U. E' I( R+ L6 u1 I, g    'PlotType','2D Colo',...2 Z5 D2 V& m+ i; |7 I* ]
    'ColorScale', 'log') %#ok8 Q7 O* F- g# V% _0 L

" Y/ k2 M1 i" h$ ?0 j& }1 G
9 Q5 Z  G1 H9 ?7 U& f( Eupdate(eyeObj, code);% i7 a5 N- [9 F+ P8 u
title('Noisy NRZ signal');xlabel('Time (sec)');ylabel('Amplitude');grid on;
, x* z. t* b$ B3 J$ O+ manalyze(eyeObj);
; a" u4 N3 ?! [4 }eyeObj.Measurements
" a, X7 r- O, V% C//////////////////////////////////////////////////////////////////////////////////////////////9 O, S) l4 @3 V& u/ b
测量结果是:2 k6 ~, f7 \4 Y" h/ ]  g. I
                     Type: 'Eye Diagram Measurements'5 r- t0 o, H0 J. ]4 z
              DisplayMode: 'Optimized for Real Signal'( W- N0 ~$ f+ ^; S  C
          EyeCrossingTime: [2.4972e-09 7.5006e-09]
& L* x9 c% P5 Z3 s7 p     EyeCrossingAmplitude: [-0.0109 -0.0117]5 X: |/ v1 ?& @0 i5 N5 c0 N% S
                 EyeDelay: 4.9989e-094 p+ _* C! B$ H. U
                 EyeLevel: [-0.8496 0.8484]
, h5 X! ^- X3 N5 \, j* z             EyeAmplitude: 1.6980
, Q. a& p- u8 H9 i                EyeHeight: 1.02878 j. W. p8 g5 V1 c1 u, T* o4 J
    EyeCrossingPercentage: 49.3703
* x$ p' {, o# G0 s! g8 }       EyeOpeningVertical: 0.6723
; k  s& ]* a: e8 y                   EyeSNR: 7.6107" p+ `2 S0 D) n1 Q* \" t/ ]5 P
            QualityFactor: 13.1948
" Y4 F4 r& t7 U, ?9 B; k$ [7 f                 EyeWidth: 4.3069e-09
" L1 X6 `) T3 g6 D+ A     EyeOpeningHorizontal: 4.8000e-09# P! h" ~6 d! j0 m
             JitterRandom: 0* L6 W6 R  I3 t3 }5 D3 L
      JitterDeterministic: 2.0000e-102 J$ \$ q% r$ k7 E
              JitterTotal: 2.0000e-10& ^, U! m0 Q: Z) P
                JitterRMS: 1.0180e-10
' X3 Z$ D4 I. u' _, e% I         JitterPeakToPeak: 2.4000e-09
7 v5 ]# p' U& k6 V7 W/ P( M/ D. L              EyeRiseTime: 2.1848e-09
8 P  j7 c4 c4 n$ ^              EyeFallTime: 2.1804e-09

604

主题

2859

帖子

1万

积分

EDA365版主(50)

Rank: 5

积分
13638
5#
 楼主| 发表于 2012-7-5 18:57 | 只看该作者
yejialu 发表于 2012-7-5 15:18 4 Z7 M1 E' ^3 K) q0 o3 H
楼主,有问题:; x6 ^9 A7 `  B' C
1,400MHz 的时钟是差分信号吗?
. s( u; j1 E* ~5 P, g* Q2,你的数据中UI才100个, 确实短了。

2 r# d' u9 n% J2 _/ S5 h例如在ansoft designer 里面
; B% [5 [/ r* J" P2 u1 {& }
2 K& m& D$ V9 H- M3 P6 I数据码元用的是 V_PRBS_JITTER
- d% i' w% n* ^7 H; C; xTR=TF=5E-11) W' a6 k) k0 Z( h& ~5 b! u2 n7 s
BITWIDTH=2.5E-9
% ~" S6 ^, ]$ z& j' X5 i8 _$ a$ |+ B1 f) A0 S/ x! f
仿真时间长度5us8 P& E7 [6 \6 `% m5 i" {8 B
- @4 ^# U" j6 O% r
导出数据的时候选择的step=100ps- n5 R3 N* g0 L7 R

7 l1 N. V, b* o' `% X5 L& \是否这里的采样频率就可以理解为 Fs=100ps?7 \, p4 W: t5 ?. \* X6 P; X
因为DQS的时钟周期长度是5ns,每个码元的时间是2.5ns,所以每个码元的采样点数为2500/100=25个, u( s. q3 G6 q! g; B% @

# q9 e# m( ]; B- g6 i" j( M$ f# ~目前这样的数据导出再导入到matlab里面无法计算

2

主题

157

帖子

999

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
999
6#
发表于 2012-7-6 09:23 | 只看该作者
导出数据的时候选择的step=100ps0 i$ B) A; ^8 n7 d# U8 ^' r! t
是否这里的采样频率就可以理解为 Fs=100ps?/ E% t* ?6 @. N& H. _6 i  \7 N+ w
step是采样的步长吧。采样频率应该是步长的倒数。
5 ^# W( Y$ X3 ?0 t  j, D
我做SI有两年了, 刚刚入门呀, 希望和大家多多谈论。

2

主题

157

帖子

999

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
999
7#
发表于 2012-7-6 09:33 | 只看该作者
估计牵涉的函数也有好几个。 这样吧,你看提示错误在哪个函数, 去查代码。
) f: H3 U' A. W5 W. E1 aError using calcEyeCrossingTime (line 67)
. ~' B& ]; i' ?9 ^. |/ o  A$ ?Error in commscope.eyemeasurements/analyze (line 85)
- c& e; Q9 @7 p& A0 QError in commscope.eyediagram/analyze (line 85)
- z4 c9 G$ P+ C. T& EError in Untitled (line 24)。
2 d( J# T' o5 ?: ~% SThe ANALYZE method cannot determine crossing times. Check measurement setup values in the MeasurementsSetup property. Also, the collected data may not be valid. See
& T; L8 c7 s. s0 j: b* Mdocumentation for description of valid eye diagrams.
! E3 h3 s2 ?9 \& H* G从这句话分析,我认为触发信号由于一个UI中的采样点过少,或者说采样频率过低。造成差分触发的P和N的交点无法判断, 也就 无法确定触发时间,无法去切割数据信号的UI,所以报错了。以上分析仅供参考。
我做SI有两年了, 刚刚入门呀, 希望和大家多多谈论。

2

主题

157

帖子

999

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
999
8#
发表于 2012-7-13 16:30 | 只看该作者
楼主人丢了吗?
我做SI有两年了, 刚刚入门呀, 希望和大家多多谈论。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-4-14 06:01 , Processed in 0.063253 second(s), 34 queries , Gzip On.

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

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

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