exponenta event banner

optPulseMetric

Метрика импульсного отклика для процедур оптимизации

Синтаксис

Описание

пример

metric = optPulseMetric(P,N,dt,B) вычисляет метрики высоты глаза, ширины глаза, зоны глаза и рабочего запаса канала (COM) на уровне целевой частоты битовых ошибок (BER) B. Функция вычисляет эти метрики из матрицы импульсной характеристики P, используя количество выборок на символ Nи равномерный интервал выборки dt.

При отсутствии глаза на целевом уровне BER B, то optPulseMetric функция увеличивает BER до тех пор, пока не будет реализована положительная высота.

Разрешение optPulseMetric функция ограничена количеством выборок на символ N.

Показатели невозврата в ноль (NRZ) для глаз оцениваются на уровне BER, где сообщается как о центре, так и о максимальной высоте глаз. Если глаз не открыт в целевом BER, BER увеличивается до тех пор, пока не будет найден измеримый контур глаза. Фактическое используемое значение BER определяется значением usedBER в выходных данных metric.

Примеры

свернуть все

Определите параметры исследования системы. Установите целевой коэффициент битовых ошибок (BER) на 1e-9, время символа на 100 пс, число выборок на символ на 16 и потери канала на 4 дБ.

targetBER = 1e-9;
SymbolTime = 100e-12;
N = 16;
dBLoss = 4;

Вычислите интервал выборки.

dt = SymbolTime/N;

Создайте модель канала с указанной потерей.

channelModel = serdes.ChannelLoss('Loss',dBLoss,'dt',dt,...
    'TargetFrequency',1/SymbolTime/2);

Определите системный object™ CTLE.

ctle = serdes.CTLE('WaveType','Impulse',...
    'SampleInterval',dt,'SymbolTime',SymbolTime,'Mode',2);

Обработка импульсной характеристики канала с помощью объекта CTLE System.

impulse = ctle(channelModel.impulse);

Преобразуйте импульсную характеристику в импульсную.

P = impulse2pulse(impulse,N,dt);

Вычислите метрику импульса быстрой оптимизации.

metric = optPulseMetric(P,N,dt,targetBER);

Получение результата optPulseMetric функционируют по всему глазу.

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

nUI = floor(size(P,1)/N);
prMatrixSort = sort(abs(reshape(P(1:N*nUI),N,[])).',1,'descend');

Затем преобразуйте BER в число наибольших выборок импульсной характеристики, чтобы получить usedBER контур. Средняя высота - это первая строка (наибольшее значение) отсортированной импульсной характеристики. Шум - это сумма следующего отсортированного импульсного отклика nBER интервалы выборки.

nBER = floor(min(abs(log(targetBER)/log(2)),nUI-1));
meanEyeHeight = prMatrixSort(1,:);
Noise =sum (prMatrixSort(2:nBER+1,:),1);

Вычислите статистические показатели глаза и глаза.

[stateye,vh,th] = pulse2stateye(P,N,2);
th2 = th*SymbolTime*1e12;
[~,~,contours,~,EHmax,~,~,~,~,EW,~,~,~,~,eyeAreas,~,COM] = ...
          serdes.utilities.calculatePAMnEye(2,targetBER, ...
          th2(1),th2(end),vh(1),vh(end),stateye);

Постройте график статистического глаза и результатов optPulseMetric функция.

figure,
ax = axis;
subplot(1,2,1)
th4 = [(0:N-1),NaN,(0:N-1)]*dt*1e12;
plot(th4,[meanEyeHeight,NaN,-meanEyeHeight]/2,'r--',...
         th4,[meanEyeHeight-Noise,NaN,Noise-meanEyeHeight]/2,'m:','linewidth',2)
legend('Mean eye level','BER eye contour')
title('Fast Optimization Pulse Metric')
ylabel('(V)')
xlabel('(ps)')
axis(ax)
      
subplot(1,2,2)
hold all
imagesc(th2,vh,stateye) 
plot(th2,contours,'m:','linewidth',2) 
title('Statistical Eye and Contour')
axis('xy');
si_eyecmap = serdes.utilities.SignalIntegrityColorMap;
colormap(si_eyecmap)
xlabel('(ps)')
ylabel('(V)')     

Figure contains 2 axes. Axes 1 with title Fast Optimization Pulse Metric contains 2 objects of type line. These objects represent Mean eye level, BER eye contour. Axes 2 with title Statistical Eye and Contour contains 3 objects of type image, line.

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

comparisonTable = table([metric.maxEyeHeight*1e3;metric.eyeWidth*1e12;...
          metric.eyeArea*1e12;metric.centerCOM; metric.usedBER], ...
          [EHmax*1e3; EW;eyeAreas; COM; targetBER],...
          'VariableNames',{'optPulseMetric','StatisticalEye'},...
          'RowNames',{'Max Eye Height (mV)','Eye Width (ps)','Eye Area [V*ps]',...
          'Center COM','BER'});
disp(comparisonTable)
                           optPulseMetric    StatisticalEye
                           ______________    ______________

    Max Eye Height (mV)        379.36            367.69    
    Eye Width (ps)              93.75            79.347    
    Eye Area [V*ps]            17.902            17.847    
    Center COM                 11.597            10.853    
    BER                         1e-09             1e-09    

Входные аргументы

свернуть все

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

Типы данных: double

Число выборок на символ, указанное как действительный положительный скаляр.

Типы данных: double

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

Типы данных: double

Целевая частота битовых ошибок (BER), заданная как действительный положительный скаляр.

Типы данных: double

Выходные аргументы

свернуть все

Метрики импульсного отклика, возвращаемые в виде структуры со следующими полями:

ОбластьОписание
maxEyeHeightМаксимальная высота внутреннего глаза в usedBER контурная кривая.
maxMeanEyeHeightСредняя высота уровня глаза в положении максимальной внутренней высоты глаза.
maxCOMРабочий запас канала (COM) в положении максимальной внутренней высоты глаза.
eyeAreaОбласть внутри usedBER контур.
eyeWidthШирина глаза usedBER контур.
centerEyeHeightВысота глаз в центре usedBER контур.
centerMeanEyeHeightСредняя высота уровня глаз в центре глаза.
centerCOMРабочий запас канала (COM) в центре глаза.
usedBERУровень частоты битовых ошибок (BER), используемый в вычислении метрики, который дает ненулевую высоту глаза.

Типы данных: struct

Подробнее

свернуть все

Рабочий запас канала

Рабочий запас канала (COM) представляет собой отношение между сигналом и шумом [1] и задается уравнением:

COM = 20log10Шум сигнала

optPulseMetric оценивает амплитуду сигнала по напряжению курсора импульсной характеристики (средняя высота уровня глаза) [2]. Амплитуда шума оценивается при данной ЧОК по сумме напряжений межсимвольных помех (ISI).

Ссылки

[1] IEEE 802.3bj 93 A.

[2] Соглашение об осуществлении общего электрического ввода-вывода (CEI) OIF-CEI-04.0, раздел 16.3.10.2.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2020a