You are on page 1of 6

Eye pattern

In telecommunication, an eye pattern, also known as an eye diagram, is


an oscilloscope display in which a digital data signal from a receiver is
repetitively sampled and applied to the vertical input, while the data rate is
used to trigger the horizontal sweep. It is so called because, for several types
of coding, the pattern looks like a series of eyes between a pair of rails. It is
an experimental tool for the evaluation of the combined effects of channel
noise and intersymbol interference on the performance of a baseband pulsetransmission system. It is the synchronised superposition of all possible
realisations of the signal of interest viewed within a particular signalling
interval.
Several system performance measures can be derived by analyzing the
display. If the signals are too long, too short, poorly synchronized with the
system clock, too high, too low, too noisy, or too slow to change, or have too
much undershoot or overshoot, this can be observed from the eye diagram.
An open eye pattern corresponds to minimal signal distortion. Distortion of
the signal waveform due to intersymbol interference and noise appears as
closure of the eye pattern.
There are many measurements that can be obtained from an Eye Diagram.
Amplitude Measurements

Eye Amplitude

Eye Crossing Amplitude

Eye Crossing Percentage

Eye Height

Eye Level

Eye SNR

Quality Factor

Vertical Eye Opening

Time Measurements

Deterministic Jitter

Eye Crossing Time

Eye Delay

Eye Fall Time

Eye Rise Time

Eye Width

Horizontal Eye Opening

Peak-to-Peak Jitter

Random Jitter

RMS Jitter

CRC Jitter

Total Jitter

Measuring Received Performance


A : time interval over which

the waveform can be

sampled

B : margin over noise


C : distortion of zero
D : slope : sensitivity to

crossings
timing error

E : Maximum distortion
t* : optimum sampling instant measured with respect to the time
origin.
10 points in the final

Matlab code:
clear
clc
N = 100; % number of symbols
am = 2*(rand(1,N)>0.5)-1 + 1i*(2*(rand(1,N)>0.5)-1); % generating random
binary sequence
fs = 10; % sampling frequency in Hz
% defining the sinc filter
sincNum = sin(pi*[-fs:1/fs:fs]); % numerator of the sinc function
sincDen = (pi*[-fs:1/fs:fs]); % denominator of the sinc function
sincDenZero = find(abs(sincDen) < 10^-10);
sincOp = sincNum./sincDen;
sincOp(sincDenZero) = 1; % sin(pix/(pix) =1 for x =0
% raised cosine filter
alpha = 0.5;
cosNum = cos(alpha*pi*[-fs:1/fs:fs]);
cosDen = (1-(2*alpha*[-fs:1/fs:fs]).^2)
cosDenZero = find(abs(cosDen)<10^-10)
cosOp = cosNum./cosDen;
cosOp(cosDenZero) = pi/4;
gt_alpha5 = sincOp.*cosOp;
alpha = 1;
cosNum = cos(alpha*pi*[-fs:1/fs:fs]);
cosDen = (1-(2*alpha*[-fs:1/fs:fs]).^2);
cosDenZero = find(abs(cosDen)<10^-10);
cosOp = cosNum./cosDen;
cosOp(cosDenZero) = pi/4;

gt_alpha1 = sincOp.*cosOp;
% upsampling the transmit sequence
amUpSampled = [am;zeros(fs-1,length(am))];
amU = amUpSampled(:).';
% filtered sequence
st_alpha5 = conv(amU,gt_alpha5);
st_alpha1 = conv(amU,gt_alpha1);
% taking only the first 10000 samples
st_alpha5 = st_alpha5([1:1000]);
st_alpha1 = st_alpha1([1:1000]);
st_alpha5_reshape = reshape(st_alpha5,fs*2,N*fs/20).';
st_alpha1_reshape = reshape(st_alpha1,fs*2,N*fs/20).';
close all
figure;
stairs(am)
title(' signal')
xlabel('time')
ylabel('amplitude')
figure;
plot([0:1/fs:1.99],real(st_alpha5_reshape).','b');
title('eye diagram with alpha=0.5');
xlabel('time')
ylabel('amplitude')
axis([0 2 -1.5 1.5])
grid on
figure;
plot([0:1/fs:1.99],real(st_alpha1_reshape).','b');
title('eye diagram with alpha=1')
xlabel('time')
ylabel('amplitude')
axis([0 2 -1.5 1.5 ])
grid on

output:

signal

1
0.8
0.6

amplitude

0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1

10

20

30

40

50
time

60

70

80

90

100

eye diagram with alpha=0.5

1.5

amplitude

0.5

-0.5

-1

-1.5

0.2

0.4

0.6

0.8

1
time

1.2

1.4

1.6

1.8

eye diagram with alpha=1

1.5

amplitude

0.5

-0.5

-1

-1.5

0.2

0.4

0.6

0.8

1
time

1.2

1.4

1.6

1.8

You might also like