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);

Задайте Систему CTLE object™.

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

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

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,
      subplot(2,1,1)
      hold all
      imagesc(th2,vh,stateye)
      plot(th2,contours,'m:')
      title('Statistical Eye and Contour')
      axis('xy');
      si_eyecmap = serdes.utilities.SignalIntegrityColorMap;
      colormap(si_eyecmap)
      xlabel('[ps]')
      ylabel('[V]')
      ax = axis;
  
      subplot(2,1,2)
      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:')
      legend('Mean eye level','BER eye contour')
      title('Fast Optimization Pulse Metric')
      ylabel('[V]')
      xlabel('[ps]')
      axis(ax)

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

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

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] Соглашение OIF-CEI-04.0 о Реализации Общего электрического ввода-вывода (CEI), разделите 16.3.10.2.

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

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

Введенный в R2020a