optPulseMetric

Импульсная метрика ответа для стандартных программ оптимизации

Описание

пример

metric = optPulseMetric(P,dt,N,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,
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)')     

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

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

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

свернуть все

Результат optPulseMetric функция. Результат хранится в структуре с полями, содержащими эту информацию:

Поле Описание
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