коммуникация. 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

Для просмотра документации необходимо авторизоваться на сайте