exponenta event banner

Статистический анализ в системах Serdes

Моделирование системы SerDes включает в себя передатчик (Tx) и приемник (Rx), соединенные пассивным аналоговым каналом. Моделирование системы SerDes состоит из двух различных этапов: статистический анализ и анализ временной области. Статистический анализ (также известный как аналитический, линейный инвариантный по времени или анализ Init) основан на импульсных откликах, позволяющих быстро анализировать и адаптировать алгоритмы выравнивания. Анализ во временной области (также известный как эмпирический, побитовый или GetWave анализ) - это основанная на форме волны реализация алгоритмов выравнивания, которые могут необязательно включать нелинейные эффекты.

Эталонный поток статистического анализа отличается от анализа во временной области. Во время моделирования статистического анализа генерируется импульсная характеристика. Импульсная характеристика представляет собой совокупную характеристику аналогового выхода передатчика, канала и аналогового внешнего интерфейса приемника. Импульсная характеристика канала модифицируется статистическими функциями модели передатчика. Модифицированная импульсная характеристика выходного сигнала передатчика затем дополнительно модифицируется статистическими функциями модели приемника. Затем моделирование завершается с использованием окончательной модифицированной импульсной характеристики, которая представляет поведение обеих AMI моделей, объединенных с аналоговым каналом.

Image showing the workflow of statistical simulation

Во время моделирования во временной области цифровой сигнал стимула передается на функцию временной области модели передатчика. Этот модифицированный сигнал временной области затем свертывается с импульсной характеристикой аналогового канала, используемой при статистическом моделировании. Выходной сигнал этой свертки затем передается функции временной области модели приемника. Модифицированный выходной сигнал приемника становится моделирующим сигналом в защелке приемника.

Image showing the workflow of time-domain simulation

В SerDes Toolbox™ подсистема Init в блоках Tx и Rx использует блок Initialize Function Simulink ®. Блок инициализации функции содержит функцию MATLAB ® для обработки статистического анализа вектора импульсной характеристики. Вектор импульсной характеристики генерируется блоком аналогового канала.

Код MATLAB в подсистемах Init имитирует архитектуру симулирования временной области Simulink, инициализируя и настраивая блоки библиотеки из SerDes Toolbox, которые реализуют алгоритмы выравнивания. Затем каждая подсистема обрабатывает вектор импульсной характеристики через один или несколько системных объектов, представляющих соответствующие блоки.

Кроме того, подсистема Init может адаптировать или оптимизировать алгоритмы выравнивания, а затем применять модифицированные алгоритмы к импульсной характеристике. Выход подсистемы Init представляет собой адаптированную импульсную характеристику. Если подсистема Init адаптирует алгоритмы выравнивания, она также может выводить измененные настройки выравнивания в качестве параметров AMI. Эти модифицированные параметры выравнивания также могут быть переданы на анализ временной области в качестве оптимальной установки или для обеспечения начальной точки для более быстрой адаптации временной области.

Рабочий процесс подсистемы инициализации

В модели Simulink системы SerDes имеются две подсистемы Init, одна на стороне передатчика (блок Tx) и одна на стороне приемника (блок Rx). Во время статистического анализа импульсная характеристика аналогового канала сначала выравнивается подсистемой Init внутри блока Tx на основе свойств object™ системы. Модифицированная импульсная характеристика затем подается на вход блока Rx. Система Init внутри блока Rx дополнительно выравнивает импульсную характеристику и выдает конечный выходной сигнал.

Объекты System, соответствующие блокам Tx и Rx, изменяют импульсную характеристику в том же порядке, в каком они были приняты. Если в блоке Tx или Rx имеется несколько самоадаптирующихся объектов System, каждый объект System находит наилучшую настройку импульсной характеристики и изменяет ее перед отправкой следующему объекту System.

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

Image showing the results of Init Statistical analysis. There are four plots in the image. The top left plot shows the unequalized and equalized pulse responses. The top right plot shows the statistical eye. The bottom left plot shows the unequalized and equalized waveforms derived from the pulse response. And the bottom right plot reports the eye height, eye width, eye are, COM, and VEC metrics.

Система SerDes, использующая подсистему Init

Чтобы понять, как подсистема Init обрабатывает статистический анализ в системе SerDes, создайте систему SerDes с помощью приложения SerDes Designer. Система SerDes содержит блок FFE на стороне Tx и блоки CTLE и DFECDR на стороне Rx. Используйте параметры по умолчанию для каждого блока.

Экспортируйте систему SerDes в модель Simulink. В Simulink дважды щелкните блок Tx, чтобы открыть блок Init. Затем дважды щелкните блок Init, чтобы открыть диалоговое окно «Параметры блока». Нажмите кнопку Show Init, чтобы открыть код, относящийся к функции Init датчика.

Функция Init сначала изменяет форму вектора импульсной характеристики аналогового канала на 2-D матрицу. Первый столбец в 2-D матрице представляет импульсную характеристику аналогового канала (жертва). Последующие столбцы (если таковые имеются) представляют собой перекрестные помехи (агрессоры).

%% Impulse response formatting
% Size ImpulseOut by setting it equal to ImpulseIn
ImpulseOut = ImpulseIn;
% Reshape ImpulseIn vector into a 2D matrix using RowSize and Aggressors called LocalImpulse
LocalImpulse = zeros(RowSize,Aggressors+1);
AggressorPosition = 1;
for RowPosition = 1:RowSize:RowSize*(Aggressors+1)
    LocalImpulse(:,AggressorPosition) = ImpulseIn(RowPosition:RowSize-1+RowPosition)';
    AggressorPosition = AggressorPosition+1;
end

Затем функция Init инициализирует системные объекты, представляющие блоки на стороне Tx, и настраивает параметры моделирования и AMI, а также свойства блоков. В этой системе SerDes имеется только один блок на стороне передачи, FFE.

%% Instantiate and setup system objects
% Create instance of serdes.FFE for FFE
FFEInit = serdes.FFE('WaveType', 'Impulse');
% Setup simulation parameters
FFEInit.SymbolTime = SymbolTime;
FFEInit.SampleInterval = SampleInterval;
% Setup FFE In and InOut AMI parameters
FFEInit.Mode = FFEParameter.Mode;
FFEInit.TapWeights = FFEParameter.TapWeights;
% Setup FFE block properties
FFEInit.Normalize = true;

Импульсная характеристика канала затем обрабатывается объектом System на стороне Tx.

%% Impulse response processing via system objects
% Return impulse response for serdes.FFE instance
LocalImpulse = FFEInit(LocalImpulse);

Модифицированную импульсную характеристику в матричной форме 2-D обратно в вектор импульсной характеристики и направляют на сторону Rx для дальнейшего выравнивания.

%% Impulse response reformating
% Reshape LocalImpulse matrix into a vector using RowSize and Aggressors
ImpulseOut(1:RowSize*(Aggressors+1)) = LocalImpulse;

Аналогично, если посмотреть на код Rx Init, можно увидеть, что функция Rx Init сначала изменяет форму вывода функции Tx Init в матрицу 2-D.

Затем функция Init инициализирует системные объекты, представляющие блоки на стороне приема, и настраивает параметры моделирования и AMI, а также свойства блоков. В этом случае имеется два блока на стороне приема, CTLE и DFECDR.

%% Instantiate and setup system objects
% Create instance of serdes.CTLE for CTLE
CTLEInit = serdes.CTLE('WaveType', 'Impulse');
% Setup simulation parameters
CTLEInit.SymbolTime = SymbolTime;
CTLEInit.SampleInterval = SampleInterval;
% Setup CTLE In and InOut AMI parameters
CTLEInit.Mode = CTLEParameter.Mode;
CTLEInit.ConfigSelect = CTLEParameter.ConfigSelect;
% Setup CTLE block properties
CTLEInit.Specification = 'DC Gain and Peaking Gain';
CTLEInit.DCGain = [0 -1 -2 -3 -4 -5 -6 -7 -8];
CTLEInit.ACGain = 0;
CTLEInit.PeakingGain = [0 1 2 3 4 5 6 7 8];
CTLEInit.PeakingFrequency = 5000000000;
CTLEInit.GPZ = [0 -23771428571 -10492857142 -13092857142;-1 -17603571428 -7914982142 -13344642857;...
-2 -17935714285 -6845464285 -13596428571;-3 -15321428571 -5574642857 -13848214285;...
-4 -15600000000 -4960100000 -14100000000;-5 -15878571428 -4435821428 -14351785714;...
-6 -16157142857 -3981285714 -14603571428;-7 -16435714285 -3581089285 -14855357142;...
-8 -16714285714 -3227142857 -15107142857];
% Create instance of serdes.DFECDR for DFECDR
DFECDRInit = serdes.DFECDR('WaveType', 'Impulse');
% Setup simulation parameters
DFECDRInit.SymbolTime = SymbolTime;
DFECDRInit.SampleInterval = SampleInterval;
DFECDRInit.Modulation = Modulation;
% Setup DFECDR In and InOut AMI parameters
DFECDRInit.ReferenceOffset = DFECDRParameter.ReferenceOffset;
DFECDRInit.PhaseOffset = DFECDRParameter.PhaseOffset;
DFECDRInit.Mode = DFECDRParameter.Mode;
DFECDRInit.TapWeights = DFECDRParameter.TapWeights;
% Setup DFECDR block properties
DFECDRInit.EqualizationGain = 9.6e-05;
DFECDRInit.EqualizationStep = 1e-06;
DFECDRInit.MinimumTap = -1;
DFECDRInit.MaximumTap = 1;
DFECDRInit.Count = 16;
DFECDRInit.ClockStep = 0.0078;
DFECDRInit.Sensitivity = 0;

Импульсная характеристика, которая была ранее изменена объектами System на стороне Tx, затем дополнительно изменяется объектами System на стороне Rx.

%% Impulse response processing via system objects
% Return impulse response and any Out or InOut AMI parameters for serdes.CTLE instance
[LocalImpulse, CTLEConfigSelect] = CTLEInit(LocalImpulse);
% Return impulse response and any Out or InOut AMI parameters for serdes.DFECDR instance
[LocalImpulse, DFECDRTapWeights, DFECDRPhase, ~, ~] = DFECDRInit(LocalImpulse);

Окончательная выровненная импульсная характеристика в 2-D матричной форме преобразуется обратно в вектор импульсной характеристики.

Каждая функция Init также содержит раздел Custom user code area, в котором можно настроить собственный код.

%% BEGIN: Custom user code area (retained when 'Refresh Init' button is pressed)

% END: Custom user code area (retained when 'Refresh Init' button is pressed)

Дополнительные сведения о том, как можно использовать область пользовательского кода Custom, см. в разделах Настройка Building Blocks Datapath и Внедрение Custom CTLE в SerDes Toolbox PassThrough Block.

Создание кода функции Init (Refresh Init) может поддерживать один или несколько системных объектов при использовании пользовательского блока PassThrough. Если присутствует несколько системных объектов, они должны быть последовательными. Первый входной порт должен иметь форму сигнала в качестве входного сигнала. Если имеется какой-либо выходной сигнал, он должен быть первым выходным портом.

PAM4 Пороговые значения

Если Вы используете Комплект инструментов SerDes datapath блок библиотеки, пороги PAM4 в функции Init сохраняются для Вас автоматически. При использовании пользовательской конфигурации с использованием PassThrough при генерации кода функции Init обнаруживаются блоки записи хранилища данных, которые ссылаются на PAM4 пороговые сигналы (PAM4_UpperThreshold, PAM4_CenterThreshold, PAM4_LowerThreshold) и определяет связности. Поддерживаются следующие соединения:

  • Прямое подключение к объекту System

  • Подключение к объекту System через селектор шины

  • Подключение к объекту системы через блок усиления

  • Прямое подключение к блоку константы

Если генерация кода Init не может найти поддерживаемую топологию, она применяет пороговые значения PAM4 по умолчанию.

Связанные темы