comm.EyeDiagram

Отобразите глазковую диаграмму для сигналов временной области

Описание

Система глазковой диаграммы object™ отображает несколько трассировок модулируемого сигнала произвести глазковую диаграмму. Можно использовать объект показать характеристики модуляции сигнала, такие как эффекты импульсного формирования или искажений канала. Глазковая диаграмма может измерить характеристики сигнала и построить горизонтальные и вертикальные кривые ванны, когда дрожание и шум выполняют модель [1] двойного Дирака.

Отобразить глазковую диаграмму для входного сигнала:

  1. Создайте comm.EyeDiagram объект и набор свойства объекта.

  2. Вызовите step отобразить глазковую диаграмму для сигнала.

Примечание

В качестве альтернативы вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системным объектом, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.

Конструкция

ed = comm.EyeDiagram возвращает объект глазковой диаграммы, ed, использование свойств по умолчанию.

ed = comm.EyeDiagram(Name,Value) задает дополнительные свойства с помощью Name,Value пары. Незаданные свойства имеют значения по умолчанию.

Пример:

ed = comm.EyeDiagram('DisplayMode','2D color histogram', ...
                          'OversamplingMethod','Input interpolation');

Свойства

развернуть все

Имя отображено на окне глазковой диаграммы, заданном как вектор символов. Настраиваемый.

Частота дискретизации входного сигнала в Гц, заданном как положительный действительный скаляр.

Количество выборок на символ, заданный как положительный целочисленный скаляр. Настраиваемый.

Количество выборок, чтобы не использовать прежде, чем построить первую точку, заданную как неотрицательный целочисленный скаляр. Чтобы избежать непорядочного поведения, задайте смещение, чтобы быть меньше продукта SamplesPerSymbol и SamplePerTrace.

Количество символов на трассировку, заданную как положительный целочисленный скаляр. Чтобы получить измерения глаза и визуализировать кривые ванны, используйте значение по умолчанию 2. Настраиваемый.

Количество трассировок, чтобы отобразиться, заданный как положительный целочисленный скаляр. Это свойство доступно когда DisplayMode свойство задано как 'Line plot'. Настраиваемый.

Режим отображения глазковой диаграммы, заданный как 'Line plot' или '2D color histogram'. Настраиваемый.

  • Задайте 'Line plot' накладывать трассировки путем строения одного графика для каждого последнего TracesToDisplay трассировки.

  • Задайте '2D color histogram' отобразить цветовой градиент, который показывает, как часто вход совпадает с различным временем и амплитудными значениями.

Включите измерения глазковой диаграммы, заданные как логический скаляр. Настраиваемый.

Включите визуализацию кривых ванны, заданных как 'None', 'Horizontal', 'Vertical', или 'Both'. Это свойство доступно когда EnableMeasurements true. Настраиваемый.

Наложение гистограммы, заданное как 'None', 'Jitter', или 'Noise'.

  • Чтобы наложить горизонтальную гистограмму на глазковой диаграмме, установите это свойство на 'Jitter'.

  • Чтобы наложить вертикальную гистограмму на глазковой диаграмме, установите это свойство на 'Noise'.

Это свойство доступно когда DisplayMode '2D color histogram' и EnableMeasurements true. Настраиваемый.

Амплитудный порог уровня в V, заданный как скаляр. Это свойство разделяет различные сигнальные области для горизонтали (дрожание) гистограммы и доступно когда EnableMeasurements true. Это свойство является настраиваемым, но сброс гистограмм дрожания, когда свойство изменяется.

Для сигналов невозврата к нулю (NRZ), набор DecisionBoundary к 0. Для сигналов возврата к нулю (RZ), набор DecisionBoundary к половине максимальной амплитуды.

Область значений времени для вычисления уровней глаз, заданных как двухэлементный вектор. Эти значения выражаются как процент длительности символа. Это свойство доступно когда EnableMeasurements true. Настраиваемый.

Амплитудные уровни переходов взлета и падения, заданных как двухэлементный вектор. Эти значения выражаются как процент амплитуды глаза. Это свойство доступно когда EnableMeasurements true. Это свойство является настраиваемым, но пересекающиеся гистограммы порогового сброса взлета и падения, когда это изменяется.

Амплитудный допуск горизонтальных пересечений в V, заданный как скаляр. Увеличьте гистерезис, чтобы предоставить больше допуска побочным пересечениям из-за шума. Это свойство доступно когда EnableMeasurements true. Это свойство является настраиваемым, но дрожание и сброс гистограмм взлета и падения, когда свойство изменяется.

BER используется в измерениях глаза, заданных как неотрицательный скаляр от 0 до 0,5. Значение используется, чтобы сделать измерения случайного дрожания, общего дрожания, горизонтальных открытий глаза и вертикальных открытий глаза. Это свойство доступно когда EnableMeasurements true. Настраиваемый.

Значения BER раньше вычисляли открытия кривых ванны, заданных как вектор, элементы которого лежат в диапазоне от 0 до 0,5. Горизонтальные и вертикальные открытия глаза вычисляются для каждого из значений, заданных этим свойством. Это свойство доступно когда EnableMeasurements true и ShowBathtub 'Both', 'Horizontal', или 'Vertical'. Настраиваемый.

Длительность исходных данных, отброшенных от измерений в секундах, заданных как неотрицательный скаляр. Это свойство доступно когда EnableMeasurements true.

Сверхдискретизация метода, заданного как 'None', 'Input interpolation', или 'Histogram interpolation'. Это свойство доступно когда DisplayMode '2D color histogram'. Настраиваемый.

Чтобы построить глазковые диаграммы как можно быстрее, установите OversamplingMethod к 'None'. Недостаток к не сверхдискретизации - то, что графики выглядят пикселизированными, когда количество выборок на трассировку мало.

Чтобы создать более сглаженные, менее пикселизированные графики с помощью небольшого количества выборок на трассировку, установите OversamplingMethod to'Input interpolation' или 'Histogram interpolation'. Введите интерполяцию, более быстрый метод интерполяции и приводит к хорошим результатам, когда отношение сигнал-шум (SNR) высоко. С более низким ОСШ не рекомендуется этот метод сверхдискретизации, потому что он вводит смещение центрам областей значений гистограммы. Интерполяция гистограммы не с такой скоростью, как другие методы, но она обеспечивает хорошие результаты, даже когда ОСШ является низким.

Цветовая шкала гистограммы, заданной как 'Linear' или 'Logarithmic'. Измените это свойство, если определенные области гистограммы включают диспропорциональное число точек. Используйте 'Logarithmic' опция для глазковых диаграмм, имеющих резкий peaks, где сигнал повторяющимся образом совпадает с определенным временем и амплитудными значениями. Это свойство доступно когда DisplayMode '2D color histogram'. Настраиваемый.

Цветное исчезновение, заданное как логический скаляр. Чтобы исчезнуть точки в отображении как, интервал времени после того, как они будут сначала построены увеличения, установил это свойство на true. Эта анимация напоминает осциллограф. Это свойство доступно когда DisplayMode  'Line plot'. Настраиваемый.

Покажите мнимый компонент сигнала, заданный как логический скаляр. Чтобы просмотреть мнимый компонент или квадратурный компонент входного сигнала, установите это свойство на true. Это свойство доступно когда EnableMeasurements false. Настраиваемый.

Пределы оси Y глазковой диаграммы в V, заданный как двухэлементный вектор. Первый элемент соответствует ymin и второму к ymax. Второй элемент должен быть больше первого. Настраиваемый.

Включите отображение сетки на глазковой диаграмме, заданной как логический скаляр. Чтобы отобразить сетку на глазковой диаграмме, установите это свойство на true. Настраиваемый.

Определите объем положения окна в пикселях, заданных как четырехэлементный вектор формы [left bottom width height]. Настраиваемый.

Методы

скрытьсяСкройте окно scope
horizontalBathtubГоризонтальная кривая ванны
jitterHistogramГистограмма дрожания
измеренияИзмерьте параметры глазковой диаграммы
noiseHistogramШумовая гистограмма
сбросСбросьте состояния объекта глазковой диаграммы
showСделайте окно scope видимым
шагПостройте глазковую диаграмму для входного сигнала
verticalBathtubВертикальная кривая ванны
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

развернуть все

Задайте частоту дискретизации и количество выходных выборок на параметры символа.

fs = 1000;
sps = 4;

Создайте фильтр передачи и объекты глазковой диаграммы.

txfilter = comm.RaisedCosineTransmitFilter('OutputSamplesPerSymbol',sps);
ed = comm.EyeDiagram('SampleRate',fs*sps,'SamplesPerSymbol',sps);

Сгенерируйте случайные символы и примените модуляцию QPSK. Затем отфильтруйте модулируемый сигнал и отобразите глазковую диаграмму.

data = randi([0 3],1000,1);
modSig = pskmod(data,4,pi/4);

txSig = txfilter(modSig);
ed(txSig)

Покажите эффекты различных методов интерполяции для 2D гистограмм для различных условий отношения сигнал-шум (SNR).

Создайте модулятор GMSK и Системные объекты глазковой диаграммы. Укажите, что отображения глазковой диаграммы с помощью 2D цветной гистограммы и строят действительные и мнимые сигналы.

gmsk = comm.GMSKModulator('PulseLength',3);
ed = comm.EyeDiagram('DisplayMode','2D color histogram', ...
    'ShowImaginaryEye',true,'YLimits',[-2 2]);

Сгенерируйте данные, содержащие положительные и отрицательные значения и примените модуляцию GMSK.

d = 2*randi([0 1],1e4,1)-1;
x = gmsk(d);
%Pass the signal through an AWGN channel having a 25 dB SNR and with a fixed seed for repeatable results.
randStream = RandStream('mt19937ar','Seed',5489);
y = awgn(x,25,'measured',randStream);

Отобразите глазковую диаграмму.

ed(y)

Для небольшого количества выборок на трассировку (16), отсутствие интерполяции вызывает кусочно-непрерывное поведение.

Чтобы компенсировать кусочно-непрерывное поведение, установите OversamplingMethod свойство к 'Input interpolation'. Сбросьте объект и отобразите глазковую диаграмму.

ed.OversamplingMethod = 'Input interpolation';
reset(ed)
ed(y)

Интерполяция сглаживает глазковую диаграмму.

Теперь передайте модулируемый GMSK сигнал через канал AWGN, имеющий ОСШ на 10 дБ. Отобразите глазковую диаграмму.

y = awgn(x,10,'measured',randStream);
reset(ed)
ed(y)

Вертикальное чередование является результатом входной интерполяции, которая ограничила точность в условиях низкого ОСШ.

Установите OversamplingMethod свойство к 'Histogram interpolation'. Постройте глазковую диаграмму.

ed.OversamplingMethod = 'Histogram interpolation';
reset(ed)
ed(y)

График глазковой диаграммы теперь представляет точно, потому что метод интерполяции гистограммы работает на все значения ОСШ. Этот метод заканчивается в увеличенное время выполнения.

Визуализируйте глазковую диаграмму для входного сигнала двойного Дирака. Вычислите измерения глаза и визуализируйте горизонтальные и вертикальные кривые ванны. Наложите горизонталь (дрожание) гистограмма.

Задайте частоту дискретизации, выборки на символ и количество трассировок.

fs = 10000;
sps = 200;
numTraces = 2000;

Создайте объект глазковой диаграммы, имеющий эти свойства:

  • 2D цветное отображение гистограммы

  • Логарифмическая цветовая шкала

  • Наложение гистограммы дрожания

  • Горизонтальные и вертикальные кривые ванны

  • Пределы оси Y [-1.3 1.3]

  • Увеличенная высота окна

ed = comm.EyeDiagram('SampleRate',fs,'SamplesPerSymbol',sps,'SampleOffset',sps/2, ...
    'DisplayMode','2D color histogram','ColorScale','Logarithmic', ...
    'EnableMeasurements',true,'OverlayHistogram','Jitter', ...
    'ShowBathtub','Both','YLimits', [-1.3 1.3]);
ed.Position = ed.Position + [0 0 0 120];

Сгенерируйте форму волны, имеющую двойного Дирака и случайное дрожание. Задайте времена взлета и падения на 3 мс.

src = commsrc.pattern('SamplesPerSymbol',sps,'RiseTime',3e-3,'FallTime', 3e-3);
src.Jitter = commsrc.combinedjitter('RandomJitter','on','DiracJitter','on', ...
    'DiracDelta',[-10e-04 10e-04],'RandomStd',5e-4);

Сгенерируйте два символа для каждой трассировки.

symbols = src.generate(numTraces*2);

Обработайте данные в пакетах 40e3 символы, добавьте шум и отобразите глазковую диаграмму.

for idx = 1:(numTraces-1)/100
    x = symbols(1+(idx-1)*100*2*sps:idx*100*2*sps); % Read 40,000 symbols
    y = awgn(x,30);                                 % Add noise
    ed(y);                                          % Display eye diagram
end

Отобразите глазковую диаграмму для формы волны, имеющей двойного Дирака и случайное дрожание. Постройте дрожание и шумовые гистограммы.

Задайте частоту дискретизации, выборки на символ и количество параметров трассировок.

fs = 1000;
sps = 200;
numTraces = 1000;

Создайте объект глазковой диаграммы.

ed = comm.EyeDiagram('SampleRate',fs,'SamplesPerSymbol',sps,'SampleOffset',sps/2, ...
    'DisplayMode','2D color histogram','ColorScale','Logarithmic', ...
    'EnableMeasurements',true,'YLimits',[-1.2 1.2]);

Сгенерируйте форму волны, имеющую двойного Дирака и случайное дрожание. Задайте времена взлета и падения на 3 мс.

src = commsrc.pattern('SamplesPerSymbol',sps,'RiseTime',3e-3,'FallTime', 3e-3);
src.Jitter = commsrc.combinedjitter('RandomJitter','on','DiracJitter','on', ...
    'DiracDelta',[-10e-04 10e-04],'RandomStd',5e-4);

Сгенерируйте два символа для каждой трассировки.

x = src.generate(numTraces*2);

Передайте сигнал через канал AWGN с фиксированным seed для повторяемых результатов.

randStream = RandStream('mt19937ar','Seed',5489);
y = awgn(x,30,'measured',randStream);
ed(y)

Вычислите счет гистограммы дрожания для каждого интервала при помощи jitterHistogram метод. Постройте гистограмму.

jbins = jitterHistogram(ed);
plot(jbins)

Вычислите шумовой счет гистограммы для каждого интервала при помощи noiseHistogram метод. Постройте гистограмму.

nbins = noiseHistogram(ed);
plot(nbins)

Отобразите глазковую диаграмму для формы волны, имеющей двойного Дирака и случайное дрожание. Сгенерируйте и постройте горизонтальные и вертикальные кривые ванны.

Задайте частоту дискретизации, выборки на символ и количество параметров трассировок.

fs = 1000;
sps = 200;
numTraces = 1000;

Создайте объект глазковой диаграммы.

ed = comm.EyeDiagram('SampleRate',fs,'SamplesPerSymbol',sps,'SampleOffset',sps/2, ...
    'DisplayMode','2D color histogram','ColorScale','Logarithmic', ...
    'EnableMeasurements',true,'ShowBathtub','Both','YLimits',[-1.2 1.2]);

Сгенерируйте форму волны, имеющую двойного Дирака и случайное дрожание. Задайте времена взлета и падения на 3 мс.

src = commsrc.pattern('SamplesPerSymbol',sps,'RiseTime',3e-3,'FallTime', 3e-3);
src.Jitter = commsrc.combinedjitter('RandomJitter','on','DiracJitter','on', ...
    'DiracDelta',[-5e-04 5e-04],'RandomStd',2e-4);

Сгенерируйте два символа для каждой трассировки.

x = src.generate(numTraces*2);

Передайте сигнал через канал AWGN с фиксированным seed для повторяемых результатов.

randStream = RandStream('mt19937ar','Seed',5489);
y = awgn(x,30,'measured',randStream);

Отобразите глазковую диаграмму.

ed(y)

Сгенерируйте горизонтальные данные о ванне для глазковой диаграммы. Постройте кривую.

hb = horizontalBathtub(ed)
semilogy([hb.LeftThreshold],[hb.BER],'b',[hb.RightThreshold],[hb.BER],'b')
grid
hb = 

  1x13 struct array with fields:

    BER
    LeftThreshold
    RightThreshold

Сгенерируйте вертикальные данные о ванне для глазковой диаграммы. Постройте кривую.

vb = verticalBathtub(ed)
semilogx([vb.BER],[vb.LowerThreshold],'b',[vb.BER],[vb.UpperThreshold],'b')
grid
vb = 

  1x13 struct array with fields:

    BER
    UpperThreshold
    LowerThreshold

Создайте объединенный объект дрожания, имеющий случайное дрожание с 2e-4 стандартным отклонением.

jtr = commsrc.combinedjitter('RandomJitter','on','RandomStd',2e-4);

Сгенерируйте сигнал NRZ, имеющий случайное дрожание и времена взлета и падения на 3 мс.

genNRZ = commsrc.pattern('Jitter',jtr,'RiseTime',3e-3,'FallTime',3e-3);
x = generate(genNRZ,2000);

Передайте сигнал через канал AWGN с фиксированным seed для повторяемых результатов.

randStream = RandStream('mt19937ar','Seed',5489);
y = awgn(x,30,'measured',randStream);

Создайте объект глазковой диаграммы. Включите измерения.

ed = comm.EyeDiagram('SamplesPerSymbol',genNRZ.SamplesPerSymbol, ...
    'SampleRate',genNRZ.SamplingFrequency,'SampleOffset',genNRZ.SamplesPerSymbol/2, ...
    'EnableMeasurements',true,'DisplayMode','2D color histogram', ...
    'OversamplingMethod','Input interpolation','ColorScale','Logarithmic','YLimits',[-1.2 1.2]);

Чтобы вычислить времена взлета и падения, определите пороги взлета и падения из уровня глаз и амплитудных измерений глаза. Постройте глазковую диаграмму, чтобы вычислить эти параметры.

ed(y)

Передайте сигнал через объект глазковой диаграммы снова, чтобы измерить времена взлета и падения.

ed(y)
hide(ed)

Отобразите данные при помощи measurements метод.

eyestats = measurements(ed);
riseTime = eyestats.RiseTime
fallTime = eyestats.FallTime
riseTime =

    0.0030


fallTime =

    0.0030

Измеренные значения совпадают со спецификацией на 3 мс.

Измерения

развернуть все

Чтобы открыть панель измерений, нажмите на кнопку Eye Measurements или выберите Tools> Measurements> Eye Measurements в меню панели инструментов.

Примечание

  • Для амплитудных измерений по крайней мере один интервал на вертикальную гистограмму должен достигнуть 10 хитов, прежде чем измерения будут проведены, гарантируя более высокую точность.

  • Для измерений времени по крайней мере один интервал на горизонтальную гистограмму должен достигнуть 10 хитов, прежде чем измерения будут проведены.

  • Когда глаз, пересекающий измерение времени, находится в пределах [-0.5/Fs, 0), интервал секунд, измерение времени переносится в конец глазковой диаграммы, т.е. измерение переносится 2*Ts секунды (где Ts является временем символа). Для комплексного случая сигнала анализировать метод выдает предупреждение, если пересекающееся измерение времени синфазной ветви переносится, в то время как та из квадратурной ветви не делает (или наоборот). Чтобы избежать переноса времени или предупреждения, добавьте задержку длительности полусимвола с текущим значением в MeasurementDelay свойство объекта глазковой диаграммы. Эта дополнительная задержка меняет местоположение глаза в аппроксимированном центре осциллографа.

Уровень глаз является амплитудным уровнем, используемым, чтобы представлять биты данных. Для отображенного сигнала NRZ уровни составляют-1 В и +1 В. Уровни глаз вычисляются путем усреднения 2D гистограммы в контурах уровня глаз.

Амплитуда глаза является расстоянием в V между средним значением двух уровней глаз.

Высота глаза является расстоянием между μ – 3σ верхнего уровня глаз и μ + 3σ более низкого уровня глаз. μ является средним значением уровня глаз, и σ является стандартным отклонением.

Вертикальное открытие является расстоянием между двумя точками, которые соответствуют порогу BER. Например, для порога BER 10–12, эти точки соответствуют 7σ расстояние от каждого уровня глаз.

ОСШ глаза является отношением различия в уровне глаз для различия вертикальных стандартных отклонений, соответствующих каждому уровню глаз:

ОСШ=L1L0σ1σ0,

где L 1 и L 0 представляет средние значения верхних и более низких уровней глаз и σ1, и σ0 представляют свои стандартные отклонения.

Фактор Q вычисляется с помощью той же формулы в качестве ОСШ Глаза. Однако стандартные отклонения вертикальных гистограмм заменяются вычисленными с анализом двойного Дирака.

Пересекающиеся уровни являются амплитудными уровнями, на которых происходят пересечения глаза.

Пересекающиеся времена являются временами, в которые происходят пересечения. Времена вычисляются как средние значения горизонтали (дрожание) гистограммы.

Задержка глаза является средней точкой между двумя пересекающимися разами.

Ширина глаза является горизонтальным расстоянием между μ + 3σ левого времени пересечения и μ – 3σ правильного времени пересечения. μ является средним значением гистограммы дрожания, и σ является стандартным отклонением.

Горизонтальное открытие является расстоянием между двумя точками, которые соответствуют порогу BER. Например, для BER 10–12, эти две точки соответствуют 7σ расстояние с каждого раза пересечения.

Время нарастания является средним временем между низкими и высокими порогами, заданными в глазковой диаграмме. Пороги по умолчанию составляют 10% и 90% амплитуды глаза.

Время спада является средним временем между высокими и низкими порогами, заданными в глазковой диаграмме. Пороги по умолчанию составляют 10% и 90% амплитуды глаза.

Детерминированное дрожание (DJ) является расстоянием между двумя peaks гистограмм двойного Дирака. Функция плотности вероятности (PDF) DJ состоит из двух функций дельты.

Случайное дрожание (RJ) является Гауссовым неограниченным компонентом дрожания. Случайный компонент дрожания моделируется как нулевая средняя Гауссова случайная переменная с заданным стандартным отклонением, σ. Случайное дрожание вычисляется как:

RJ=(QL+QR)σ,

где

Q=2erfc1(2BERρ).

BER является заданным порогом BER. ρ является амплитудой левой и правой функции Дирака, которая определяется из количества интервалов гистограмм дрожания.

Общее дрожание (TJ) является суммой детерминированного и случайного дрожания, такого что TJ = DJ + RJ.

Общее дрожание PDF является сверткой DJ PDF и RJ PDF.

Дрожание RMS является стандартным отклонением дрожания, вычисленного в горизонтали (дрожание) гистограмма на контуре решения.

Дрожание от пика к пику является максимальным горизонтальным расстоянием между левыми и правыми ненулевыми значениями в горизонтальной гистограмме каждого раза пересечения.

Программируемая настройка

Можно программно сконфигурировать свойства scope с коллбэками или в рамках скриптов при помощи объекта настройки осциллографа, как описывают в Блоках Осциллографа Управления Программно (Simulink).

Ссылки

[1] Стивенс, Выкуп. "Анализ дрожания: Модель Двойного Дирака, RJ/DJ и Q-шкала". Отчет Agilent Technologies. Декабрь 2004.

Расширенные возможности

Смотрите также

Объекты

Блоки

Функции

Введенный в R2017b