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 ps, количество выборок на символ в 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]. Амплитуда шума оценивается в данном BER по сумме напряжений межсимвольных помех (ISI).

Ссылки

[1] IEEE 802.3bj 93 A.

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

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2020a